Revive Old Posts – Auto Post to Social Media - Version 7.0.8

Version Description

Download this release

Release Info

Developer codeinwp
Plugin Icon 128x128 Revive Old Posts – Auto Post to Social Media
Version 7.0.8
Comparing to
See all releases

Code changes from version 6.9.6.3 to 7.0.8

CHANGELOG.md ADDED
@@ -0,0 +1,180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ### 7.0.6 - 28/05/2015
4
+
5
+ Changes:
6
+
7
+
8
+ * * removed redundant code
9
+ * * added compatibility for wordpress 4.2.2
10
+ * * fixed compatibility with pro version
11
+
12
+
13
+ ### 7.0.4 - 25/05/2015
14
+
15
+ Changes:
16
+
17
+
18
+ * * fixed issue with tweet length
19
+ * fixed issue with facebook hashtag
20
+ * * added bussines version
21
+
22
+
23
+ ### 7.0.4 - 16/04/2015
24
+
25
+ Changes:
26
+
27
+
28
+ * * fixed bug with the new facebook api changes.
29
+ * changed pro banner
30
+ * Merge branch 'development' of https://github.com/Codeinwp/tweet-old-post into development
31
+
32
+
33
+ ### 7.0.3 - 03/04/2015
34
+
35
+ Changes:
36
+
37
+
38
+ * * fixed problem with media_id
39
+ * * fixed bug with logs reporting in system info where there is no log available.
40
+ * Update readme.txt
41
+ * Update readme.txt
42
+
43
+
44
+ ### 7.0.2 - 26/03/2015
45
+
46
+ Changes:
47
+
48
+
49
+ * * Removed twitter update_with_media call.
50
+ * Fixed activation error notices when WP_DEBUG was enabled
51
+ * Merge remote-tracking branch 'origin/development' into development
52
+
53
+
54
+ ### 7.0.1 - 06/03/2015
55
+
56
+ Changes:
57
+
58
+
59
+ * http bug
60
+ * Final version of tweet old post
61
+ * final vers
62
+ * Added Top 5.7 version
63
+ * added strlower
64
+ * Tweets now are posted immediately, fixed scheduling and added debug messages
65
+ * latest stable version 6.2
66
+ * added exclude posts back
67
+ * latest major fixes
68
+ * fixed interrupted posting
69
+ * Added settings link, fixed tweet cutting and added cron debug messages
70
+
71
+ Added settings link, fixed tweet cutting and added cron debug messages
72
+ * latest top fixes [stable version ]
73
+ * almost added fb
74
+ * stable version with linkedin + facebook
75
+ * custom icon, final fixes
76
+ * fixed fb instructions + small css things
77
+ * Set up localization and translation
78
+ * 6.8.1 with multi-language + cpt support
79
+ * fix post issue
80
+ * various small fixes to encoding
81
+ * various fixes
82
+
83
+ * fix for coma on the exclude post page
84
+ * fixed the shortner problem that was not adding the analytics.
85
+ * fixed the cron issue
86
+ * increased notification time check by *5
87
+
88
+ increased notification time check by *5
89
+ * * Added post format per network
90
+ * Rearranged the options
91
+ * Merge remote-tracking branch 'origin/development' into development
92
+ * * Fixes for no account post sharing issue
93
+ * Added immediately share after start
94
+ * redesign and on/off button
95
+ * * Improved tabs graphic
96
+ * Added remote cron check
97
+ * * added pro badge for linkedin post format
98
+ * fixed compatibility issue with older versions
99
+ * * added pro badge for linkedin post format
100
+ * fixed compatibility issue with older versions
101
+ * * fixed the relative path issue
102
+ * Update readme.txt
103
+ * * fixed issue with notices
104
+ * solved some cron compatibilty problems
105
+ * * fixed double posting issue for cron
106
+ * * fixed backwards compatibility issue
107
+ * Removed useless spaces in post format
108
+ * fixed custom field from url issue
109
+ * * fixed problem with oauth time
110
+ * fixed problem with cron time
111
+ * * fixed problem with oauth time
112
+ * fixed problem with cron time
113
+ * Merge remote-tracking branch 'origin/development' into development
114
+ * Update core.php
115
+ * Update tweet-old-post.php
116
+ * Update view.php
117
+ * Update OAuth.php
118
+ * Update tweet-old-post.php
119
+ * * added more complex log system
120
+ * improved cron schedule
121
+ * Merge remote-tracking branch 'origin/development' into development
122
+ * * fixed sample tweet
123
+ * added support for pro version
124
+ * * added clock feature
125
+ * * fix for old cron
126
+ * fix sample tweet image
127
+ * * removed console clock
128
+ * Update readme.txt
129
+ * Fixed https request
130
+ * Update tweet-old-post.php
131
+ * Update core.php
132
+ * Update style.css
133
+ * Update tweet-old-post.php
134
+ * * fixed typo bugs.
135
+ * Update readme.txt
136
+ * * fixed excluded post bug
137
+ * fixed cron time issue
138
+ * added more log types messages
139
+ * improved system info
140
+ * Merge remote-tracking branch 'origin/development' into development
141
+ * * update version
142
+ * * added sib banner
143
+ * * updated changelog
144
+ * * fixed bug with share more than once.
145
+ * Update tweet-old-post.php
146
+ * Update view.php
147
+ * * Fixed issue cron stop
148
+ * Fixed issue for excluded post
149
+ * Added exclude posts from custom post types.
150
+ * Merge remote-tracking branch 'origin/development' into development
151
+ * * Fixed issue cron stop
152
+ * Fixed issue for excluded post
153
+ * Added exclude posts from custom post types.
154
+ * updated version
155
+ * * fixed sample post issue
156
+ * * fixed tweet custom field url
157
+ * * changed version
158
+ * fixed minutes typo
159
+ * * rollback generate tweet
160
+ * Merge remote-tracking branch 'origin/development' into development
161
+ * * fixed image compatibility
162
+ * * fixed pro compatibility
163
+ * Update readme.txt
164
+ * buttons added: Google Plus, XING , Stumbleupon , Tumblr
165
+ * strip html response.
166
+ * * rewrite the tweet generation
167
+ * added usefull filtes and hooks
168
+ * * Fixed issue with duplicate posting
169
+ * Added Xing and Tumbr Networks
170
+ * Fixed issue with random posts on large databases.
171
+ * * Fixed issue with duplicate posting
172
+ * Added Xing and Tumbr Networks
173
+ * Fixed issue with random posts on large databases.
174
+ * * Fixed no link issue
175
+ * Added new info to System Log
176
+ * * FIxed compatibilty issues with old pro version
177
+ * * added chacter count when media is active
178
+ * * fixed link position in tweets.
179
+ * * removed only pro badge on custom schedule secundar tabs
180
+ * * fixed problem with strange chars in tweets.
assets/rop-custom-icon-font.svg CHANGED
@@ -1,11 +1,11 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg xmlns="http://www.w3.org/2000/svg">
4
- <metadata>Generated by Fontastic.me</metadata>
5
- <defs>
6
- <font id="untitled-font-2" horiz-adv-x="512">
7
- <font-face font-family="untitled-font-2" units-per-em="512" ascent="480" descent="-32"/>
8
- <missing-glyph horiz-adv-x="512" />
9
-
10
- <glyph unicode="&#97;" d="M264 478c-132 0-239-107-239-239 0-132 107-239 239-239 131 0 239 107 239 239 0 132-108 239-239 239z m0-72c94 0 171-68 171-170l-61 0-43-37-109 114-68-77-62 0c0 102 77 170 172 170z m0-343c-87 0-158 70-170 147l72 0 57 66 107-114 55 48 49 0c-13-77-84-147-170-147z"/>
11
- </font></defs></svg>
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>Generated by Fontastic.me</metadata>
5
+ <defs>
6
+ <font id="untitled-font-2" horiz-adv-x="512">
7
+ <font-face font-family="untitled-font-2" units-per-em="512" ascent="480" descent="-32"/>
8
+ <missing-glyph horiz-adv-x="512" />
9
+
10
+ <glyph unicode="&#97;" d="M264 478c-132 0-239-107-239-239 0-132 107-239 239-239 131 0 239 107 239 239 0 132-108 239-239 239z m0-72c94 0 171-68 171-170l-61 0-43-37-109 114-68-77-62 0c0 102 77 170 172 170z m0-343c-87 0-158 70-170 147l72 0 57 66 107-114 55 48 49 0c-13-77-84-147-170-147z"/>
11
+ </font></defs></svg>
css/custom_dashboard_icon.css CHANGED
@@ -1,5 +1,5 @@
1
- @font-face { font-family: "rop-custom-icon-font";src:url("../assets/rop-custom-icon-font.eot");src:url("../assets/rop-custom-icon-font.eot?#iefix") format("embedded-opentype"), url("../assets/rop-custom-icon-font.woff") format("woff"), url("../assets/rop-custom-icon-font.ttf") format("truetype"), url("../assets/rop-custom-icon-font.svg#rop-custom-icon-font") format("svg");font-weight: normal;font-style: normal;}
2
- [data-icon]:before { font-family: "rop-custom-icon-font" !important;content: attr(data-icon);font-style: normal !important;font-weight: normal !important;font-variant: normal !important;text-transform: none !important;speak: none;line-height: 1;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}
3
- [class^="rop-icon-"]:before, [class*=" rop-icon-"]:before { font-family: "rop-custom-icon-font" !important;font-style: normal !important;font-weight: normal !important;font-variant: normal !important;text-transform: none !important;speak: none;line-height: 1;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}
4
- .rop-icon-dashboard:before { content: "a"; }
5
- #adminmenu #toplevel_page_TweetOldPost .wp-menu-image:before { font-family: "rop-custom-icon-font" !important; content: "a" !important; }
1
+ @font-face { font-family: "rop-custom-icon-font";src:url("../assets/rop-custom-icon-font.eot");src:url("../assets/rop-custom-icon-font.eot?#iefix") format("embedded-opentype"), url("../assets/rop-custom-icon-font.woff") format("woff"), url("../assets/rop-custom-icon-font.ttf") format("truetype"), url("../assets/rop-custom-icon-font.svg#rop-custom-icon-font") format("svg");font-weight: normal;font-style: normal;}
2
+ [data-icon]:before { font-family: "rop-custom-icon-font" !important;content: attr(data-icon);font-style: normal !important;font-weight: normal !important;font-variant: normal !important;text-transform: none !important;speak: none;line-height: 1;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}
3
+ [class^="rop-icon-"]:before, [class*=" rop-icon-"]:before { font-family: "rop-custom-icon-font" !important;font-style: normal !important;font-weight: normal !important;font-variant: normal !important;text-transform: none !important;speak: none;line-height: 1;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}
4
+ .rop-icon-dashboard:before { content: "a"; }
5
+ #adminmenu #toplevel_page_TweetOldPost .wp-menu-image:before { font-family: "rop-custom-icon-font" !important; content: "a" !important; }
css/style.css CHANGED
@@ -1,668 +1,832 @@
1
- /* Clearfix */
2
- .clearfix:after { content: "\00A0"; display: block; clear: both; visibility: hidden; line-height: 0; height: 0;}
3
- .clearfix{ display: inline-block;}
4
- html[xmlns] .clearfix { display: block;}
5
- * html .clearfix{ height: 1%;}
6
- .clearfix { display: block; }
7
- strong {
8
- font-weight: 900;
9
- }
10
- /* Padding Fix */
11
- * { -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; }
12
-
13
- /* Main Wrapper */
14
- .cwp_top_wrapper { width: 1080px;}
15
-
16
- /* Tweet Old Post Status */
17
- .cwp_top_wrapper .cwp_top_status { }
18
- .cwp_top_wrapper .cwp_top_status p { margin: 0; padding: 10px; text-align: center; font-family: "Roboto", sans-serif; color:#fff; }
19
- .cwp_top_wrapper .cwp_top_status p.active { background: rgb(185, 243, 203);box-shadow: inset 0px 0px 6px rgba(8, 61, 8, 0.1);border-top: 1px solid rgba(97, 209, 101, 0.4);color: #218618;font-weight: bold;text-shadow: 0px 1px 0px rgba(255,255,255,1.3);border-bottom: 1px solid #fff; }
20
- .cwp_top_wrapper .cwp_top_status p.inactive { background: rgb(240, 240, 240);border-top: 1px solid rgba(255,255,255,0.4);color: #494949;font-weight: bold;text-shadow: 0px 1px 0px rgba(255,255,255,1.3);border-bottom: 1px solid #E2E2E2; }
21
- .cwp_top_wrapper a {
22
- text-decoration: none!important;
23
- }
24
- /* Ajax Animation */
25
- .cwp_top_wrapper .ajaxAnimation { background: url("../img/loader.gif") no-repeat center center, rgba(255,255,255,0.8); position: absolute;top: 0; left: 0; right: 0; bottom: 0; display: none;}
26
-
27
- /* Twitter Login Button */
28
- .cwp_top_container button#twitter-login { background:none; border: none; background:url("../img/twitter_blue_icon.png") no-repeat left 10px center, #fff; padding: 10px 15px 10px 35px; font-weight: bold; font-family: "HelveticaNeue", "Helvetica Neue", Arial, sans-serif; font-size: 1em; line-height: 1; color:#696969; border-radius: 10px; border: 1px solid #f7f7f7; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out; box-shadow: inset 0px 0px 3px rgba(0,0,0,0.5); }
29
- .cwp_top_container button#twitter-login:hover { cursor: pointer; background:url("../img/twitter_blue_icon.png") no-repeat left 10px center, #f7f7f7; box-shadow: inset 0px 0px 3px rgba(0,0,0,0.5); border: 1px solid #f7f7f7; text-shadow: 0px 1px 0px rgba(255,255,255,1);}
30
- .cwp_top_container button#twitter-login.another-account { border:1px solid #ddd; box-shadow: none; border-radius: 3px; background-image: none; display: block; padding: 0; height: 35px; width: 35px; font-weight: 100; }
31
- .cwp_top_container button#twitter-login.another-account:hover { opacity: 0.8; }
32
-
33
- /* Facebook Login Button */
34
- .cwp_top_container button#facebook-login { background:none; border: none; background:url("../img/icon_facebook.gif") no-repeat left 10px center, #fff; padding: 10px 15px 10px 35px; font-weight: bold; font-family: "HelveticaNeue", "Helvetica Neue", Arial, sans-serif; font-size: 1em; line-height: 1; color:#696969; border-radius: 10px; border: 1px solid #f7f7f7; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out; box-shadow: inset 0px 0px 3px rgba(0,0,0,0.5); }
35
- .cwp_top_container button#facebook-login:hover { cursor: pointer; background:url("../img/icon_facebook.gif") no-repeat left 10px center, #f7f7f7; box-shadow: inset 0px 0px 3px rgba(0,0,0,0.5); border: 1px solid #f7f7f7; text-shadow: 0px 1px 0px rgba(255,255,255,1);}
36
- .cwp_top_container button#facebook-login.another-account { border:1px solid #ddd; box-shadow: none; border-radius: 3px; background-image: none; display: block; padding: 0; height: 35px; width: 35px; font-weight: 100; }
37
- .cwp_top_container button#facebook-login.another-account:hover { opacity: 0.8; }
38
-
39
- /* Linkedin Login Button */
40
- .cwp_top_container button#linkedin-login { background:none; border: none; background:url("../img/linkedIn.png") no-repeat left 10px center, #fff; padding: 10px 15px 10px 35px; font-weight: bold; font-family: "HelveticaNeue", "Helvetica Neue", Arial, sans-serif; font-size: 1em; line-height: 1; color:#696969; border-radius: 10px; border: 1px solid #f7f7f7; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out; box-shadow: inset 0px 0px 3px rgba(0,0,0,0.5); }
41
- .cwp_top_container button#linkedin-login:hover { cursor: pointer; background:url("../img/linkedIn.png") no-repeat left 10px center, #f7f7f7; box-shadow: inset 0px 0px 3px rgba(0,0,0,0.5); border: 1px solid #f7f7f7; text-shadow: 0px 1px 0px rgba(255,255,255,1);}
42
- .cwp_top_container button#linkedin-login.another-account { border:1px solid #ddd; box-shadow: none; border-radius: 3px; background-image: none; display: block; padding: 0; height: 35px; width: 35px; font-weight: 100; }
43
- .cwp_top_container button#linkedin-login.another-account:hover { opacity: 0.8; }
44
-
45
- /* Logged In User */
46
- .cwp_top_container .user_details { height: 35px; border: 1px solid #fff; float: left; overflow: hidden; background:#fff; border: 1px solid #ddd; border-radius: 5px; margin-right: 10px;}
47
- .cwp_top_container .user_details .user_avatar { float: left; width: 35px;}
48
- .cwp_top_container .user_details .user_avatar img { width: 100%; }
49
- .cwp_top_container .user_details .user_name { float: left; font-family: Roboto, "Helvetica Neue", HelveticaNeue, sans-serif; font-weight: 400; font-size:14px; line-height: 2.4; padding: 0px 10px; color:#5C5C5C; }
50
- .cwp_top_container .user_details .remove_user { display:block; width: 35px; height: 35px; float: left; border-left: 1px solid #ddd; }
51
- .cwp_top_container .user_details .remove_user .logout_user { display: block; width: 100%; height: 100%; background:url("../img/remove_account.png") no-repeat center center, #fff; }
52
- .cwp_top_container .user_details .remove_user .logout_user:hover { background:url("../img/remove_account_hover.png") no-repeat center center, #fff; }
53
-
54
- /* Announcement */
55
- .cwp_top_wrapper .announcement { width: 100%; background: url("../img/reviewgine_announcement.png") no-repeat left -10px top -45px, #f16848; margin-top: 20px;}
56
- .cwp_top_wrapper .announcement h2 { width:85%; float: left; font-family: "Helvetica Neue", HelveticaNeue, sans-serif; color:#fff; font-weight: 100; font-size: 17px; line-height: 1; padding-left: 180px; }
57
- .cwp_top_wrapper .announcement h2 b { font-weight: bold; }
58
- .cwp_top_wrapper .announcement .show-me { float: right; background:#fff; border-radius: 5px; font-family: "Helvetica Neue", HelveticaNeue, sans-serif; color:#5c5c5c; text-decoration: none; text-transform: uppercase;padding: 7px 15px; margin-top: 9px; margin-right: 20px; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out; line-height: 1;}
59
- .cwp_top_wrapper .announcement .show-me:hover { cursor: pointer; opacity: 0.8; }
60
-
61
- /* Header Styles */
62
- .cwp_top_wrapper #cwp_top_header { background:#fff; border-top: 5px solid #52aae2; border-bottom: 1px solid #d4d4d4; margin-top: 10px; padding: 20px 10px;}
63
- .cwp_top_wrapper #cwp_top_header .top_logo { margin: 0; padding: 0; float: left; font-family: "Open Sans", sans-serif; font-weight: bold; color:#3c3c3c; padding-left: 55px; background:url("../img/logo.png") no-repeat left center; padding: 20px; padding-left: 60px; padding-right: 0; letter-spacing: -1px; margin-left: 14px; }
64
- .cwp_top_wrapper #cwp_top_header .slogan { float: left; margin: 0; padding: 0; font-size: 17px; color:#858585; font-family: "Open Sans", sans-serif; line-height: 3.5; margin-left: 10px; }
65
- .cwp_top_wrapper #cwp_top_header .slogan a { color:#858585; font-weight: 600; text-decoration: none; font-style: italic; -webkit-transition: all 0.250s ease-in-out; -moz-transition: all 0.250s ease-in-out; -o-transition: all 0.250s ease-in-out; transition: all 0.250s ease-in-out; }
66
- .cwp_top_wrapper #cwp_top_header .slogan a:hover { color:#52aae2; }
67
-
68
- /* Header Actions */
69
- .cwp_top_wrapper #cwp_top_header .cwp_top_actions { float: right; margin-right: 6px; }
70
- .cwp_top_wrapper #cwp_top_header .tweet-about-it { background:#52c4ef; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; text-shadow: 0px 1px 0px #33a4ce; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
71
- .cwp_top_wrapper #cwp_top_header .tweet-about-it span { background:url("../img/twitter_icon.png") no-repeat center center, #3eaed8; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
72
- .cwp_top_wrapper #cwp_top_header .leave-a-review { background:#f9866b; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; text-shadow: 0px 1px 0px #e46b3d; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
73
- .cwp_top_wrapper #cwp_top_header .leave-a-review span { background:url("../img/review_icon.png") no-repeat center center, #f16848; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
74
-
75
- /* Container and form styles */
76
- .cwp_top_wrapper .cwp_top_container { background:#f9f9f9; border-bottom: 5px solid #52aae2; position: relative;}
77
- .cwp_top_wrapper .cwp_top_container form { width: 100%; float: left; /* border-right: 1px solid #d4d4d4;*/ }
78
- .cwp_top_wrapper .option { width: 100%; margin: 15px 0px; }
79
- .cwp_top_wrapper .option .left { float: left; width: 45%; }
80
- .cwp_top_wrapper .option .left .select-all { float: right; background: none; border: none; background:#ddd; border-radius: 3px; padding: 5px 10px; }
81
- .cwp_top_wrapper .option .left .select-all:hover { cursor: pointer; }
82
- .cwp_top_wrapper .option label { font-family: "Helvetica Neue", HelveticaNeue, sans-serif; font-size: 15px; color:#525252; }
83
- .cwp_top_wrapper .option input[type=text], .cwp_top_wrapper .cwp_top_container form .option select { height: 35px; border-radius: 3px; border: 1px solid #d7d7d7; box-shadow: none; font-family: "Roboto", sans-serif; }
84
- .cwp_top_wrapper .option input[type=text] { width: 90%; }
85
- .cwp_top_wrapper .option .left * { display: block; text-align: right; }
86
- .cwp_top_wrapper .option .right { float: left; width: 55%; padding-left: 20px; }
87
- .cwp_top_wrapper .option .categories-list { padding-top: 4px; }
88
- .cwp_top_wrapper .option .categories-list .cwp-cat { float: left; width: 50%; margin-bottom: 5px; }
89
- .cwp_top_wrapper .option .categories-list .cwp-cat label { font-size: 13px; }
90
-
91
- .cwp_top_wrapper .option .post-type-list { padding-top: 4px; }
92
- .cwp_top_wrapper .option .post-type-list .cwp-cat { float: left; width: 50%; margin-bottom: 5px; }
93
- .cwp_top_wrapper .option .post-type-list .cwp-cat label { font-size: 13px; }
94
-
95
- /* Sidebar Styles */
96
- .cwp_top_wrapper .cwp_top_container .sidebar { float: left; width: 27%; padding: 10px}
97
- .cwp_top_wrapper .cwp_top_container .sidebar ul { display: block; margin: 0; padding: 0; }
98
- .cwp_top_wrapper .cwp_top_container .sidebar ul li { display: block; }
99
- .cwp_top_wrapper .cwp_top_container .sidebar ul li.upgrade a { display: block; background:url("../img/upgrade-top.png") no-repeat top left; width: 270px; height: 101px; text-indent: -9999px; }
100
- .cwp_top_wrapper .cwp_top_container .sidebar ul li.readythemes a { display: block; background:url("../img/top_banner_themeisle.png") no-repeat left; width: 270px; height: 101px; text-indent: -9999px; }
101
- .cwp_top_wrapper .cwp_top_container .sidebar ul li.sib a { display: block; background:url("../img/sib.png") no-repeat left; width: 270px; height: 225px; text-indent: -9999px; }
102
- .cwp_top_wrapper .cwp_top_container .sidebar ul li.affiliate-readythemes a { display: block; background:url("../img/affiliate.png") no-repeat left; width: 270px; height: 101px; text-indent: -9999px; }
103
-
104
- /* Footer Styles */
105
- .cwp_top_wrapper .cwp_top_container .cwp_top_footer { width: 100%; background:#fff; padding: 20px 10px; border-top: 1px solid #d4d4d4;}
106
- .cwp_top_wrapper .update-options { background:#707070; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
107
- .cwp_top_wrapper .update-options span { background:url("../img/update_icon.png") no-repeat center center, #464646; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
108
-
109
- /* Tweet Now Button Style */
110
- .cwp_top_wrapper .cwp_top_container .cwp_top_footer .tweet-now { background:#52c4ef; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
111
- .cwp_top_wrapper .cwp_top_container .cwp_top_footer .tweet-now span { background:url("../img/twitter_icon.png") no-repeat center center, #3eaed8; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
112
- .top_close_popup {margin-left:37%;float:left;}
113
- /* Stop Tweet Button Styles */
114
- .cwp_top_wrapper .cwp_top_container .cwp_top_footer .stop-tweet-old-post { background:#f9866b; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
115
- .cwp_top_wrapper .cwp_top_container .cwp_top_footer .stop-tweet-old-post span { background:url("../img/twitter_icon.png") no-repeat center center, #f16848; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
116
-
117
- /* Tweet Now Button Style */
118
- .cwp_top_wrapper .cwp_top_container .cwp_top_footer .see-sample-tweet { background:#52c4ef; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
119
- .cwp_top_wrapper .cwp_top_container .cwp_top_footer .see-sample-tweet span { background:url("../img/twitter_icon.png") no-repeat center center, #3eaed8; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
120
-
121
- /* Reset Settings Button Styles */
122
- .cwp_top_wrapper .cwp_top_container .cwp_top_footer .reset-settings { background:#f9866b; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
123
- .cwp_top_wrapper .cwp_top_container .cwp_top_footer .reset-settings span { background:url("../img/reset_icon.png") no-repeat center center, #f16848; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
124
- .cwp_top_wrapper a { margin: 0 !important; padding: 0; margin-right: 10px !important; margin-bottom:10px!important;}
125
-
126
- /* Sample Tweet Preview Modal */
127
- .cwp_top_wrapper .cwp_lkapp_preview,.cwp_top_wrapper .cwp_user_pages { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background:rgba(0,0,0,0.2); display: none; }
128
-
129
- .cwp_top_wrapper .cwp_fbapp_preview,.cwp_top_wrapper .cwp_user_pages { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background:rgba(0,0,0,0.2); display: none; }
130
- .cwp_top_wrapper .cwp_sample_tweet_preview_inner h2 { text-align: center; font-weight: bold;color:#7d7d7d; font-family: "HelveticaNeue", "Helvetica Neue", sans-serif; }
131
- .cwp_top_wrapper .cwp_sample_tweet_preview_inner { background:#fff; width: 80%; margin: 0 auto; margin-top: 109px; padding: 20px; border-radius: 5px;box-shadow: 0px 5px 5px rgba(0,0,0,0.1); }
132
- .cwp_top_wrapper .cwp_sample_tweet_preview_inner .sample_tweet { min-height:60px; display: block; width: 100%; border: 1px solid #e8e8e8; padding: 10px; border-radius: 5px; font-family: "Helvetica Neue", HelveticaNeue, sans-serif; font-size: 14px;}
133
- .cwp_top_wrapper .cwp_sample_tweet_preview_inner .sample_tweet a { text-decoration: none; }
134
- .cwp_top_wrapper .cwp_sample_tweet_preview_inner button { display: block; margin-top: 17px; background:#52c4ef; border: none; border-radius: 3px; padding: 5px 10px; margin-left:10px;margin-right:10px;color:#fff; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; }
135
- .cwp_top_wrapper .cwp_sample_tweet_preview_inner button:hover { cursor: pointer; }
136
-
137
- .cwp_top_wrapper .cwp_sample_tweet_preview { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background:rgba(0,0,0,0.2); display: none; }
138
-
139
-
140
- .cwp_user_pages .cwp_preview_page {
141
- width: 175px;
142
- margin-right: 25px;
143
- float: left;
144
- height: 75px;
145
- margin-bottom: 25px;
146
- border-bottom: 1px solid #F1F1F1;
147
- }
148
-
149
- .cwp_user_pages_inner {
150
- height: 340px;
151
- }
152
- .cwp_user_pages .page_name {
153
- font-weight: bold;
154
- font-size: 15px;
155
- padding-bottom: 10px;
156
- }
157
- .cwp_user_pages .page_avatar {
158
- width: 50px;
159
- height: 50px;
160
- margin-right: 5px;
161
- float: left;
162
- }
163
- .cwp_user_pages .page_category {
164
-
165
- color:grey;
166
- }
167
- .top_preview {
168
- width: 40px;
169
- height: 40px;
170
- padding: 5px;
171
- float: left;}
172
- .cwp_top_wrapper_full {
173
-
174
- width: 90%;
175
- float: left;
176
- border-right: none;
177
- margin: 5px 15px 2px;
178
- }
179
-
180
- .cwp_top_wrapper_full .cwp_top_container form {
181
-
182
- width: 99%;
183
- float: left;
184
- border-right: none;
185
- }
186
-
187
-
188
- .top_left_instructions {
189
- float: left;
190
- width: 50%;
191
- }
192
- .top_auth_form {
193
- width:50%;
194
- float: left;
195
- }
196
- .top_sample_auth{
197
- height: 370px;
198
- }
199
- .top_auth_inner {
200
- height: 500px;
201
- }
202
- .top_authorize{
203
- margin-left:50px;
204
- }
205
- @media all and (max-width:1280px) {
206
- .cwp_top_wrapper {
207
- width:100%;
208
- }
209
- .cwp_top_wrapper .cwp_top_container form {
210
- width:100%;
211
- border-right: none;
212
- }
213
-
214
-
215
- }
216
- @media all and (max-width:970px) {
217
- .slogan {
218
- display: none;
219
- }
220
- }
221
-
222
- /* Tabbed Nav */
223
- #cwp_top_tabs ul#tabs_menu {
224
- margin: 0;
225
- margin-bottom: -1px;
226
- }
227
-
228
- #cwp_top_tabs ul#tabs_menu li {
229
- display: inline-block;
230
- font-weight: bold;
231
- font-family: "Roboto",sans-serif;
232
- font-size: 13px;
233
- padding: 15px;
234
- line-height: 1;
235
- border: 1px solid #EAEAEA;
236
- border-bottom: none;
237
- margin: 0;
238
- }
239
-
240
- #cwp_top_tabs ul#tabs_menu li.active,
241
- #cwp_top_tabs ul#tabs_menu li:hover {
242
- background: none repeat scroll 0% 0% #FFF;
243
- cursor: pointer;
244
- border: 1px solid #EAEAEA;
245
- border-bottom: none;
246
- }
247
-
248
- #cwp_top_tabs div.tab {
249
- display: none;
250
- width: 100%;
251
- float: left;
252
- background: #FFF;
253
- border: 1px solid #EAEAEA;
254
- border-bottom: 0;
255
- }
256
- .tab .cwp_top_tabs_vertical .tab-vertical {
257
- width:80%;
258
- float:left;
259
-
260
- }
261
- #cwp_top_tabs div.tab.active {
262
- display: block;
263
- }
264
- .cwp_top_tabs_vertical {
265
- display:block;
266
- width:100%;
267
-
268
- }
269
- .cwp_top_tabs_vertical .tab-vertical.active{
270
- display:block;
271
-
272
- }
273
- .cwp_top_tabs_vertical .tab-vertical{
274
- width:100%;
275
- display:none;
276
-
277
- }
278
- .tab.active .cwp_top_tabs_vertical form {
279
- width:80% ;
280
- float:left;
281
-
282
-
283
- }
284
- .cwp_top_tabs_vertical .cwp_top_tabs_btns li:hover:not(.not-tab),
285
- .cwp_top_tabs_vertical .cwp_top_tabs_btns li.active:not(.not-tab){
286
- background:#fff;
287
-
288
- }
289
- .cwp_top_tabs_vertical .cwp_top_tabs_btns li.not-tab{
290
- cursor: default;
291
-
292
- }
293
- .cwp_top_tabs_vertical .cwp_top_tabs_btns li{
294
- cursor: pointer;
295
- display: inline-block;
296
- font-weight: bold;
297
- font-family: "Roboto",sans-serif;
298
- font-size: 13px;
299
- padding: 15px;
300
- line-height: 1;
301
- width:100%;
302
- margin: 0;
303
- text-transform: capitalize;
304
-
305
- }
306
- .cwp_top_tabs_vertical .cwp_top_tabs_btns{
307
- width:20%;
308
- padding-top:30px;
309
- float:left;
310
- margin-top:0px;
311
- padding-bottom:20px;
312
- background: none repeat scroll 0% 0% #F0F0F0;
313
- cursor: pointer;
314
- border-right: 1px solid #ddd;
315
- border-bottom: 1px solid #ddd;
316
- border-left: 1px solid #ddd;
317
- }
318
- .cwp-top-premium-placeholder{
319
- text-align:center;
320
- padding-top:20px;
321
- font-size:20px;
322
- text-align: center;
323
- }
324
- .cwp-according-item {
325
- margin:2%;
326
-
327
- }
328
- .cwp-according-item.active .cwp-according-body{
329
- display:block;
330
-
331
- }
332
- .cwp-according-item .cwp-according-body{
333
- display:none;
334
- }
335
- .cwp-according-item .cwp-according-body {
336
- background:#f0f0f0;
337
- width:96%;
338
- padding:2%;
339
-
340
- }
341
- .cwp-according-item .cwp-according-header:hover,
342
- .cwp-according-item.active .cwp-according-header{
343
-
344
- background:#444;
345
- color:#f0f0f0;
346
-
347
- }
348
- .cwp-according-item.active .cwp-according-header:before,
349
- .cwp-according-item:hover .cwp-according-header:before{
350
- border-color:#fff;
351
- }
352
- .cwp-according-item.active .cwp-according-header span:before,
353
- .cwp-according-item:hover .cwp-according-header span:before {
354
-
355
- content:"";
356
- position:absolute;
357
- background:#fff;
358
- top: 18px;
359
- left: 50px;
360
- border-radius:50%;
361
- width:10px;
362
- height:10px;
363
- }
364
- .cwp-according-item .cwp-according-header:before{
365
- content:"";
366
- position:absolute;
367
- border:4px solid #444;
368
- top: 9px;
369
- left: 41px;
370
- border-radius:50%;
371
- width:20px;
372
- height:20px;
373
-
374
- }
375
- .cwp-according-item .cwp-according-header{
376
- width:96%;
377
- position:relative;
378
- display:block;
379
- background:#f0f0f0;
380
- text-align: center;
381
- color:#444;
382
- font-size: 20px;
383
- cursor:pointer;
384
- padding: 14px;
385
-
386
- }
387
- .cwp-schedule-days li:first-child{
388
- border-bottom-left-radius: 4px;
389
- border-top-left-radius: 4px;
390
- }
391
- .cwp-schedule-days li:last-child{
392
- border-bottom-right-radius: 8px;
393
- border-top-right-radius: 8px;
394
-
395
- }
396
- .cwp-schedule-days li:hover {
397
- color: #f0f0f0;
398
- background: rgb(247,245,246); /* Old browsers */
399
- background: -moz-linear-gradient(top, rgba(247,245,246,1) 0%, rgba(192,192,192,1) 100%); /* FF3.6+ */
400
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(247,245,246,1)), color-stop(100%,rgba(192,192,192,1))); /* Chrome,Safari4+ */
401
- background: -webkit-linear-gradient(top, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%); /* Chrome10+,Safari5.1+ */
402
- background: -o-linear-gradient(top, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%); /* Opera 11.10+ */
403
- background: -ms-linear-gradient(top, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%); /* IE10+ */
404
- background: linear-gradient(to bottom, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%); /* W3C */
405
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f7f5f6', endColorstr='#c0c0c0',GradientType=0 ); /* IE6-9 */
406
- }
407
- .cwp-schedule-days li.active {
408
- text-decoration: none;
409
- color: #f0f0f0;
410
- box-shadow: none;
411
- background: rgb(119,119,119); /* Old browsers */
412
- background: -moz-linear-gradient(top, rgba(119,119,119,1) 0%, rgba(68,68,68,1) 100%); /* FF3.6+ */
413
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(119,119,119,1)), color-stop(100%,rgba(68,68,68,1))); /* Chrome,Safari4+ */
414
- background: -webkit-linear-gradient(top, rgba(119,119,119,1) 0%,rgba(68,68,68,1) 100%); /* Chrome10+,Safari5.1+ */
415
- background: -o-linear-gradient(top, rgba(119,119,119,1) 0%,rgba(68,68,68,1) 100%); /* Opera 11.10+ */
416
- background: -ms-linear-gradient(top, rgba(119,119,119,1) 0%,rgba(68,68,68,1) 100%); /* IE10+ */
417
- background: linear-gradient(to bottom, rgba(119,119,119,1) 0%,rgba(68,68,68,1) 100%); /* W3C */
418
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#777777', endColorstr='#444444',GradientType=0 ); /* IE6-9 */
419
- border-top: 1px solid #666;
420
- border-bottom: 1px solid #333;
421
- border-right: 1px solid #444;
422
- border-left: 1px solid #777;
423
- }
424
- .cwp-schedule-days li{
425
- overflow: hidden;
426
- display: inline-block;
427
- float: left;
428
- border-top: 1px solid #666;
429
- border-bottom: 1px solid #333;
430
- border-right: 1px solid #ABABAB;
431
- border-left: 1px solid #D8D8D8;
432
- color: #444;
433
- cursor: pointer;
434
- width: 14.2%;
435
- text-align: center;
436
- padding-top: 10px;
437
- padding-bottom: 10px;
438
- background: rgb(247,245,246);
439
- background: -moz-linear-gradient(top, rgba(247,245,246,1) 0%, rgba(192,192,192,1) 100%);
440
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(247,245,246,1)), color-stop(100%,rgba(192,192,192,1)));
441
- background: -webkit-linear-gradient(top, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%);
442
- background: -o-linear-gradient(top, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%);
443
- background: -ms-linear-gradient(top, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%);
444
- background: linear-gradient(to bottom, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%);
445
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f7f5f6', endColorstr='#c0c0c0',GradientType=0 );
446
- color: #E8E8E8;
447
- text-shadow: 1px 1px 1px #7C7C7C;
448
- box-shadow: inset 5px 0px 10px #D5D5D5;
449
- border-top: 1px solid #CBCBCB;
450
- border-bottom: 1px solid #ABABAB;
451
-
452
- }
453
- .cwp-pro-string{
454
-
455
- margin: auto;
456
- display: block;
457
- text-align: center;
458
- }
459
- .cwp-posts-time-info{
460
- text-align: center;
461
- margin-top: -9px;
462
- font-size: 14px;
463
- }
464
- a.cwp-primary:hover,
465
- a.cwp-primary{
466
-
467
- background: #52c4ef;
468
- color: #fff;
469
- }
470
- a.cwp-btn{
471
- text-decoration: none;
472
- border-radius: 3px;
473
- display: block;
474
- height: 30px;
475
- border-radius: 3px;
476
- font-family: "Open Sans", sans-serif;
477
- text-transform: uppercase;
478
- font-weight: bold;
479
- line-height: 2.3;
480
- padding-right: 10px;
481
- padding-left: 10px;
482
- display: inline-block;
483
- margin-top: 14px;
484
- margin-right: 5px;
485
-
486
- }
487
- .cwp-top-times-choice .cwp-top-times-close:hover{
488
- color:#000;
489
-
490
- }
491
- #cwp-top-container-form{
492
- width:73%;
493
- float:left;
494
-
495
- }
496
- .cwp-top-times-choice .cwp-top-times-close{
497
-
498
- margin-left: 20px;
499
- font-size: 15px;
500
- font-weight: bold;
501
- cursor: pointer;
502
- }
503
- .cwp-top-times-choice select{
504
- width:100px;
505
-
506
- }
507
-
508
- .cwp-hidden{
509
- display:none;
510
-
511
- }
512
-
513
- .inactive.cwp-error-label {
514
- border-bottom: none !important;
515
- }
516
-
517
- .pro-version {
518
- position: relative;
519
- }
520
- .pro-version:before {
521
- content: "";
522
- position: absolute;
523
- width: 45px;
524
- height: 45px;
525
- top: 0;
526
- background-repeat: no-repeat;
527
- right: 0;
528
- background: url(../img/pro-version-badge.png);
529
- }
530
- a.on-off-button {
531
- float: left;
532
- width: 76px;
533
- height: 39px;
534
- background-image: url(../img/on-off-button.png);
535
- background-repeat: no-repeat;
536
- margin-top: -4px !important;
537
- cursor: pointer;
538
- -webkit-transition: all 0;
539
- -moz-transition: all 0;
540
- -o-transition: all 0;
541
- transition: all 0;
542
- }
543
- a.on-off-button.on {
544
- background-position: 0 0;
545
- }
546
- a.on-off-button.off {
547
- background-position: 0 -40px;
548
- }
549
- .cwp-remote-check-info{
550
- float:left;
551
- margin-right:5px;
552
- margin-top:4px;
553
- font-size: 15px;
554
- color: #858585;
555
- font-weight: 600;
556
- font-style: italic;
557
- }
558
- .rop-error-log{
559
- position:relative;
560
- }
561
- .rop-error-log span.no-error{
562
- display:none;
563
-
564
- }
565
- .rop-error-log span{
566
- background:#F16848;
567
- padding:2px;
568
- position:absolute;
569
- top:0px;
570
- right:0px;
571
- color:#fff;
572
- border-bottom-left-radius: 10px;
573
- }
574
-
575
- #rop-clear-log{
576
- padding: 10px 15px 10px 15px;
577
- font-weight: bold;
578
- font-family: "HelveticaNeue", "Helvetica Neue", Arial, sans-serif;
579
- font-size: 1em;
580
- line-height: 1;
581
- color: #696969;
582
- border-radius: 10px;
583
- border: 1px solid #F7F7F7;
584
- -webkit-transition: all 0.3s ease-in-out;
585
- -moz-transition: all 0.3s ease-in-out;
586
- -o-transition: all 0.3s ease-in-out;
587
- transition: all 0.3s ease-in-out;
588
- box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.5);
589
- float:right;
590
- margin:10px !important;
591
- margin-top:20px !important;
592
- }
593
- .rop-log-item .rop-log-date{
594
- font-weight: bold;
595
- }
596
- .rop-log-item.rop-notice{
597
- background:#52C4EF;
598
- }
599
- .rop-log-item.rop-error{
600
-
601
- background:#F9866B;
602
- }
603
- .rop-log-item{
604
- width:100%;
605
- padding:5px;
606
- color:#fff;
607
- }
608
- #rop-log-list{
609
- text-align: center;
610
- width:100%;
611
- float:right;
612
- background:none;
613
- }
614
- .clearfix:after{
615
-
616
- clear:both;
617
- }
618
- .rop-log-text{
619
- word-wrap: break-word;
620
-
621
- }
622
- .rop-log-container{
623
- width:100%;
624
- display: block;
625
-
626
- }
627
- .active-rop-error-label b{
628
- color:#F9866B;
629
-
630
- }
631
- .active-rop-error-label{
632
- display: none;
633
- background: #F0F0F0;
634
- border-top: 1px solid rgba(255, 255, 255, 0.4);
635
- color: #494949 !important;
636
- font-weight: bold;
637
- text-shadow: 0px 1px 0px #FFF;
638
- border-bottom: 1px solid #E2E2E2;
639
- }
640
- .rop-twitter-clock{
641
- margin-top:-10px;
642
- text-align: center;
643
- padding:2px;
644
- background: #F0F0F0;
645
- color: #494949;
646
- font-weight: bold;
647
- text-shadow: 0px 1px 0px #FFF;
648
- }
649
-
650
- .rop-network-countdown{
651
- background: #B9F3CB;
652
- box-shadow: inset 0px 0px 6px rgba(8, 61, 8, 0.1);
653
- border-top: 1px solid rgba(97, 209, 101, 0.4);
654
- color: #218618;
655
- text-shadow: 0px 1px 0px #FFF;
656
- border-bottom: 1px solid #FFF;
657
- padding:4px;
658
- }
659
- .rop-exclude-filter label{
660
- padding-right:20px;
661
- float: left;
662
- }
663
- .rop-exclude-filter{
664
- float:left;
665
- margin:0px;
666
- margin-right:10px;
667
- line-height: 26px;
668
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Clearfix */
2
+ .clearfix:after { content: "\00A0"; display: block; clear: both; visibility: hidden; line-height: 0; height: 0;}
3
+ .clearfix{ display: inline-block;}
4
+ html[xmlns] .clearfix { display: block;}
5
+ * html .clearfix{ height: 1%;}
6
+ .clearfix { display: block; }
7
+ strong {
8
+ font-weight: 900;
9
+ }
10
+ *:focus {
11
+ outline: 0;
12
+ }
13
+ /* Padding Fix */
14
+ * { -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; }
15
+
16
+ /* Main Wrapper */
17
+ .cwp_top_wrapper { width: 1080px;}
18
+
19
+ /* Tweet Old Post Status */
20
+ .cwp_top_wrapper .cwp_top_status { }
21
+ .cwp_top_wrapper .cwp_top_status p { margin: 0; padding: 10px; text-align: center; font-family: "Roboto", sans-serif; color:#fff; }
22
+ .cwp_top_wrapper .cwp_top_status p.active { background: rgb(185, 243, 203);box-shadow: inset 0px 0px 6px rgba(8, 61, 8, 0.1);border-top: 1px solid rgba(97, 209, 101, 0.4);color: #218618;font-weight: bold;text-shadow: 0px 1px 0px rgba(255,255,255,1.3);border-bottom: 1px solid #fff; }
23
+ .cwp_top_wrapper .cwp_top_status p.inactive { background: rgb(240, 240, 240);border-top: 1px solid rgba(255,255,255,0.4);color: #494949;font-weight: bold;text-shadow: 0px 1px 0px rgba(255,255,255,1.3);border-bottom: 1px solid #E2E2E2; }
24
+ .cwp_top_wrapper a {
25
+ text-decoration: none!important;
26
+ }
27
+ /* Ajax Animation */
28
+ .cwp_top_wrapper .ajaxAnimation { background: url("../img/loader.gif") no-repeat center center, rgba(255,255,255,0.8); position: absolute;top: 0; left: 0; right: 0; bottom: 0; display: none;}
29
+
30
+ .pro-ver .right { position: relative; }
31
+ .pro-ver .left { position: relative; }
32
+
33
+ /* Twitter Login Button */
34
+ .cwp_top_container button#twitter-login { font-weight: bold; font-family: "HelveticaNeue", "Helvetica Neue", Arial, sans-serif; font-size: 1em; line-height: 1; color:#696969; border-radius: 10px; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out; border-radius: 3px; background: #f1f1f1; min-width: 160px; text-align: left; position: relative; padding: 9px 15px 9px 40px; border: none; box-shadow: none; }
35
+ .cwp_top_container button#twitter-login:hover { cursor: pointer; background: #56acee; color: rgba(255,255,255, 0.9); }
36
+ .cwp_top_container button#twitter-login:before { content: ""; position: absolute; left: 0; top: 0; width: 30px; height: 31px; border-radius: 3px 0 0 3px; background-image: url(../img/social-icons-login.png); border-right: 1px solid rgba(255,255,255, 0.2); background-color: #56acee; background-position: 5px 5px; }
37
+ .cwp_top_container button#twitter-login.another-account { box-shadow: none; float: left; border-radius: 3px; background-image: none; display: block; height: 35px; width: 60px; min-width: 10px; padding: 9px 15px 9px 40px; font-weight: bold; text-align: center; font-size: 16px; line-height: 20px; }
38
+ .cwp_top_container button#twitter-login.another-account:before { content: ""; height: 35px; background-position: 5px 7px; }
39
+ .cwp_top_container button#twitter-login.another-account:hover { opacity: 1; }
40
+
41
+ /* Facebook Login Button */
42
+ .cwp_top_container button#facebook-login { font-weight: bold; font-family: "HelveticaNeue", "Helvetica Neue", Arial, sans-serif; font-size: 1em; line-height: 1; color:#696969; border-radius: 10px; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out; border-radius: 3px; background: #f1f1f1; min-width: 160px; text-align: left; position: relative; padding: 9px 15px 9px 40px; border: none; box-shadow: none; }
43
+ .cwp_top_container button#facebook-login:hover { cursor: pointer; background: #436ba9; color: rgba(255,255,255, 0.9); }
44
+ .cwp_top_container button#facebook-login:before { content: ""; position: absolute; left: 0; top: 0; width: 30px; height: 31px; border-radius: 3px 0 0 3px; background-image: url(../img/social-icons-login.png); border-right: 1px solid rgba(255,255,255, 0.2); background-color: #436ba9; background-position: -26px 5px; }
45
+ .cwp_top_container button#facebook-login.another-account { box-shadow: none; float: left; border-radius: 3px; background-image: none; display: block; height: 35px; width: 60px; min-width: 10px; padding: 9px 15px 9px 40px; font-weight: bold; text-align: center; font-size: 16px; line-height: 20px; }
46
+ .cwp_top_container button#facebook-login.another-account:before { content: ""; height: 35px; background-position: -26px 7px; }
47
+ .cwp_top_container button#facebook-login.another-account:hover { opacity: 1; }
48
+
49
+ /* Linkedin Login Button */
50
+ .cwp_top_container button#linkedin-login { cursor:pointer; font-weight: bold; font-family: "HelveticaNeue", "Helvetica Neue", Arial, sans-serif; font-size: 1em; line-height: 1; color:#696969; border-radius: 10px; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out; border-radius: 3px; background: #f1f1f1; min-width: 160px; text-align: left; position: relative; padding: 9px 15px 9px 40px; border: none; box-shadow: none; }
51
+ .cwp_top_container button#linkedin-login:hover { cursor: pointer; background: #308cc5; color: rgba(255,255,255, 0.9); }
52
+ .cwp_top_container button#linkedin-login:before { content: ""; position: absolute; left: 0; top: 0; width: 30px; height: 31px; border-radius: 3px 0 0 3px; background-image: url(../img/social-icons-login.png); border-right: 1px solid rgba(255,255,255, 0.2); content: ""; background-color: #308cc5; background-position: -58px 5px; }
53
+ .cwp_top_container button#linkedin-login.another-account { box-shadow: none; float: left; border-radius: 3px; background-image: none; display: block; height: 35px; width: 60px; min-width: 10px; padding: 9px 15px 9px 40px; font-weight: bold; text-align: center; font-size: 16px; line-height: 20px; }
54
+ .cwp_top_container button#linkedin-login.another-account:before { content: ""; height: 35px; background-position: -58px 7px; }
55
+ .cwp_top_container button#linkedin-login.another-account:hover { opacity: 1; }
56
+ .cwp_top_container .pro-ver button#linkedin-login:hover { background: #fcfcfc; color: #c9c9c9;}
57
+ .cwp_top_container .pro-ver button#linkedin-login:hover:before { content: ""; background-color: #e3e3e3; background-position: -58px -34px; }
58
+ .cwp_top_container .pro-ver button#linkedin-login:hover:after { content: ""; background: url(../img/only-pro-budge.png) center right no-repeat; position: absolute; right: 0; top: 0; width: 50px; height: 31px; }
59
+
60
+ /* Google Plus Login Button */
61
+ .cwp_top_container button#googleplus-login { font-weight: bold; font-family: "HelveticaNeue", "Helvetica Neue", Arial, sans-serif; font-size: 1em; line-height: 1; color:#696969; border-radius: 10px; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out; border-radius: 3px; background: #f1f1f1; min-width: 160px; text-align: left; position: relative; padding: 9px 15px 9px 40px; border: none; box-shadow: none; }
62
+ .cwp_top_container button#googleplus-login:hover { cursor: pointer; background: #de4b39; color: rgba(255,255,255, 0.9); }
63
+ .cwp_top_container button#googleplus-login:before { content: ""; position: absolute; left: 0; top: 0; width: 30px; height: 31px; border-radius: 3px 0 0 3px; background-image: url(../img/social-icons-login.png); border-right: 1px solid rgba(255,255,255, 0.2); content: ""; background-color: #de4b39; background-position: -88px 5px; }
64
+ .cwp_top_container button#googleplus-login.another-account { box-shadow: none; float: left; border-radius: 3px; background-image: none; display: block; height: 35px; width: 60px; min-width: 10px; padding: 9px 15px 9px 40px; font-weight: bold; text-align: center; font-size: 16px; line-height: 20px; }
65
+ .cwp_top_container button#googleplus-login.another-account:before { content: ""; height: 35px; background-position: -88px 7px; }
66
+ .cwp_top_container button#googleplus-login.another-account:hover { opacity: 1; }
67
+ .cwp_top_container .pro-ver button#googleplus-login { background: #fcfcfc; color: #c9c9c9;}
68
+ .cwp_top_container .pro-ver button#googleplus-login:before { content: ""; background-color: #e3e3e3; background-position: -88px -34px; }
69
+ .cwp_top_container .pro-ver button#googleplus-login:after { content: ""; background: url(../img/only-pro-budge.png) center right no-repeat; position: absolute; right: 0; top: 0; width: 50px; height: 31px; }
70
+
71
+ /* XING Login Button */
72
+ .cwp_top_container button#xing-login { font-weight: bold; font-family: "HelveticaNeue", "Helvetica Neue", Arial, sans-serif; font-size: 1em; line-height: 1; color:#696969; border-radius: 10px; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out; border-radius: 3px; background: #f1f1f1; min-width: 160px; text-align: left; position: relative; padding: 9px 15px 9px 40px; border: none; box-shadow: none; }
73
+ .cwp_top_container button#xing-login:hover { cursor: pointer; background: #00605e; color: rgba(255,255,255, 0.9); }
74
+ .cwp_top_container button#xing-login:before { content: ""; position: absolute; left: 0; top: 0; width: 30px; height: 31px; border-radius: 3px 0 0 3px; background-image: url(../img/social-icons-login.png); border-right: 1px solid rgba(255,255,255, 0.2); content: ""; background-color: #00605e; background-position: -119px 5px; }
75
+ .cwp_top_container button#xing-login.another-account { box-shadow: none; float: left; border-radius: 3px; background-image: none; display: block; height: 35px; width: 60px; min-width: 10px; padding: 9px 15px 9px 40px; font-weight: bold; text-align: center; font-size: 16px; line-height: 20px; }
76
+ .cwp_top_container button#xing-login.another-account:before { content: ""; height: 35px; background-position: -119px 7px; }
77
+ .cwp_top_container button#xing-login.another-account:hover { opacity: 1; }
78
+ .cwp_top_container .pro-ver button#xing-login:hover { background: #fcfcfc; color: #c9c9c9;}
79
+ .cwp_top_container .pro-ver button#xing-login:hover:before { content: ""; background-color: #e3e3e3; background-position: -119px -34px; }
80
+ .cwp_top_container .pro-ver button#xing-login:hover:after { content: ""; background: url(../img/only-pro-budge.png) center right no-repeat; position: absolute; right: 0; top: 0; width: 50px; height: 31px; }
81
+
82
+ /* Stumbleupon Login Button */
83
+ .cwp_top_container button#stumbleupon-login { cursor:pointer;font-weight: bold; font-family: "HelveticaNeue", "Helvetica Neue", Arial, sans-serif; font-size: 1em; line-height: 1; color:#696969; border-radius: 10px; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out; border-radius: 3px; background: #f1f1f1; min-width: 160px; text-align: left; position: relative; padding: 9px 15px 9px 40px; border: none; box-shadow: none; }
84
+ .cwp_top_container button#stumbleupon-login:hover { cursor: pointer; background: #f3471f; color: rgba(255,255,255, 0.9); }
85
+ .cwp_top_container button#stumbleupon-login:before { content: ""; position: absolute; left: 0; top: 0; width: 30px; height: 31px; border-radius: 3px 0 0 3px; background-image: url(../img/social-icons-login.png); border-right: 1px solid rgba(255,255,255, 0.2); content: ""; background-color: #f3471f; background-position: -150px 5px; }
86
+ .cwp_top_container button#stumbleupon-login.another-account { box-shadow: none; float: left; border-radius: 3px; background-image: none; display: block; height: 35px; width: 60px; min-width: 10px; padding: 9px 15px 9px 40px; font-weight: bold; text-align: center; font-size: 16px; line-height: 20px; }
87
+ .cwp_top_container button#stumbleupon-login.another-account:before { content: ""; height: 35px; background-position: -150px 7px; }
88
+ .cwp_top_container button#stumbleupon-login.another-account:hover { opacity: 1; }
89
+ .cwp_top_container .pro-ver button#stumbleupon-login:hover { background: #fcfcfc; color: #c9c9c9;}
90
+ .cwp_top_container .pro-ver button#stumbleupon-login:hover:before { content: ""; background-color: #e3e3e3; background-position: -150px -34px; }
91
+ .cwp_top_container .pro-ver button#stumbleupon-login:hover:after { content: ""; background: url(../img/only-pro-budge.png) center right no-repeat; position: absolute; right: 0; top: 0; width: 50px; height: 31px; }
92
+
93
+ /* Tumblr Login Button */
94
+ .cwp_top_container button#tumblr-login { cursor:pointer; font-weight: bold; font-family: "HelveticaNeue", "Helvetica Neue", Arial, sans-serif; font-size: 1em; line-height: 1; color:#696969; border-radius: 10px; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out; border-radius: 3px; background: #f1f1f1; min-width: 160px; text-align: left; position: relative; padding: 9px 15px 9px 40px; border: none; box-shadow: none; }
95
+ .cwp_top_container button#tumblr-login:hover { cursor: pointer; background: #3b5c7b; color: rgba(255,255,255, 0.9); }
96
+ .cwp_top_container button#tumblr-login:before { content: ""; position: absolute; left: 0; top: 0; width: 30px; height: 31px; border-radius: 3px 0 0 3px; background-image: url(../img/social-icons-login.png); border-right: 1px solid rgba(255,255,255, 0.2); content: ""; background-color: #3b5c7b; background-position: -181px 5px; }
97
+ .cwp_top_container button#tumblr-login.another-account { box-shadow: none; float: left; border-radius: 3px; background-image: none; display: block; height: 35px; width: 60px; min-width: 10px; padding: 9px 15px 9px 40px; font-weight: bold; text-align: center; font-size: 16px; line-height: 20px; }
98
+ .cwp_top_container button#tumblr-login.another-account:before { content: ""; height: 35px; background-position: -181px 7px; }
99
+ .cwp_top_container button#tumblr-login.another-account:hover { opacity: 1; }
100
+ .cwp_top_container .pro-ver button#tumblr-login:hover { background: #fcfcfc; color: #c9c9c9;}
101
+ .cwp_top_container .pro-ver button#tumblr-login:hover:before { content: ""; background-color: #e3e3e3; background-position: -181px -34px; }
102
+ .cwp_top_container .pro-ver button#tumblr-login:hover:after { content: ""; background: url(../img/only-pro-budge.png) center right no-repeat; position: absolute; right: 0; top: 0; width: 50px; height: 31px; }
103
+
104
+ /* Logged In User */
105
+ .cwp_top_container .user_details { margin-top: 10px; height: 35px; border: 1px solid #fff; float: left; overflow: hidden; background:#fff; border: 1px solid #ddd; border-radius: 5px; margin-right: 10px;}
106
+ .cwp_top_container .right .user_details:first-child { margin-top: 0; }
107
+ .cwp_top_container .right .another-account { margin-top: 10px; }
108
+ .cwp_top_container .right .another-account:nth-child(2) { margin-top: 0; }
109
+ .cwp_top_container .user_details .user_avatar { float: left; width: 35px;}
110
+ .cwp_top_container .user_details .user_avatar img { width: 100%; }
111
+ .cwp_top_container .user_details .user_name { float: left; font-family: Roboto, "Helvetica Neue", HelveticaNeue, sans-serif; font-weight: 400; font-size:14px; line-height: 2.4; padding: 0px 10px; color:#5C5C5C; min-width: 130px; }
112
+ .cwp_top_container .user_details .remove_user { display:block; width: 35px; height: 35px; float: left; border-left: 1px solid #ddd; }
113
+ .cwp_top_container .user_details .remove_user .logout_user { display: block; width: 100%; height: 100%; background:url("../img/remove_account.png") no-repeat center center, #fff; }
114
+ .cwp_top_container .user_details .remove_user .logout_user:hover { background:url("../img/remove_account_hover.png") no-repeat center center, #fff; }
115
+
116
+ /* Announcement */
117
+ .cwp_top_wrapper .announcement { width: 100%; background: url("../img/reviewgine_announcement.png") no-repeat left -10px top -45px, #f16848; margin-top: 20px;}
118
+ .cwp_top_wrapper .announcement h2 { width:85%; float: left; font-family: "Helvetica Neue", HelveticaNeue, sans-serif; color:#fff; font-weight: 100; font-size: 17px; line-height: 1; padding-left: 180px; }
119
+ .cwp_top_wrapper .announcement h2 b { font-weight: bold; }
120
+ .cwp_top_wrapper .announcement .show-me { float: right; background:#fff; border-radius: 5px; font-family: "Helvetica Neue", HelveticaNeue, sans-serif; color:#5c5c5c; text-decoration: none; text-transform: uppercase;padding: 7px 15px; margin-top: 9px; margin-right: 20px; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out; line-height: 1;}
121
+ .cwp_top_wrapper .announcement .show-me:hover { cursor: pointer; opacity: 0.8; }
122
+
123
+ /* Header Styles */
124
+ .cwp_top_wrapper #cwp_top_header { background:#fff; border-top: 5px solid #52aae2; border-bottom: 1px solid #d4d4d4; margin-top: 10px; padding: 20px 10px;}
125
+ .cwp_top_wrapper #cwp_top_header .top_logo { margin: 0; padding: 0; float: left; font-family: "Open Sans", sans-serif; font-weight: bold; color:#3c3c3c; padding-left: 55px; background:url("../img/logo.png") no-repeat left center; padding: 20px; padding-left: 60px; padding-right: 0; letter-spacing: -1px; margin-left: 14px; }
126
+ .cwp_top_wrapper #cwp_top_header .slogan { float: left; margin: 0; padding: 0; font-size: 17px; color:#858585; font-family: "Open Sans", sans-serif; line-height: 3.5; margin-left: 10px; }
127
+ .cwp_top_wrapper #cwp_top_header .slogan a { color:#858585; font-weight: 600; text-decoration: none; font-style: italic; -webkit-transition: all 0.250s ease-in-out; -moz-transition: all 0.250s ease-in-out; -o-transition: all 0.250s ease-in-out; transition: all 0.250s ease-in-out; }
128
+ .cwp_top_wrapper #cwp_top_header .slogan a:hover { color:#52aae2; }
129
+
130
+ /* Header Actions */
131
+ .cwp_top_wrapper #cwp_top_header .cwp_top_actions { float: right; margin-right: 6px; margin-top: 14px; }
132
+ .cwp_top_wrapper #cwp_top_header .tweet-about-it { background:#52c4ef; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; text-shadow: 0px 1px 0px #33a4ce; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
133
+ .cwp_top_wrapper #cwp_top_header .tweet-about-it span { background:url("../img/twitter_icon.png") no-repeat center center, #3eaed8; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
134
+ .cwp_top_wrapper #cwp_top_header .leave-a-review { background:#f9866b; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; text-shadow: 0px 1px 0px #e46b3d; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
135
+ .cwp_top_wrapper #cwp_top_header .leave-a-review span { background:url("../img/review_icon.png") no-repeat center center, #f16848; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
136
+
137
+ /* Container and form styles */
138
+ .cwp_top_wrapper .cwp_top_container { border-bottom: 5px solid #52aae2; position: relative;}
139
+ .cwp_top_wrapper .cwp_top_container form { width: 100%; float: left; /* border-right: 1px solid #d4d4d4;*/ }
140
+ .cwp_top_wrapper .option { width: 100%; margin: 15px 0px; }
141
+ .cwp_top_wrapper .option .left { float: left; width: 45%; }
142
+ .cwp_top_wrapper .option .left .select-all { float: right; background: none; border: none; background:#ddd; border-radius: 3px; padding: 5px 10px; }
143
+ .cwp_top_wrapper .option .left .select-all:hover { cursor: pointer; }
144
+ .cwp_top_wrapper .option label { font-family: "Helvetica Neue", HelveticaNeue, sans-serif; font-size: 15px; color:#525252; }
145
+ .cwp_top_wrapper .option input[type=text], .cwp_top_wrapper .cwp_top_container form .option select { height: 35px; border-radius: 3px; border: 1px solid #d7d7d7; box-shadow: none; font-family: "Roboto", sans-serif; }
146
+ .cwp_top_wrapper .option input[type=text] { width: 90%; }
147
+ .cwp_top_wrapper .option .left * { display: block; text-align: right; }
148
+ .cwp_top_wrapper .option .right { float: left; width: 55%; padding-left: 20px; }
149
+ .cwp_top_wrapper .option .categories-list { padding-top: 4px; }
150
+ .cwp_top_wrapper .option .categories-list .cwp-cat { float: left; width: 50%; margin-bottom: 5px; }
151
+ .cwp_top_wrapper .option .categories-list .cwp-cat label { font-size: 13px; }
152
+
153
+ .cwp_top_wrapper .option .post-type-list { padding-top: 4px; }
154
+ .cwp_top_wrapper .option .post-type-list .cwp-cat { float: left; width: 50%; margin-bottom: 5px; }
155
+ .cwp_top_wrapper .option .post-type-list .cwp-cat label { font-size: 13px; }
156
+
157
+ /* Sidebar Styles */
158
+ .cwp_top_wrapper .cwp_top_container .sidebar { float: left; width: 27%; padding: 10px}
159
+ .cwp_top_wrapper .cwp_top_container .sidebar ul { display: block; margin: 0; padding: 0; }
160
+ .cwp_top_wrapper .cwp_top_container .sidebar ul li { display: block; }
161
+ .cwp_top_wrapper .cwp_top_container .sidebar ul li.upgrade a { display: block; background:url("../img/upgrade-top.png") no-repeat top left; width: 270px; height: 101px; text-indent: -9999px; }
162
+ .cwp_top_wrapper .cwp_top_container .sidebar ul li.readythemes a { display: block; background:url("../img/top_banner_themeisle.png") no-repeat left; width: 270px; height: 101px; text-indent: -9999px; }
163
+ .cwp_top_wrapper .cwp_top_container .sidebar ul li.sib a { display: block; background:url("../img/sib.png") no-repeat left; width: 270px; height: 225px; text-indent: -9999px; }
164
+ .cwp_top_wrapper .cwp_top_container .sidebar ul li.affiliate-readythemes a { display: block; background:url("../img/affiliate.png") no-repeat left; width: 270px; height: 101px; text-indent: -9999px; }
165
+
166
+ /* Footer Styles */
167
+ .cwp_top_wrapper .cwp_top_container .cwp_top_footer { width: 100%; background:#fff; padding: 20px 10px 10px; border: 1px solid #EAEAEA; border-top: 1px solid #d4d4d4;}
168
+ .cwp_top_wrapper .update-options { background:#707070; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
169
+ .cwp_top_wrapper .update-options span { background:url("../img/update_icon.png") no-repeat center center, #464646; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
170
+
171
+ /* Tweet Now Button Style */
172
+ .cwp_top_wrapper .cwp_top_container .cwp_top_footer .tweet-now { background:#52c4ef; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
173
+ .cwp_top_wrapper .cwp_top_container .cwp_top_footer .tweet-now span { background:url("../img/twitter_icon.png") no-repeat center center, #3eaed8; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
174
+ .top_close_popup {margin-left:37%;float:left;}
175
+ /* Stop Tweet Button Styles */
176
+ .cwp_top_wrapper .cwp_top_container .cwp_top_footer .stop-tweet-old-post { background:#f9866b; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
177
+ .cwp_top_wrapper .cwp_top_container .cwp_top_footer .stop-tweet-old-post span { background:url("../img/twitter_icon.png") no-repeat center center, #f16848; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
178
+
179
+ /* Tweet Now Button Style */
180
+ .cwp_top_wrapper .cwp_top_container .cwp_top_footer .see-sample-tweet { background:#52c4ef; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
181
+ .cwp_top_wrapper .cwp_top_container .cwp_top_footer .see-sample-tweet span { background:url("../img/twitter_icon.png") no-repeat center center, #3eaed8; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
182
+
183
+ /* Reset Settings Button Styles */
184
+ .cwp_top_wrapper .cwp_top_container .cwp_top_footer .reset-settings { background:#f9866b; text-decoration: none; border-radius: 3px; display: block; height: 30px; border-radius: 3px; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; line-height: 2.3; padding-right: 10px; display:inline-block; margin-top: 14px; margin-right: 5px; }
185
+ .cwp_top_wrapper .cwp_top_container .cwp_top_footer .reset-settings span { background:url("../img/reset_icon.png") no-repeat center center, #f16848; width: 30px; height: 30px; display: block; float: left; border-radius: 3px 0px 0px 3px; margin-right: 10px; }
186
+ .cwp_top_wrapper a { margin: 0 !important; padding: 0; margin-right: 10px !important; margin-bottom:10px!important;}
187
+
188
+ /* Sample Tweet Preview Modal */
189
+ .cwp_top_wrapper .cwp_lkapp_preview, .cwp_top_wrapper .cwp_xingapp_preview, .cwp_top_wrapper .cwp_tumblrapp_preview, .cwp_top_wrapper .cwp_not_version_preview,.cwp_top_wrapper .cwp_user_pages { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background:rgba(0,0,0,0.2); display: none; }
190
+
191
+ .cwp_top_wrapper .cwp_fbapp_preview,.cwp_top_wrapper .cwp_user_pages { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background:rgba(0,0,0,0.2); display: none; }
192
+ .cwp_top_wrapper .cwp_sample_tweet_preview_inner h2 { text-align: center; font-weight: bold;color:#7d7d7d; font-family: "HelveticaNeue", "Helvetica Neue", sans-serif; }
193
+ .cwp_top_wrapper .cwp_sample_tweet_preview_inner { background:#fff; width: 80%; margin: 0 auto; margin-top: 109px; padding: 20px; border-radius: 5px;box-shadow: 0px 5px 5px rgba(0,0,0,0.1); }
194
+ .cwp_top_wrapper .cwp_sample_tweet_preview_inner .sample_tweet { min-height:60px; display: block; width: 100%; border: 1px solid #e8e8e8; padding: 10px; border-radius: 5px; font-family: "Helvetica Neue", HelveticaNeue, sans-serif; font-size: 14px;}
195
+ .cwp_top_wrapper .cwp_sample_tweet_preview_inner .sample_tweet a { text-decoration: none; }
196
+ .cwp_top_wrapper .cwp_sample_tweet_preview_inner button { display: block; margin-top: 17px; background:#52c4ef; border: none; border-radius: 3px; padding: 5px 10px; margin-left:10px;margin-right:10px;color:#fff; font-family: "Open Sans", sans-serif; color:#fff; text-transform: uppercase; font-weight: bold; }
197
+ .cwp_top_wrapper .cwp_sample_tweet_preview_inner button:hover { cursor: pointer; }
198
+
199
+ .cwp_top_wrapper .cwp_sample_tweet_preview { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background:rgba(0,0,0,0.2); display: none; }
200
+
201
+
202
+ .cwp_user_pages .cwp_preview_page {
203
+ width: 175px;
204
+ margin-right: 25px;
205
+ float: left;
206
+ height: 75px;
207
+ margin-bottom: 25px;
208
+ border-bottom: 1px solid #F1F1F1;
209
+ }
210
+
211
+ .cwp_user_pages_inner {
212
+ height: 340px;
213
+ }
214
+ .cwp_user_pages .page_name {
215
+ font-weight: bold;
216
+ font-size: 15px;
217
+ padding-bottom: 10px;
218
+ }
219
+ .cwp_user_pages .page_avatar {
220
+ width: 50px;
221
+ height: 50px;
222
+ margin-right: 5px;
223
+ float: left;
224
+ }
225
+ .cwp_user_pages .page_category {
226
+
227
+ color:grey;
228
+ }
229
+ .top_preview {
230
+ width: 40px;
231
+ height: 40px;
232
+ padding: 5px;
233
+ float: left;}
234
+ .cwp_top_wrapper_full {
235
+
236
+ width: 90%;
237
+ float: left;
238
+ border-right: none;
239
+ margin: 5px 15px 2px;
240
+ }
241
+
242
+ .cwp_top_wrapper_full .cwp_top_container form {
243
+
244
+ width: 99%;
245
+ float: left;
246
+ border-right: none;
247
+ }
248
+
249
+
250
+ .top_left_instructions {
251
+ float: left;
252
+ width: 50%;
253
+ }
254
+ .top_auth_form {
255
+ width:50%;
256
+ float: left;
257
+ }
258
+ .top_sample_auth{
259
+ height: 370px;
260
+ }
261
+ .top_auth_inner {
262
+ height: 500px;
263
+ }
264
+ .top_authorize{
265
+ margin-left:50px;
266
+ }
267
+ @media all and (max-width:1280px) {
268
+ .cwp_top_wrapper {
269
+ width:100%;
270
+ }
271
+ .cwp_top_wrapper .cwp_top_container form {
272
+ width:100%;
273
+ border-right: none;
274
+ }
275
+
276
+
277
+ }
278
+ @media all and (max-width:970px) {
279
+ .slogan {
280
+ display: none;
281
+ }
282
+ }
283
+
284
+ /* Tabbed Nav */
285
+ #cwp_top_tabs ul#tabs_menu {
286
+ margin: 0;
287
+ margin-bottom: -1px;
288
+ }
289
+
290
+ #cwp_top_tabs ul#tabs_menu li {
291
+ display: inline-block;
292
+ font-weight: bold;
293
+ font-family: "Roboto",sans-serif;
294
+ font-size: 13px;
295
+ padding: 15px;
296
+ line-height: 1;
297
+ border: 1px solid #EAEAEA;
298
+ border-bottom: none;
299
+ margin: 0;
300
+ background: rgb(252, 252, 252);
301
+ border-radius: 2px 2px 0 0
302
+ }
303
+
304
+ #cwp_top_tabs ul#tabs_menu li.active,
305
+ #cwp_top_tabs ul#tabs_menu li:hover {
306
+ background: none repeat scroll 0% 0% #FFF;
307
+ cursor: pointer;
308
+ border: 1px solid #EAEAEA;
309
+ border-bottom: none;
310
+ }
311
+
312
+ #cwp_top_tabs div.tab {
313
+ display: none;
314
+ width: 100%;
315
+ float: left;
316
+ background: #FFF;
317
+ border: 1px solid #EAEAEA;
318
+ border-bottom: 0;
319
+ }
320
+ .tab .cwp_top_tabs_vertical .tab-vertical {
321
+ width:80%;
322
+ float:left;
323
+
324
+ }
325
+ #cwp_top_tabs div.tab.active {
326
+ display: block;
327
+ }
328
+ .cwp_top_tabs_vertical {
329
+ display:block;
330
+ width:100%;
331
+
332
+ }
333
+ .cwp_top_tabs_vertical .tab-vertical.active{
334
+ display:block;
335
+
336
+ }
337
+ .cwp_top_tabs_vertical .tab-vertical{
338
+ width:100%;
339
+ display:none;
340
+
341
+ }
342
+ .tab.active .cwp_top_tabs_vertical form {
343
+ width:80% ;
344
+ float:left;
345
+
346
+
347
+ }
348
+ .cwp_top_tabs_vertical .cwp_top_tabs_btns li:hover:not(.not-tab),
349
+ .cwp_top_tabs_vertical .cwp_top_tabs_btns li.active:not(.not-tab){
350
+ background:#fff;
351
+
352
+ }
353
+ .cwp_top_tabs_vertical .cwp_top_tabs_btns li.not-tab{
354
+ cursor: default;
355
+
356
+ }
357
+ .cwp_top_tabs_vertical .cwp_top_tabs_btns li{
358
+ cursor: pointer;
359
+ display: inline-block;
360
+ font-weight: bold;
361
+ font-family: "Roboto",sans-serif;
362
+ font-size: 13px;
363
+ padding: 15px;
364
+ line-height: 1;
365
+ width:100%;
366
+ margin: 0;
367
+ text-transform: capitalize;
368
+
369
+ }
370
+ .cwp_top_tabs_vertical .cwp_top_tabs_btns{
371
+ width:20%;
372
+ padding-top:30px;
373
+ float:left;
374
+ margin-top:0px;
375
+ padding-bottom:20px;
376
+ background: none repeat scroll 0% 0% #F0F0F0;
377
+ cursor: pointer;
378
+ border-right: 1px solid #ddd;
379
+ border-bottom: 1px solid #ddd;
380
+ border-left: 1px solid #ddd;
381
+ }
382
+ .cwp-top-premium-placeholder{
383
+ text-align:center;
384
+ padding-top:20px;
385
+ font-size:20px;
386
+ text-align: center;
387
+ }
388
+ .cwp-according-item {
389
+ margin:2%;
390
+
391
+ }
392
+ .cwp-according-item.active .cwp-according-body{
393
+ display:block;
394
+
395
+ }
396
+ .cwp-according-item .cwp-according-body{
397
+ display:none;
398
+ }
399
+ .cwp-according-item .cwp-according-body {
400
+ background:#f0f0f0;
401
+ width:96%;
402
+ padding:2%;
403
+
404
+ }
405
+ .cwp-according-item .cwp-according-header:hover,
406
+ .cwp-according-item.active .cwp-according-header{
407
+
408
+ background:#444;
409
+ color:#f0f0f0;
410
+
411
+ }
412
+ .cwp-according-item.active .cwp-according-header:before,
413
+ .cwp-according-item:hover .cwp-according-header:before{
414
+ border-color:#fff;
415
+ }
416
+ .cwp-according-item.active .cwp-according-header span:before,
417
+ .cwp-according-item:hover .cwp-according-header span:before {
418
+
419
+ content:"";
420
+ position:absolute;
421
+ background:#fff;
422
+ top: 18px;
423
+ left: 50px;
424
+ border-radius:50%;
425
+ width:10px;
426
+ height:10px;
427
+ }
428
+ .cwp-according-item .cwp-according-header:before{
429
+ content:"";
430
+ position:absolute;
431
+ border:4px solid #444;
432
+ top: 9px;
433
+ left: 41px;
434
+ border-radius:50%;
435
+ width:20px;
436
+ height:20px;
437
+
438
+ }
439
+ .cwp-according-item .cwp-according-header{
440
+ width:96%;
441
+ position:relative;
442
+ display:block;
443
+ background:#f0f0f0;
444
+ text-align: center;
445
+ color:#444;
446
+ font-size: 20px;
447
+ cursor:pointer;
448
+ padding: 14px;
449
+
450
+ }
451
+ .cwp-schedule-days li:first-child{
452
+ border-bottom-left-radius: 4px;
453
+ border-top-left-radius: 4px;
454
+ }
455
+ .cwp-schedule-days li:last-child{
456
+ border-bottom-right-radius: 8px;
457
+ border-top-right-radius: 8px;
458
+
459
+ }
460
+ .cwp-schedule-days li:hover {
461
+ color: #f0f0f0;
462
+ background: rgb(247,245,246); /* Old browsers */
463
+ background: -moz-linear-gradient(top, rgba(247,245,246,1) 0%, rgba(192,192,192,1) 100%); /* FF3.6+ */
464
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(247,245,246,1)), color-stop(100%,rgba(192,192,192,1))); /* Chrome,Safari4+ */
465
+ background: -webkit-linear-gradient(top, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%); /* Chrome10+,Safari5.1+ */
466
+ background: -o-linear-gradient(top, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%); /* Opera 11.10+ */
467
+ background: -ms-linear-gradient(top, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%); /* IE10+ */
468
+ background: linear-gradient(to bottom, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%); /* W3C */
469
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f7f5f6', endColorstr='#c0c0c0',GradientType=0 ); /* IE6-9 */
470
+ }
471
+ .cwp-schedule-days li.active {
472
+ text-decoration: none;
473
+ color: #f0f0f0;
474
+ box-shadow: none;
475
+ background: rgb(119,119,119); /* Old browsers */
476
+ background: -moz-linear-gradient(top, rgba(119,119,119,1) 0%, rgba(68,68,68,1) 100%); /* FF3.6+ */
477
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(119,119,119,1)), color-stop(100%,rgba(68,68,68,1))); /* Chrome,Safari4+ */
478
+ background: -webkit-linear-gradient(top, rgba(119,119,119,1) 0%,rgba(68,68,68,1) 100%); /* Chrome10+,Safari5.1+ */
479
+ background: -o-linear-gradient(top, rgba(119,119,119,1) 0%,rgba(68,68,68,1) 100%); /* Opera 11.10+ */
480
+ background: -ms-linear-gradient(top, rgba(119,119,119,1) 0%,rgba(68,68,68,1) 100%); /* IE10+ */
481
+ background: linear-gradient(to bottom, rgba(119,119,119,1) 0%,rgba(68,68,68,1) 100%); /* W3C */
482
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#777777', endColorstr='#444444',GradientType=0 ); /* IE6-9 */
483
+ border-top: 1px solid #666;
484
+ border-bottom: 1px solid #333;
485
+ border-right: 1px solid #444;
486
+ border-left: 1px solid #777;
487
+ }
488
+ .cwp-schedule-days li{
489
+ overflow: hidden;
490
+ display: inline-block;
491
+ float: left;
492
+ border-top: 1px solid #666;
493
+ border-bottom: 1px solid #333;
494
+ border-right: 1px solid #ABABAB;
495
+ border-left: 1px solid #D8D8D8;
496
+ color: #444;
497
+ cursor: pointer;
498
+ width: 14.2%;
499
+ text-align: center;
500
+ padding-top: 10px;
501
+ padding-bottom: 10px;
502
+ background: rgb(247,245,246);
503
+ background: -moz-linear-gradient(top, rgba(247,245,246,1) 0%, rgba(192,192,192,1) 100%);
504
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(247,245,246,1)), color-stop(100%,rgba(192,192,192,1)));
505
+ background: -webkit-linear-gradient(top, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%);
506
+ background: -o-linear-gradient(top, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%);
507
+ background: -ms-linear-gradient(top, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%);
508
+ background: linear-gradient(to bottom, rgba(247,245,246,1) 0%,rgba(192,192,192,1) 100%);
509
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f7f5f6', endColorstr='#c0c0c0',GradientType=0 );
510
+ color: #E8E8E8;
511
+ text-shadow: 1px 1px 1px #7C7C7C;
512
+ box-shadow: inset 5px 0px 10px #D5D5D5;
513
+ border-top: 1px solid #CBCBCB;
514
+ border-bottom: 1px solid #ABABAB;
515
+
516
+ }
517
+ .cwp-pro-string{
518
+
519
+ margin: auto;
520
+ display: block;
521
+ text-align: left;
522
+ }
523
+ .cwp-posts-time-info{
524
+ text-align: center;
525
+ margin-top: -9px;
526
+ font-size: 14px;
527
+ }
528
+ a.cwp-primary:hover,
529
+ a.cwp-primary{
530
+
531
+ background: #52c4ef;
532
+ color: #fff;
533
+ }
534
+ a.cwp-btn{
535
+ text-decoration: none;
536
+ border-radius: 3px;
537
+ display: block;
538
+ height: 30px;
539
+ border-radius: 3px;
540
+ font-family: "Open Sans", sans-serif;
541
+ text-transform: uppercase;
542
+ font-weight: bold;
543
+ line-height: 2.3;
544
+ padding-right: 10px;
545
+ padding-left: 10px;
546
+ display: inline-block;
547
+ margin-top: 14px;
548
+ margin-right: 5px;
549
+
550
+ }
551
+ .cwp-top-times-choice .cwp-top-times-close:hover{
552
+ color:#000;
553
+
554
+ }
555
+ #cwp-top-container-form{
556
+ width:73%;
557
+ float:left;
558
+
559
+ }
560
+ .cwp-top-times-choice .cwp-top-times-close{
561
+
562
+ margin-left: 20px;
563
+ font-size: 15px;
564
+ font-weight: bold;
565
+ cursor: pointer;
566
+ }
567
+ .cwp-top-times-choice select{
568
+ width:100px;
569
+
570
+ }
571
+
572
+ .cwp-hidden{
573
+ display:none;
574
+
575
+ }
576
+
577
+ .inactive.cwp-error-label {
578
+ border-bottom: none !important;
579
+ }
580
+
581
+ .pro-version {
582
+ position: relative;
583
+ }
584
+ .pro-version:before {
585
+ content: "";
586
+ position: absolute;
587
+ width: 45px;
588
+ height: 45px;
589
+ top: 0;
590
+ background-repeat: no-repeat;
591
+ right: 0;
592
+ background: url(../img/pro-version-badge.png);
593
+ }
594
+ a.on-off-button {
595
+ float: left;
596
+ width: 76px;
597
+ height: 39px;
598
+ background-image: url(../img/on-off-button.png);
599
+ background-repeat: no-repeat;
600
+ margin-top: -4px !important;
601
+ cursor: pointer;
602
+ -webkit-transition: all 0;
603
+ -moz-transition: all 0;
604
+ -o-transition: all 0;
605
+ transition: all 0;
606
+ }
607
+ a.on-off-button.on {
608
+ background-position: 0 0;
609
+ }
610
+ a.on-off-button.off {
611
+ background-position: 0 -40px;
612
+ }
613
+ .cwp-remote-check-info{
614
+ float:left;
615
+ margin-right:5px;
616
+ margin-top:4px;
617
+ font-size: 15px;
618
+ color: #858585;
619
+ font-weight: 600;
620
+ font-style: italic;
621
+ }
622
+ .rop-error-log{
623
+ position:relative;
624
+ }
625
+ .rop-error-log span.no-error{
626
+ display:none;
627
+
628
+ }
629
+ .rop-error-log span{
630
+ background:#F16848;
631
+ padding:2px;
632
+ position:absolute;
633
+ top:0px;
634
+ right:0px;
635
+ color:#fff;
636
+ border-bottom-left-radius: 10px;
637
+ }
638
+
639
+ #rop-clear-log{
640
+ padding: 10px 15px 10px 15px;
641
+ font-weight: bold;
642
+ font-family: "HelveticaNeue", "Helvetica Neue", Arial, sans-serif;
643
+ font-size: 1em;
644
+ line-height: 1;
645
+ color: #696969;
646
+ border-radius: 10px;
647
+ border: 1px solid #F7F7F7;
648
+ -webkit-transition: all 0.3s ease-in-out;
649
+ -moz-transition: all 0.3s ease-in-out;
650
+ -o-transition: all 0.3s ease-in-out;
651
+ transition: all 0.3s ease-in-out;
652
+ box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.5);
653
+ float:right;
654
+ margin:10px !important;
655
+ margin-top:20px !important;
656
+ }
657
+ .rop-log-item .rop-log-date{
658
+ font-weight: bold;
659
+ }
660
+ .rop-log-item.rop-notice{
661
+ background:#52C4EF;
662
+ }
663
+ .rop-log-item.rop-error{
664
+
665
+ background:#F9866B;
666
+ }
667
+ .rop-log-item{
668
+ width:100%;
669
+ padding:5px;
670
+ color:#fff;
671
+ }
672
+ #rop-log-list{
673
+ text-align: center;
674
+ width:100%;
675
+ float:right;
676
+ background:none;
677
+ }
678
+ .clearfix:after{
679
+
680
+ clear:both;
681
+ }
682
+ .rop-log-text{
683
+ word-wrap: break-word;
684
+
685
+ }
686
+ .rop-log-container{
687
+ width:100%;
688
+ display: block;
689
+
690
+ }
691
+ .active-rop-error-label b{
692
+ color:#F9866B;
693
+
694
+ }
695
+ .active-rop-error-label{
696
+ display: none;
697
+ background: #F0F0F0;
698
+ border-top: 1px solid rgba(255, 255, 255, 0.4);
699
+ color: #494949 !important;
700
+ font-weight: bold;
701
+ text-shadow: 0px 1px 0px #FFF;
702
+ border-bottom: 1px solid #E2E2E2;
703
+ }
704
+ .rop-twitter-clock{
705
+ margin-top:-10px;
706
+ text-align: center;
707
+ color: #494949;
708
+ font-weight: bold;
709
+ text-shadow: 0px 1px 0px #FFF;
710
+ background: none;
711
+ padding: 12px 0 8px;
712
+ }
713
+
714
+ .rop-network-countdown{
715
+ background: #B9F3CB;
716
+ box-shadow: inset 0px 0px 6px rgba(8, 61, 8, 0.1);
717
+ border-top: 1px solid rgba(97, 209, 101, 0.4);
718
+ color: #218618;
719
+ text-shadow: 0px 1px 0px #FFF;
720
+ border-bottom: 1px solid #FFF;
721
+ padding:4px;
722
+ }
723
+ .rop-exclude-filter label{
724
+ padding-right:20px;
725
+ float: left;
726
+ }
727
+ .rop-exclude-filter{
728
+ float:left;
729
+ margin:0px;
730
+ margin-right:10px;
731
+ line-height: 26px;
732
+ }
733
+ button.login{
734
+ cursor:pointer;
735
+ }
736
+ .cwp_top_container .right button.another-account.pro-only{
737
+ -webkit-transition: all 0s ease-in-out !important;
738
+ -moz-transition: all 0s ease-in-out !important;
739
+ -o-transition: all 0s ease-in-out !important;
740
+ transition: all 0s ease-in-out !important;
741
+ width:68px !important;
742
+
743
+ }
744
+ .cwp_top_container .right button.another-account.pro-only:hover{
745
+
746
+ background: url(../img/only-pro-budge.png) center right no-repeat #f1f1f1 !important;
747
+ text-indent:-9999px;
748
+ }
749
+
750
+
751
+ .rop-clear{
752
+ clear:both;
753
+
754
+ }
755
+ .rop-left{
756
+ float:left;
757
+
758
+ }
759
+ .rop-right{
760
+ float:right;
761
+ }
762
+ .rop-beta-user .rop-right.on {
763
+
764
+ background-position: 0 0px;
765
+ }
766
+ .rop-beta-user .rop-right.off {
767
+ background-position: 0 -40px;
768
+ }
769
+
770
+ .rop-beta-user .rop-right {
771
+ width: 76px;
772
+ height: 39px;
773
+ background-image: url(../img/on-off-button.png);
774
+ background-repeat: no-repeat;
775
+ margin-top: -4px !important;
776
+ cursor: pointer;
777
+ -webkit-transition: all 0s;
778
+ -moz-transition: all 0s;
779
+ -o-transition: all 0s;
780
+ transition: all 0s;
781
+
782
+ }
783
+ .rop-beta-user .rop-right{
784
+ width:30%;
785
+ }
786
+ .rop-beta-user .rop-left span{
787
+ font-style: italic;
788
+ font-size:12px;
789
+ font-style: italic;
790
+ font-size: 10px;
791
+ font-weight: normal;
792
+ width: 100%;
793
+ display: block;
794
+ line-height: 10px;
795
+
796
+ }
797
+ .rop-beta-user .rop-left{
798
+ width:66%;
799
+ color: #858585;
800
+ font-weight: 600;
801
+ font-size:15px;
802
+
803
+ line-height: 29px;
804
+
805
+ }
806
+ .rop-beta-user .rop-beta-desc{
807
+ font-style: italic;
808
+ font-size: 13px;
809
+ font-weight: normal;
810
+ width: 100%;
811
+ display: block;
812
+ line-height: 15px;
813
+ color: #858585;
814
+
815
+ }
816
+ .cwp_top_wrapper .cwp_not_version_preview .top_auth_inner{
817
+ height:160px;
818
+
819
+ }
820
+ .cwp_top_wrapper .cwp_not_version_preview .top_close_popup
821
+ {
822
+
823
+ margin: auto;
824
+ float: none;
825
+
826
+ }
827
+ .cwp_top_wrapper .cwp_not_version_preview h2{
828
+ line-height: 26px;
829
+ font-size: 17px;
830
+ font-weight: 500;
831
+
832
+ }
img/only-pro-budge.png ADDED
Binary file
img/social-icons-login.png ADDED
Binary file
img/upgrade-top.png CHANGED
Binary file
inc/class-remote-notification-client.php CHANGED
@@ -1,381 +1,381 @@
1
- <?php
2
- /**
3
- * Remote Dashobard Notifications.
4
- *
5
- * This class is part of the Remote Dashboard Notifications plugin.
6
- * This plugin allows you to send notifications to your client's
7
- * WordPress dashboard easily.
8
- *
9
- * Notification you send will be displayed as admin notifications
10
- * using the standard WordPress hooks. A "dismiss" option is added
11
- * in order to let the user hide the notification.
12
- *
13
- * @package Remote Dashboard Notifications
14
- * @author ThemeAvenue <web@themeavenue.net>
15
- * @license GPL-2.0+
16
- * @link http://themeavenue.net
17
- * @link http://wordpress.org/plugins/remote-dashboard-notifications/
18
- * @link https://github.com/ThemeAvenue/Remote-Dashboard-Notifications
19
- * @copyright 2014 ThemeAvenue
20
- */
21
-
22
- // If this file is called directly, abort.
23
- if ( ! defined( 'WPINC' ) ) {
24
- die;
25
- }
26
-
27
- class TAV_Remote_Notification_Client {
28
-
29
- /**
30
- * Class version.
31
- *
32
- * @since 0.1.0
33
- *
34
- * @var string
35
- */
36
- protected static $version = '0.1.2';
37
-
38
- public function __construct( $channel_id = false, $channel_key = false, $server = false, $debug = false ) {
39
-
40
- /* Don't continue during Ajax process */
41
- if( !is_admin() || defined( 'DOING_AJAX' ) && DOING_AJAX )
42
- return;
43
-
44
- $this->id = intval( $channel_id );
45
- $this->key = sanitize_key( $channel_key );
46
- $this->server = esc_url( $server );
47
- $this->notice = false;
48
- $this->cache = apply_filters( 'rn_notice_caching_time', 6 );
49
- $this->debug = $debug;
50
- $this->error = null;
51
-
52
- /* The plugin can't work without those 2 parameters */
53
- if( false === ( $this->id || $this->key || $this->server ) )
54
- return;
55
-
56
- /* Call the dismiss method before testing for Ajax */
57
- if( isset( $_GET['rn'] ) && isset( $_GET['notification'] ) )
58
- add_action( 'init', array( $this, 'dismiss' ) );
59
-
60
- add_action( 'init', array( $this, 'request_server' ) );
61
-
62
- }
63
-
64
- /**
65
- * Send a request to notification server
66
- *
67
- * The distant WordPress notification server is
68
- * queried using the WordPress HTTP API.
69
- *
70
- * @since 0.1.0
71
- */
72
- public function request_server() {
73
-
74
- /* Current channel ID */
75
- $channel_id = $this->id;
76
-
77
- /* Current channel key */
78
- $channel_key = $this->key;
79
-
80
- /* Generate a unique identifyer used for the transient */
81
- $uniqid = $channel_id . substr( $channel_key, 0, 5 );
82
-
83
- /* Prepare the payload to send to server */
84
- $payload = base64_encode( json_encode( array( 'channel' => $channel_id, 'key' => $channel_key ) ) );
85
-
86
- /* Get the endpoint URL ready */
87
- $url = add_query_arg( array( 'payload' => $payload ), $this->server );
88
-
89
- /* Content is false at first */
90
- $content = get_transient( "rn_last_notification_$uniqid" );
91
-
92
- /* Set the request response to null */
93
- $request = null;
94
-
95
- /* If no notice is present in DB we query the server */
96
- if( false === $content || defined( 'RDN_DEV' ) && RDN_DEV ) {
97
-
98
- /* Query the server */
99
- $request = wp_remote_get( $url, array( 'timeout' => apply_filters( 'rn_http_request_timeout', 5 ) ) );
100
-
101
- /* If we have a WP_Error object we abort */
102
- if( is_wp_error( $request ) )
103
- return;
104
-
105
- /* Check if we have a valid response */
106
- if( is_array( $request ) && isset( $request['response']['code'] ) && 200 === intval( $request['response']['code'] ) ) {
107
-
108
- /* Get the response body */
109
- if( isset( $request['body'] ) ) {
110
-
111
- /**
112
- * Decode the response JSON string
113
- */
114
- $content = json_decode( $request['body'] );
115
-
116
- /**
117
- * Check if the payload is in a usable JSON format
118
- */
119
- if( version_compare( phpversion(), '5.3.0', '>=' ) ) {
120
-
121
- if( ! ( json_last_error() == JSON_ERROR_NONE ) )
122
- return false;
123
-
124
- } else {
125
-
126
- if( $content == NULL )
127
- return false;
128
-
129
- }
130
-
131
- set_transient( "rn_last_notification_$uniqid", $content, $this->cache*60*60*5 );
132
-
133
- }
134
-
135
- }
136
-
137
- }
138
-
139
- /**
140
- * If the JSON string has been decoded we can go ahead
141
- */
142
- if( is_object( $content ) ) {
143
-
144
- if( isset( $content->error ) ) {
145
-
146
- /* Display debug info in the admin footer */
147
- if( true === $this->debug ) {
148
-
149
- /* Save the error message */
150
- $this->error = $content->error;
151
-
152
- /* Display it commented in the footer */
153
- add_action( 'admin_footer', array( $this, 'debug_info' ) );
154
-
155
- }
156
-
157
- /* Stop */
158
- return;
159
-
160
- }
161
-
162
- $this->notice = $content;
163
-
164
- /**
165
- * Check if notice has already been dismissed
166
- */
167
- $dismissed = get_option( '_rn_dismissed' );
168
-
169
- if( is_array( $dismissed ) && in_array( $content->slug, $dismissed ) )
170
- return;
171
-
172
- /**
173
- * Add the notice style
174
- */
175
- add_action( 'admin_print_styles', array( $this, 'style' ), 100 );
176
-
177
- /**
178
- * Add the notice to WP dashboard
179
- */
180
- add_action( 'admin_notices', array( $this, 'show_notice' ) );
181
-
182
- } else {
183
-
184
- return false;
185
-
186
- }
187
-
188
- }
189
-
190
- /**
191
- * Display the admin notice
192
- *
193
- * The function will do some checks to verify if
194
- * the notice can be displayed on the current page.
195
- * If all the checks are passed, the notice
196
- * is added to the page.
197
- *
198
- * @since 0.1.0
199
- */
200
- public function show_notice() {
201
-
202
- $content = $this->notice;
203
-
204
- /* If there is no content we abort */
205
- if( false === $content )
206
- return;
207
-
208
- /* If the type array isn't empty we have a limitation */
209
- if( isset( $content->type ) && is_array( $content->type ) && !empty( $content->type ) ) {
210
-
211
- /* Get current post type */
212
- $pt = get_post_type();
213
-
214
- /**
215
- * If the current post type can't be retrieved
216
- * or if it's not in the allowed post types,
217
- * then we don't display the admin notice.
218
- */
219
- if( false === $pt || !in_array( $pt, $content->type ) )
220
- return;
221
-
222
- }
223
-
224
- /* Prepare alert class */
225
- $style = isset( $content->style ) ? $content->style : 'updated';
226
-
227
- if( 'updated' == $style )
228
- $class = $style;
229
-
230
- elseif( 'error' == $style )
231
- $class = 'updated error';
232
-
233
- else
234
- $class = "updated rn-alert rn-alert-$style";
235
-
236
- /**
237
- * Prepare the dismiss URL
238
- *
239
- * @var (string) URL
240
- * @todo get a more accurate URL of the current page
241
- */
242
- $args = array();
243
- $nonce = wp_create_nonce( 'rn-dismiss' );
244
- $slug = $content->slug;
245
-
246
- array_push( $args, "rn=$nonce" );
247
- array_push( $args, "notification=$slug" );
248
-
249
- foreach( $_GET as $key => $value ) {
250
-
251
- array_push( $args, "$key=$value" );
252
-
253
- }
254
-
255
- $args = implode( '&', $args );
256
- $url = "?$args";
257
- ?>
258
-
259
- <div class="<?php echo $class; ?>">
260
- <?php if( !in_array( $style, array( 'updated', 'error' ) ) ): ?><a href="<?php echo $url; ?>" id="rn-dismiss" class="rn-dismiss-btn" title="<?php _e( 'Dismiss notification', 'remote-notifications' ); ?>">&times;</a><?php endif; ?>
261
- <p><?php echo html_entity_decode( $content->message ); ?></p>
262
- <?php if( in_array( $style, array( 'updated', 'error' ) ) ): ?><p><a href="<?php echo $url; ?>" id="rn-dismiss" class="rn-dismiss-button button-secondary"><?php _e( 'Dismiss', 'remote-notifications' ); ?></a></p><?php endif; ?>
263
- </div>
264
- <?php
265
-
266
- }
267
-
268
- /**
269
- * Dismiss notice
270
- *
271
- * When the user dismisses a notice, its slug
272
- * is added to the _rn_dismissed entry in the DB options table.
273
- * This entry is then used to check if a notie has been dismissed
274
- * before displaying it on the dashboard.
275
- *
276
- * @since 0.1.0
277
- */
278
- public function dismiss() {
279
-
280
- /* Check if we have all the vars */
281
- if( !isset( $_GET['rn'] ) || !isset( $_GET['notification'] ) )
282
- return;
283
-
284
- /* Validate nonce */
285
- if( !wp_verify_nonce( sanitize_key( $_GET['rn'] ), 'rn-dismiss' ) )
286
- return;
287
-
288
- /* Get dismissed list */
289
- $dismissed = get_option( '_rn_dismissed', array() );
290
-
291
- /* Add the current notice to the list if needed */
292
- if( is_array( $dismissed ) && !in_array( $_GET['notification'], $dismissed ) )
293
- array_push( $dismissed, $_GET['notification'] );
294
-
295
- /* Update option */
296
- update_option( '_rn_dismissed', $dismissed );
297
-
298
- /* Get redirect URL */
299
- $args = array();
300
-
301
- /* Get URL args */
302
- foreach( $_GET as $key => $value ) {
303
-
304
- if( in_array( $key, array( 'rn', 'notification' ) ) )
305
- continue;
306
-
307
- array_push( $args, "$key=$value" );
308
-
309
- }
310
-
311
- $args = implode( '&', $args );
312
- $url = "?$args";
313
-
314
- /* Redirect */
315
- wp_redirect( $url );
316
-
317
- }
318
-
319
- /**
320
- * Adds inline style for non standard notices
321
- *
322
- * This function will only be called if the notice style is not standard.
323
- *
324
- * @since 0.1.0
325
- */
326
- public function style() { ?>
327
-
328
- <style type="text/css">div.rn-alert{padding:15px;padding-right:35px;margin-bottom:20px;border:1px solid transparent;-webkit-box-shadow:none;box-shadow:none}div.rn-alert p:empty{display:none}div.rn-alert ul,div.rn-alert ul li,div.rn-alert ol,div.rn-alert ol li{list-style:inherit !important}div.rn-alert ul,div.rn-alert ol{padding-left:30px}div.rn-alert hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0;margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}div.rn-alert h1,h2,h3,h4,h5,h6{margin-top:0;color:inherit}div.rn-alert a{font-weight:700}div.rn-alert a:hover{text-decoration:underline}div.rn-alert>p{margin:0;padding:0;line-height:1}div.rn-alert>p,div.rn-alert>ul{margin-bottom:0}div.rn-alert>p+p{margin-top:5px}div.rn-alert .rn-dismiss-btn{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;position:relative;top:-2px;right:-21px;padding:0;cursor:pointer;background:0;border:0;-webkit-appearance:none;float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20);text-decoration:none}div.rn-alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}div.rn-alert-success hr{border-top-color:#c9e2b3}div.rn-alert-success a{color:#2b542c}div.rn-alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}div.rn-alert-info hr{border-top-color:#a6e1ec}div.rn-alert-info a{color:#245269}div.rn-alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}div.rn-alert-warning hr{border-top-color:#f7e1b5}div.rn-alert-warning a{color:#66512c}div.rn-alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}div.rn-alert-danger hr{border-top-color:#e4b9c0}div.rn-alert-danger a{color:#843534}</style>
329
-
330
- <?php }
331
-
332
- /**
333
- * Dismiss notice using Ajax
334
- *
335
- * This function is NOT used. Testing only.
336
- */
337
- public function script() {
338
-
339
- $url = admin_url();
340
- ?>
341
-
342
- <script type="text/javascript">
343
- jQuery(document).ready(function($) {
344
-
345
- var prout = 'prout';
346
-
347
- $('#rn-dismiss').on('click', function(event) {
348
- event.preventDefault();
349
- $.ajax({
350
- type: "GET",
351
- url: <?php echo $url; ?>,
352
- data: prout
353
- });
354
- console.log('clicked');
355
- });
356
-
357
- return false;
358
-
359
- });
360
- </script>
361
-
362
- <?php
363
-
364
- }
365
-
366
- /**
367
- * Debug info.
368
- *
369
- * Display an error message commented in the admin footer.
370
- *
371
- * @since 0.1.2
372
- */
373
- public function debug_info() {
374
-
375
- $error = $this->error;
376
-
377
- echo "<!-- RDN Debug Info: $error -->";
378
-
379
- }
380
-
381
  }
1
+ <?php
2
+ /**
3
+ * Remote Dashobard Notifications.
4
+ *
5
+ * This class is part of the Remote Dashboard Notifications plugin.
6
+ * This plugin allows you to send notifications to your client's
7
+ * WordPress dashboard easily.
8
+ *
9
+ * Notification you send will be displayed as admin notifications
10
+ * using the standard WordPress hooks. A "dismiss" option is added
11
+ * in order to let the user hide the notification.
12
+ *
13
+ * @package Remote Dashboard Notifications
14
+ * @author ThemeAvenue <web@themeavenue.net>
15
+ * @license GPL-2.0+
16
+ * @link http://themeavenue.net
17
+ * @link http://wordpress.org/plugins/remote-dashboard-notifications/
18
+ * @link https://github.com/ThemeAvenue/Remote-Dashboard-Notifications
19
+ * @copyright 2014 ThemeAvenue
20
+ */
21
+
22
+ // If this file is called directly, abort.
23
+ if ( ! defined( 'WPINC' ) ) {
24
+ die;
25
+ }
26
+
27
+ class TAV_Remote_Notification_Client {
28
+
29
+ /**
30
+ * Class version.
31
+ *
32
+ * @since 0.1.0
33
+ *
34
+ * @var string
35
+ */
36
+ protected static $version = '0.1.2';
37
+
38
+ public function __construct( $channel_id = false, $channel_key = false, $server = false, $debug = false ) {
39
+
40
+ /* Don't continue during Ajax process */
41
+ if( !is_admin() || defined( 'DOING_AJAX' ) && DOING_AJAX )
42
+ return;
43
+
44
+ $this->id = intval( $channel_id );
45
+ $this->key = sanitize_key( $channel_key );
46
+ $this->server = esc_url( $server );
47
+ $this->notice = false;
48
+ $this->cache = apply_filters( 'rn_notice_caching_time', 6 );
49
+ $this->debug = $debug;
50
+ $this->error = null;
51
+
52
+ /* The plugin can't work without those 2 parameters */
53
+ if( false === ( $this->id || $this->key || $this->server ) )
54
+ return;
55
+
56
+ /* Call the dismiss method before testing for Ajax */
57
+ if( isset( $_GET['rn'] ) && isset( $_GET['notification'] ) )
58
+ add_action( 'init', array( $this, 'dismiss' ) );
59
+
60
+ add_action( 'init', array( $this, 'request_server' ) );
61
+
62
+ }
63
+
64
+ /**
65
+ * Send a request to notification server
66
+ *
67
+ * The distant WordPress notification server is
68
+ * queried using the WordPress HTTP API.
69
+ *
70
+ * @since 0.1.0
71
+ */
72
+ public function request_server() {
73
+
74
+ /* Current channel ID */
75
+ $channel_id = $this->id;
76
+
77
+ /* Current channel key */
78
+ $channel_key = $this->key;
79
+
80
+ /* Generate a unique identifyer used for the transient */
81
+ $uniqid = $channel_id . substr( $channel_key, 0, 5 );
82
+
83
+ /* Prepare the payload to send to server */
84
+ $payload = base64_encode( json_encode( array( 'channel' => $channel_id, 'key' => $channel_key ) ) );
85
+
86
+ /* Get the endpoint URL ready */
87
+ $url = add_query_arg( array( 'payload' => $payload ), $this->server );
88
+
89
+ /* Content is false at first */
90
+ $content = get_transient( "rn_last_notification_$uniqid" );
91
+
92
+ /* Set the request response to null */
93
+ $request = null;
94
+
95
+ /* If no notice is present in DB we query the server */
96
+ if( false === $content || defined( 'RDN_DEV' ) && RDN_DEV ) {
97
+
98
+ /* Query the server */
99
+ $request = wp_remote_get( $url, array( 'timeout' => apply_filters( 'rn_http_request_timeout', 5 ) ) );
100
+
101
+ /* If we have a WP_Error object we abort */
102
+ if( is_wp_error( $request ) )
103
+ return;
104
+
105
+ /* Check if we have a valid response */
106
+ if( is_array( $request ) && isset( $request['response']['code'] ) && 200 === intval( $request['response']['code'] ) ) {
107
+
108
+ /* Get the response body */
109
+ if( isset( $request['body'] ) ) {
110
+
111
+ /**
112
+ * Decode the response JSON string
113
+ */
114
+ $content = json_decode( $request['body'] );
115
+
116
+ /**
117
+ * Check if the payload is in a usable JSON format
118
+ */
119
+ if( version_compare( phpversion(), '5.3.0', '>=' ) ) {
120
+
121
+ if( ! ( json_last_error() == JSON_ERROR_NONE ) )
122
+ return false;
123
+
124
+ } else {
125
+
126
+ if( $content == NULL )
127
+ return false;
128
+
129
+ }
130
+
131
+ set_transient( "rn_last_notification_$uniqid", $content, $this->cache*60*60*5 );
132
+
133
+ }
134
+
135
+ }
136
+
137
+ }
138
+
139
+ /**
140
+ * If the JSON string has been decoded we can go ahead
141
+ */
142
+ if( is_object( $content ) ) {
143
+
144
+ if( isset( $content->error ) ) {
145
+
146
+ /* Display debug info in the admin footer */
147
+ if( true === $this->debug ) {
148
+
149
+ /* Save the error message */
150
+ $this->error = $content->error;
151
+
152
+ /* Display it commented in the footer */
153
+ add_action( 'admin_footer', array( $this, 'debug_info' ) );
154
+
155
+ }
156
+
157
+ /* Stop */
158
+ return;
159
+
160
+ }
161
+
162
+ $this->notice = $content;
163
+
164
+ /**
165
+ * Check if notice has already been dismissed
166
+ */
167
+ $dismissed = get_option( '_rn_dismissed' );
168
+
169
+ if( is_array( $dismissed ) && in_array( $content->slug, $dismissed ) )
170
+ return;
171
+
172
+ /**
173
+ * Add the notice style
174
+ */
175
+ add_action( 'admin_print_styles', array( $this, 'style' ), 100 );
176
+
177
+ /**
178
+ * Add the notice to WP dashboard
179
+ */
180
+ add_action( 'admin_notices', array( $this, 'show_notice' ) );
181
+
182
+ } else {
183
+
184
+ return false;
185
+
186
+ }
187
+
188
+ }
189
+
190
+ /**
191
+ * Display the admin notice
192
+ *
193
+ * The function will do some checks to verify if
194
+ * the notice can be displayed on the current page.
195
+ * If all the checks are passed, the notice
196
+ * is added to the page.
197
+ *
198
+ * @since 0.1.0
199
+ */
200
+ public function show_notice() {
201
+
202
+ $content = $this->notice;
203
+
204
+ /* If there is no content we abort */
205
+ if( false === $content )
206
+ return;
207
+
208
+ /* If the type array isn't empty we have a limitation */
209
+ if( isset( $content->type ) && is_array( $content->type ) && !empty( $content->type ) ) {
210
+
211
+ /* Get current post type */
212
+ $pt = get_post_type();
213
+
214
+ /**
215
+ * If the current post type can't be retrieved
216
+ * or if it's not in the allowed post types,
217
+ * then we don't display the admin notice.
218
+ */
219
+ if( false === $pt || !in_array( $pt, $content->type ) )
220
+ return;
221
+
222
+ }
223
+
224
+ /* Prepare alert class */
225
+ $style = isset( $content->style ) ? $content->style : 'updated';
226
+
227
+ if( 'updated' == $style )
228
+ $class = $style;
229
+
230
+ elseif( 'error' == $style )
231
+ $class = 'updated error';
232
+
233
+ else
234
+ $class = "updated rn-alert rn-alert-$style";
235
+
236
+ /**
237
+ * Prepare the dismiss URL
238
+ *
239
+ * @var (string) URL
240
+ * @todo get a more accurate URL of the current page
241
+ */
242
+ $args = array();
243
+ $nonce = wp_create_nonce( 'rn-dismiss' );
244
+ $slug = $content->slug;
245
+
246
+ array_push( $args, "rn=$nonce" );
247
+ array_push( $args, "notification=$slug" );
248
+
249
+ foreach( $_GET as $key => $value ) {
250
+
251
+ array_push( $args, "$key=$value" );
252
+
253
+ }
254
+
255
+ $args = implode( '&', $args );
256
+ $url = "?$args";
257
+ ?>
258
+
259
+ <div class="<?php echo $class; ?>">
260
+ <?php if( !in_array( $style, array( 'updated', 'error' ) ) ): ?><a href="<?php echo $url; ?>" id="rn-dismiss" class="rn-dismiss-btn" title="<?php _e( 'Dismiss notification', 'remote-notifications' ); ?>">&times;</a><?php endif; ?>
261
+ <p><?php echo html_entity_decode( $content->message ); ?></p>
262
+ <?php if( in_array( $style, array( 'updated', 'error' ) ) ): ?><p><a href="<?php echo $url; ?>" id="rn-dismiss" class="rn-dismiss-button button-secondary"><?php _e( 'Dismiss', 'remote-notifications' ); ?></a></p><?php endif; ?>
263
+ </div>
264
+ <?php
265
+
266
+ }
267
+
268
+ /**
269
+ * Dismiss notice
270
+ *
271
+ * When the user dismisses a notice, its slug
272
+ * is added to the _rn_dismissed entry in the DB options table.
273
+ * This entry is then used to check if a notie has been dismissed
274
+ * before displaying it on the dashboard.
275
+ *
276
+ * @since 0.1.0
277
+ */
278
+ public function dismiss() {
279
+
280
+ /* Check if we have all the vars */
281
+ if( !isset( $_GET['rn'] ) || !isset( $_GET['notification'] ) )
282
+ return;
283
+
284
+ /* Validate nonce */
285
+ if( !wp_verify_nonce( sanitize_key( $_GET['rn'] ), 'rn-dismiss' ) )
286
+ return;
287
+
288
+ /* Get dismissed list */
289
+ $dismissed = get_option( '_rn_dismissed', array() );
290
+
291
+ /* Add the current notice to the list if needed */
292
+ if( is_array( $dismissed ) && !in_array( $_GET['notification'], $dismissed ) )
293
+ array_push( $dismissed, $_GET['notification'] );
294
+
295
+ /* Update option */
296
+ update_option( '_rn_dismissed', $dismissed );
297
+
298
+ /* Get redirect URL */
299
+ $args = array();
300
+
301
+ /* Get URL args */
302
+ foreach( $_GET as $key => $value ) {
303
+
304
+ if( in_array( $key, array( 'rn', 'notification' ) ) )
305
+ continue;
306
+
307
+ array_push( $args, "$key=$value" );
308
+
309
+ }
310
+
311
+ $args = implode( '&', $args );
312
+ $url = "?$args";
313
+
314
+ /* Redirect */
315
+ wp_redirect( $url );
316
+
317
+ }
318
+
319
+ /**
320
+ * Adds inline style for non standard notices
321
+ *
322
+ * This function will only be called if the notice style is not standard.
323
+ *
324
+ * @since 0.1.0
325
+ */
326
+ public function style() { ?>
327
+
328
+ <style type="text/css">div.rn-alert{padding:15px;padding-right:35px;margin-bottom:20px;border:1px solid transparent;-webkit-box-shadow:none;box-shadow:none}div.rn-alert p:empty{display:none}div.rn-alert ul,div.rn-alert ul li,div.rn-alert ol,div.rn-alert ol li{list-style:inherit !important}div.rn-alert ul,div.rn-alert ol{padding-left:30px}div.rn-alert hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0;margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}div.rn-alert h1,h2,h3,h4,h5,h6{margin-top:0;color:inherit}div.rn-alert a{font-weight:700}div.rn-alert a:hover{text-decoration:underline}div.rn-alert>p{margin:0;padding:0;line-height:1}div.rn-alert>p,div.rn-alert>ul{margin-bottom:0}div.rn-alert>p+p{margin-top:5px}div.rn-alert .rn-dismiss-btn{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;position:relative;top:-2px;right:-21px;padding:0;cursor:pointer;background:0;border:0;-webkit-appearance:none;float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20);text-decoration:none}div.rn-alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}div.rn-alert-success hr{border-top-color:#c9e2b3}div.rn-alert-success a{color:#2b542c}div.rn-alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}div.rn-alert-info hr{border-top-color:#a6e1ec}div.rn-alert-info a{color:#245269}div.rn-alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}div.rn-alert-warning hr{border-top-color:#f7e1b5}div.rn-alert-warning a{color:#66512c}div.rn-alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}div.rn-alert-danger hr{border-top-color:#e4b9c0}div.rn-alert-danger a{color:#843534}</style>
329
+
330
+ <?php }
331
+
332
+ /**
333
+ * Dismiss notice using Ajax
334
+ *
335
+ * This function is NOT used. Testing only.
336
+ */
337
+ public function script() {
338
+
339
+ $url = admin_url();
340
+ ?>
341
+
342
+ <script type="text/javascript">
343
+ jQuery(document).ready(function($) {
344
+
345
+ var prout = 'prout';
346
+
347
+ $('#rn-dismiss').on('click', function(event) {
348
+ event.preventDefault();
349
+ $.ajax({
350
+ type: "GET",
351
+ url: <?php echo $url; ?>,
352
+ data: prout
353
+ });
354
+ console.log('clicked');
355
+ });
356
+
357
+ return false;
358
+
359
+ });
360
+ </script>
361
+
362
+ <?php
363
+
364
+ }
365
+
366
+ /**
367
+ * Debug info.
368
+ *
369
+ * Display an error message commented in the admin footer.
370
+ *
371
+ * @since 0.1.2
372
+ */
373
+ public function debug_info() {
374
+
375
+ $error = $this->error;
376
+
377
+ echo "<!-- RDN Debug Info: $error -->";
378
+
379
+ }
380
+
381
  }
inc/config.php CHANGED
@@ -1,868 +1,436 @@
1
- <?php
2
- define("CURRENTURL", top_current_page());
3
- define("CWP_TEXTDOMAIN", "tweet-old-post");
4
-
5
- if(class_exists("CWP_TOP_Core_PRO")){
6
- define("CWP_TOP_PRO", TRUE);
7
- }else{
8
- define("CWP_TOP_PRO", FALSE);
9
- }
10
- // Settings Array
11
- $cwp_top_settings = array(
12
- 'name' => "Revive Old Post",
13
- 'slug' => "TweetOldPost",
14
- 'oAuth_settings' => array( // Based on TOP Dev Application settings.
15
- 'oauth_access_token' => "2256465193-KDpAFIYfxpWugX2OU025b1CPs3WB0RJpgA4Gd4h",
16
- 'oauth_access_token_secret' => "abx4Er8qEJ4jI7XDW8a90obzgy8cEtovPXCUNSjmwlpb9",
17
- 'consumer_key' => "ofaYongByVpa3NDEbXa2g",
18
- 'consumer_secret' => "vTzszlMujMZCY3mVtTE6WovUKQxqv3LVgiVku276M"
19
- )
20
- );
21
- $cwp_rop_remote_trigger_url = "http://portal.themeisle.com/remote_trigger";
22
- $cwp_top_global_schedule = array();
23
- define("CWP_TOP_PRO_STRING",'<span class="cwp-pro-string">'.__("This is only available in the",CWP_TEXTDOMAIN)."<a href='https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=imagepro&utm_medium=link&utm_campaign=top&upgrade=true' target='_blank'> ".__("PRO version")."</a></span>");
24
-
25
-
26
- $cwp_top_networks = array(
27
- "twitter"=>array(
28
-
29
- 'tweet-content' => array(
30
- 'id' => '1',
31
- 'name' => __('Post Content', CWP_TEXTDOMAIN),
32
- 'type' => 'select',
33
- 'slug' => 'tweet-content',
34
- 'option' => 'top_opt_tweet_type',
35
- 'description' => __('What do you want to share?', CWP_TEXTDOMAIN),
36
- 'options' => array(
37
- 'title' => __('Title Only', CWP_TEXTDOMAIN),
38
- 'body' => __('Body Only', CWP_TEXTDOMAIN),
39
- 'titlenbody' => __('Title & Body', CWP_TEXTDOMAIN),
40
- 'custom-field' => __('Custom Field', CWP_TEXTDOMAIN)
41
- )
42
- ),
43
- 'top_opt_tweet_length' => array(
44
- 'id' => '1',
45
- 'name' => __('Length', CWP_TEXTDOMAIN),
46
- 'type' => 'number',
47
- 'slug' => 'tweet-length',
48
- 'option' => 'top_opt_tweet_length',
49
- 'description' => __('The length of the tweet', CWP_TEXTDOMAIN),
50
- 'max-length' => 140,
51
- 'default_value' =>140
52
- ),
53
-
54
- 'tweet-content-field' => array(
55
- 'id' => '2',
56
- 'name' => __('Post Content Custom Field', CWP_TEXTDOMAIN),
57
- 'type' => 'text',
58
- 'slug' => 'tweet-content-field',
59
- 'option' => 'top_opt_tweet_type_custom_field',
60
- 'description' => __('Which custom field do you want to fetch info from?', CWP_TEXTDOMAIN),
61
- 'options' => array()
62
- ),
63
-
64
- 'additional-text' => array(
65
- 'id' => '3',
66
- 'name' => __('Additional Text', CWP_TEXTDOMAIN),
67
- 'type' => 'text',
68
- 'slug' => 'additional-text',
69
- 'option' => 'top_opt_add_text',
70
- 'description' => __('Text added to your auto posts', CWP_TEXTDOMAIN),
71
- 'options' => array()
72
- ),
73
-
74
- 'additional-text-at' => array(
75
- 'id' => '4',
76
- 'name' => __('Additional Text At', CWP_TEXTDOMAIN),
77
- 'type' => 'select',
78
- 'slug' => 'additional-text-at',
79
- 'option' => 'top_opt_add_text_at',
80
- 'description' => __('Where do you want the text to be added?', CWP_TEXTDOMAIN),
81
- 'options' => array(
82
- 'beginning' => __('Beginning of Post', CWP_TEXTDOMAIN),
83
- 'end' => __('End of Post', CWP_TEXTDOMAIN)
84
- )
85
- ),
86
-
87
- 'include-link' => array(
88
- 'id' => '5',
89
- 'name' => __('Include Link', CWP_TEXTDOMAIN),
90
- 'type' => 'select',
91
- 'slug' => 'include-link',
92
- 'option' => 'top_opt_include_link',
93
- 'description' => __('Include a link to your post?', CWP_TEXTDOMAIN),
94
- 'options' => array(
95
- 'true' => __('Yes', CWP_TEXTDOMAIN),
96
- 'false' => __('No', CWP_TEXTDOMAIN)
97
- ),
98
- 'dependency'=> array(
99
- "url-from-custom-field"=>"true",
100
- "use-url-shortner"=>"true",
101
- )
102
-
103
-
104
- ),
105
-
106
- 'url-from-custom-field' => array(
107
- 'id' => '6',
108
- 'name' => __('Fetch URL From Custom Field', CWP_TEXTDOMAIN),
109
- 'type' => 'checkbox',
110
- 'slug' => 'url-from-custom-field',
111
- 'option' => 'top_opt_custom_url_option',
112
- 'description' => __('URL will be fetched from a custom field.', CWP_TEXTDOMAIN),
113
- 'options' => '',
114
- 'dependency'=> array(
115
- "custom-field-url"=>"true"
116
- )
117
- ),
118
-
119
- 'custom-field-url' => array(
120
- 'id' => '7',
121
- 'name' => __('URL Custom Field', CWP_TEXTDOMAIN),
122
- 'type' => 'text',
123
- 'slug' => 'custom-field-url',
124
- 'option' => 'top_opt_custom_url_field',
125
- 'description' => __('URL will be fetched from the specified custom field.', CWP_TEXTDOMAIN),
126
- 'options' => array()
127
- ),
128
-
129
- 'use-url-shortner' => array(
130
- 'id' => '8',
131
- 'name' => __('Use URL Shortner', CWP_TEXTDOMAIN),
132
- 'type' => 'checkbox',
133
- 'slug' => 'use-url-shortner',
134
- 'option' => 'top_opt_use_url_shortner',
135
- 'description' => '',
136
- 'options' => '',
137
- 'dependency'=> array(
138
- "url-shortner"=>"true"
139
- )
140
- ),
141
-
142
-
143
-
144
- 'url-shortner' => array(
145
- 'id' => '9',
146
- 'name' => __('URL Shortner Service', CWP_TEXTDOMAIN),
147
- 'type' => 'select',
148
- 'slug' => 'url-shortner',
149
- 'option' => 'top_opt_url_shortner',
150
- 'description' => __('Shorten the link to your post.', CWP_TEXTDOMAIN),
151
- 'options' => array(
152
- 'wp_short_url' => __('wp short url', CWP_TEXTDOMAIN),
153
- //'t.co' => __('t.co', CWP_TEXTDOMAIN),
154
- 'is.gd' => __('is.gd', CWP_TEXTDOMAIN),
155
- 'bit.ly' => __('bit.ly', CWP_TEXTDOMAIN),
156
- //'tr.im' => __('tr.im', CWP_TEXTDOMAIN),
157
- //'3.ly' => __('3.ly', CWP_TEXTDOMAIN),
158
- //'u.nu' => __('u.nu', CWP_TEXTDOMAIN),
159
- //'1click.at' => __('1click.at', CWP_TEXTDOMAIN),
160
- //'tinyurl' => __('TinyUrl', CWP_TEXTDOMAIN)
161
-
162
- ),
163
- 'dependency'=> array(
164
- "bitly-key"=>"bit.ly",
165
- "bitly-user"=>"bit.ly"
166
- )
167
- ),
168
-
169
- 'bitly-key' => array(
170
- 'id' => '22',
171
- 'name' => __('Bitly Key', CWP_TEXTDOMAIN),
172
- 'type' => 'text',
173
- 'slug' => 'bitly-key',
174
- 'option' => 'top_opt_bitly_key',
175
- 'description' => '',
176
- 'options' => '',
177
- ),
178
-
179
- 'bitly-user' => array(
180
- 'id' => '23',
181
- 'name' => __('Bitly User', CWP_TEXTDOMAIN),
182
- 'type' => 'text',
183
- 'slug' => 'bitly-user',
184
- 'option' => 'top_opt_bitly_user',
185
- 'description' => '',
186
- 'options' => '',
187
- ),
188
-
189
- 'custom-hashtag-option' => array(
190
- 'id' => '10',
191
- 'name' => __('Hashtags', CWP_TEXTDOMAIN),
192
- 'type' => 'select',
193
- 'slug' => 'custom-hashtag-option',
194
- 'option' => 'top_opt_custom_hashtag_option',
195
- 'description' => __('Include #hashtags in your auto posts?', CWP_TEXTDOMAIN),
196
- 'options' => array(
197
- 'nohashtag' => __('Don\'t add any hashtags', CWP_TEXTDOMAIN),
198
- 'common' => __('Common hashtags for all shares', CWP_TEXTDOMAIN),
199
- 'categories'=> __('Create hashtags from Categories', CWP_TEXTDOMAIN),
200
- 'tags' => __('Create hashtags from Tags', CWP_TEXTDOMAIN),
201
- 'custom' => __('Create hashtags from Custom Fields', CWP_TEXTDOMAIN)
202
- ),
203
- 'dependency'=> array(
204
- "common-hashtags" =>"common",
205
- "hashtags-length" =>"common,categories,tags,custom",
206
- "common-hashtags" =>"common",
207
- "custom-hashtag-field"=>"custom"
208
- )
209
- ),
210
-
211
- 'common-hashtags' => array(
212
- 'id' => '11',
213
- 'name' => __('Common Hashtags', CWP_TEXTDOMAIN),
214
- 'type' => 'text',
215
- 'slug' => 'common-hashtags',
216
- 'option' => 'top_opt_hashtags',
217
- 'description' => __('Specify which hashtags you want to be used. eg. #example, #example2', CWP_TEXTDOMAIN),
218
- 'options' => array()
219
- ),
220
-
221
- 'hashtags-length' => array(
222
- 'id' => '12',
223
- 'name' => __('Maximum Hashtags Length', CWP_TEXTDOMAIN),
224
- 'type' => 'text',
225
- 'slug' => 'hashtags-length',
226
- 'option' => 'top_opt_hashtag_length',
227
- 'description' => __('Set to 0 (characters) to include all.', CWP_TEXTDOMAIN),
228
- 'options' => array()
229
- ),
230
-
231
- 'custom-hashtag-field' => array(
232
- 'id' => '13',
233
- 'name' => __('Hashtag Custom Field', CWP_TEXTDOMAIN),
234
- 'type' => 'text',
235
- 'slug' => 'custom-hashtag-field',
236
- 'option' => 'top_opt_custom_hashtag_field',
237
- 'description' => __('Fetch hashtags from specified custom field', CWP_TEXTDOMAIN),
238
- 'options' => array()
239
-
240
- )
241
- ,
242
- 'use-image' => array(
243
- 'id' => '24',
244
- 'name' => __('Post with Image', CWP_TEXTDOMAIN),
245
- 'type' => 'checkbox',
246
- 'slug' => 'post-with-image',
247
- 'option' => 'top_opt_post_with_image',
248
- 'description' => __('Check if you want to add the post featured image to the share', CWP_TEXTDOMAIN),
249
- 'options' => array(),
250
- "available_pro" => "yes"
251
- )
252
- ),
253
- "facebook"=>array(
254
- 'tweet-content' => array(
255
- 'id' => '1',
256
- 'name' => __('Post Content', CWP_TEXTDOMAIN),
257
- 'type' => 'select',
258
- 'slug' => 'tweet-content',
259
- 'option' => 'top_opt_tweet_type',
260
- 'description' => __('What do you want to share?', CWP_TEXTDOMAIN),
261
- 'options' => array(
262
- 'title' => __('Title Only', CWP_TEXTDOMAIN),
263
- 'body' => __('Body Only', CWP_TEXTDOMAIN),
264
- 'titlenbody' => __('Title & Body', CWP_TEXTDOMAIN),
265
- 'custom-field' => __('Custom Field', CWP_TEXTDOMAIN)
266
- )
267
- ),
268
- 'top_opt_tweet_length' => array(
269
- 'id' => '1',
270
- 'name' => __('Length', CWP_TEXTDOMAIN),
271
- 'type' => 'number',
272
- 'slug' => 'tweet-length',
273
- 'option' => 'top_opt_tweet_length',
274
- 'description' => __('The length of the tweet', CWP_TEXTDOMAIN),
275
- 'max-length' => 1000,
276
- 'default_value' =>1000
277
- ),
278
-
279
- 'tweet-content-field' => array(
280
- 'id' => '2',
281
- 'name' => __('Post Content Custom Field', CWP_TEXTDOMAIN),
282
- 'type' => 'text',
283
- 'slug' => 'tweet-content-field',
284
- 'option' => 'top_opt_tweet_type_custom_field',
285
- 'description' => __('Which custom field do you want to fetch info from?', CWP_TEXTDOMAIN),
286
- 'options' => array()
287
- ),
288
-
289
- 'additional-text' => array(
290
- 'id' => '3',
291
- 'name' => __('Additional Text', CWP_TEXTDOMAIN),
292
- 'type' => 'text',
293
- 'slug' => 'additional-text',
294
- 'option' => 'top_opt_add_text',
295
- 'description' => __('Text added to your auto posts', CWP_TEXTDOMAIN),
296
- 'options' => array()
297
- ),
298
-
299
- 'additional-text-at' => array(
300
- 'id' => '4',
301
- 'name' => __('Additional Text At', CWP_TEXTDOMAIN),
302
- 'type' => 'select',
303
- 'slug' => 'additional-text-at',
304
- 'option' => 'top_opt_add_text_at',
305
- 'description' => __('Where do you want the text to be added?', CWP_TEXTDOMAIN),
306
- 'options' => array(
307
- 'beginning' => __('Beginning of Post', CWP_TEXTDOMAIN),
308
- 'end' => __('End of Post', CWP_TEXTDOMAIN)
309
- )
310
- ),
311
-
312
- 'include-link' => array(
313
- 'id' => '5',
314
- 'name' => __('Include Link', CWP_TEXTDOMAIN),
315
- 'type' => 'select',
316
- 'slug' => 'include-link',
317
- 'option' => 'top_opt_include_link',
318
- 'description' => __('Include a link to your post?', CWP_TEXTDOMAIN),
319
- 'options' => array(
320
- 'true' => __('Yes', CWP_TEXTDOMAIN),
321
- 'false' => __('No', CWP_TEXTDOMAIN)
322
- ),
323
- 'dependency'=> array(
324
- "url-from-custom-field"=>"true",
325
- "use-url-shortner"=>"true",
326
- )
327
-
328
-
329
- ),
330
-
331
- 'url-from-custom-field' => array(
332
- 'id' => '6',
333
- 'name' => __('Fetch URL From Custom Field', CWP_TEXTDOMAIN),
334
- 'type' => 'checkbox',
335
- 'slug' => 'url-from-custom-field',
336
- 'option' => 'top_opt_custom_url_option',
337
- 'description' => __('URL will be fetched from a custom field.', CWP_TEXTDOMAIN),
338
- 'options' => '',
339
- 'dependency'=> array(
340
- "custom-field-url"=>"true"
341
- )
342
- ),
343
-
344
- 'custom-field-url' => array(
345
- 'id' => '7',
346
- 'name' => __('URL Custom Field', CWP_TEXTDOMAIN),
347
- 'type' => 'text',
348
- 'slug' => 'custom-field-url',
349
- 'option' => 'top_opt_custom_url_field',
350
- 'description' => __('URL will be fetched from the specified custom field.', CWP_TEXTDOMAIN),
351
- 'options' => array()
352
- ),
353
-
354
- 'use-url-shortner' => array(
355
- 'id' => '8',
356
- 'name' => __('Use URL Shortner', CWP_TEXTDOMAIN),
357
- 'type' => 'checkbox',
358
- 'slug' => 'use-url-shortner',
359
- 'option' => 'top_opt_use_url_shortner',
360
- 'description' => '',
361
- 'options' => '',
362
- 'dependency'=> array(
363
- "url-shortner"=>"true"
364
- )
365
- ),
366
-
367
-
368
-
369
- 'url-shortner' => array(
370
- 'id' => '9',
371
- 'name' => __('URL Shortner Service', CWP_TEXTDOMAIN),
372
- 'type' => 'select',
373
- 'slug' => 'url-shortner',
374
- 'option' => 'top_opt_url_shortner',
375
- 'description' => __('Shorten the link to your post.', CWP_TEXTDOMAIN),
376
- 'options' => array(
377
- 'wp_short_url' => __('wp short url', CWP_TEXTDOMAIN),
378
- //'t.co' => __('t.co', CWP_TEXTDOMAIN),
379
- 'is.gd' => __('is.gd', CWP_TEXTDOMAIN),
380
- 'bit.ly' => __('bit.ly', CWP_TEXTDOMAIN),
381
- //'tr.im' => __('tr.im', CWP_TEXTDOMAIN),
382
- //'3.ly' => __('3.ly', CWP_TEXTDOMAIN),
383
- //'u.nu' => __('u.nu', CWP_TEXTDOMAIN),
384
- //'1click.at' => __('1click.at', CWP_TEXTDOMAIN),
385
- //'tinyurl' => __('TinyUrl', CWP_TEXTDOMAIN)
386
-
387
- ),
388
- 'dependency'=> array(
389
- "bitly-key"=>"bit.ly",
390
- "bitly-user"=>"bit.ly"
391
- )
392
- ),
393
-
394
- 'bitly-key' => array(
395
- 'id' => '22',
396
- 'name' => __('Bitly Key', CWP_TEXTDOMAIN),
397
- 'type' => 'text',
398
- 'slug' => 'bitly-key',
399
- 'option' => 'top_opt_bitly_key',
400
- 'description' => '',
401
- 'options' => '',
402
- ),
403
-
404
- 'bitly-user' => array(
405
- 'id' => '23',
406
- 'name' => __('Bitly User', CWP_TEXTDOMAIN),
407
- 'type' => 'text',
408
- 'slug' => 'bitly-user',
409
- 'option' => 'top_opt_bitly_user',
410
- 'description' => '',
411
- 'options' => '',
412
- ),
413
-
414
- 'custom-hashtag-option' => array(
415
- 'id' => '10',
416
- 'name' => __('Hashtags', CWP_TEXTDOMAIN),
417
- 'type' => 'select',
418
- 'slug' => 'custom-hashtag-option',
419
- 'option' => 'top_opt_custom_hashtag_option',
420
- 'description' => __('Include #hashtags in your auto posts?', CWP_TEXTDOMAIN),
421
- 'options' => array(
422
- 'nohashtag' => __('Don\'t add any hashtags', CWP_TEXTDOMAIN),
423
- 'common' => __('Common hashtags for all shares', CWP_TEXTDOMAIN),
424
- 'categories'=> __('Create hashtags from Categories', CWP_TEXTDOMAIN),
425
- 'tags' => __('Create hashtags from Tags', CWP_TEXTDOMAIN),
426
- 'custom' => __('Create hashtags from Custom Fields', CWP_TEXTDOMAIN)
427
- ),
428
- 'dependency'=> array(
429
- "common-hashtags" =>"common",
430
- "hashtags-length" =>"common,categories,tags,custom",
431
- "common-hashtags" =>"common",
432
- "custom-hashtag-field"=>"custom"
433
- )
434
- ),
435
-
436
- 'common-hashtags' => array(
437
- 'id' => '11',
438
- 'name' => __('Common Hashtags', CWP_TEXTDOMAIN),
439
- 'type' => 'text',
440
- 'slug' => 'common-hashtags',
441
- 'option' => 'top_opt_hashtags',
442
- 'description' => __('Specify which hashtags you want to be used. eg. #example, #example2', CWP_TEXTDOMAIN),
443
- 'options' => array()
444
- ),
445
-
446
- 'hashtags-length' => array(
447
- 'id' => '12',
448
- 'name' => __('Maximum Hashtags Length', CWP_TEXTDOMAIN),
449
- 'type' => 'text',
450
- 'slug' => 'hashtags-length',
451
- 'option' => 'top_opt_hashtag_length',
452
- 'description' => __('Set to 0 (characters) to include all.', CWP_TEXTDOMAIN),
453
- 'options' => array()
454
- ),
455
-
456
- 'custom-hashtag-field' => array(
457
- 'id' => '13',
458
- 'name' => __('Hashtag Custom Field', CWP_TEXTDOMAIN),
459
- 'type' => 'text',
460
- 'slug' => 'custom-hashtag-field',
461
- 'option' => 'top_opt_custom_hashtag_field',
462
- 'description' => __('Fetch hashtags from specified custom field', CWP_TEXTDOMAIN),
463
- 'options' => array()
464
- ),
465
- 'use-image' => array(
466
- 'id' => '24',
467
- 'name' => __('Post with Image', CWP_TEXTDOMAIN),
468
- 'type' => 'checkbox',
469
- 'slug' => 'post-with-image',
470
- 'option' => 'top_opt_post_with_image',
471
- 'description' => __('Check if you want to add the post featured image to the share', CWP_TEXTDOMAIN),
472
- 'options' => array(),
473
- "available_pro" => "yes"
474
- )
475
- ),
476
- "linkedin"=>array(
477
- 'tweet-content' => array(
478
- 'id' => '1',
479
- 'name' => __('Post Content', CWP_TEXTDOMAIN),
480
- 'type' => 'select',
481
- 'slug' => 'tweet-content',
482
- 'option' => 'top_opt_tweet_type',
483
- 'description' => __('What do you want to share?', CWP_TEXTDOMAIN),
484
- 'options' => array(
485
- 'title' => __('Title Only', CWP_TEXTDOMAIN),
486
- 'body' => __('Body Only', CWP_TEXTDOMAIN),
487
- 'titlenbody' => __('Title & Body', CWP_TEXTDOMAIN),
488
- 'custom-field' => __('Custom Field', CWP_TEXTDOMAIN)
489
- ),
490
- "available_pro" => "yes"
491
- ),
492
- 'top_opt_tweet_length' => array(
493
- 'id' => '1',
494
- 'name' => __('Length', CWP_TEXTDOMAIN),
495
- 'type' => 'number',
496
- 'slug' => 'tweet-length',
497
- 'option' => 'top_opt_tweet_length',
498
- 'description' => __('The length of the tweet', CWP_TEXTDOMAIN),
499
- 'max-length' => 256,
500
- 'default_value' =>256,
501
- "available_pro" => "yes"
502
- ),
503
-
504
- 'tweet-content-field' => array(
505
- 'id' => '2',
506
- 'name' => __('Post Content Custom Field', CWP_TEXTDOMAIN),
507
- 'type' => 'text',
508
- 'slug' => 'tweet-content-field',
509
- 'option' => 'top_opt_tweet_type_custom_field',
510
- 'description' => __('Which custom field do you want to fetch info from?', CWP_TEXTDOMAIN),
511
- 'options' => array(),
512
- "available_pro" => "yes"
513
- ),
514
-
515
- 'additional-text' => array(
516
- 'id' => '3',
517
- 'name' => __('Additional Text', CWP_TEXTDOMAIN),
518
- 'type' => 'text',
519
- 'slug' => 'additional-text',
520
- 'option' => 'top_opt_add_text',
521
- 'description' => __('Text added to your auto posts', CWP_TEXTDOMAIN),
522
- 'options' => array(),
523
- "available_pro" => "yes"
524
- ),
525
-
526
- 'additional-text-at' => array(
527
- 'id' => '4',
528
- 'name' => __('Additional Text At', CWP_TEXTDOMAIN),
529
- 'type' => 'select',
530
- 'slug' => 'additional-text-at',
531
- 'option' => 'top_opt_add_text_at',
532
- 'description' => __('Where do you want the text to be added?', CWP_TEXTDOMAIN),
533
- 'options' => array(
534
- 'beginning' => __('Beginning of Post', CWP_TEXTDOMAIN),
535
- 'end' => __('End of Post', CWP_TEXTDOMAIN)
536
- ),
537
- "available_pro" => "yes"
538
- ),
539
-
540
- 'include-link' => array(
541
- 'id' => '5',
542
- 'name' => __('Include Link', CWP_TEXTDOMAIN),
543
- 'type' => 'select',
544
- 'slug' => 'include-link',
545
- 'option' => 'top_opt_include_link',
546
- 'description' => __('Include a link to your post?', CWP_TEXTDOMAIN),
547
- 'options' => array(
548
- 'true' => __('Yes', CWP_TEXTDOMAIN),
549
- 'false' => __('No', CWP_TEXTDOMAIN)
550
- ),
551
- 'dependency'=> array(
552
- "url-from-custom-field"=>"true",
553
- "use-url-shortner"=>"true",
554
- ),
555
- "available_pro" => "yes"
556
-
557
-
558
- ),
559
-
560
- 'url-from-custom-field' => array(
561
- 'id' => '6',
562
- 'name' => __('Fetch URL From Custom Field', CWP_TEXTDOMAIN),
563
- 'type' => 'checkbox',
564
- 'slug' => 'url-from-custom-field',
565
- 'option' => 'top_opt_custom_url_option',
566
- 'description' => __('URL will be fetched from a custom field.', CWP_TEXTDOMAIN),
567
- 'options' => '',
568
- 'dependency'=> array(
569
- "custom-field-url"=>"true"
570
- ),
571
- "available_pro" => "yes"
572
- ),
573
-
574
- 'custom-field-url' => array(
575
- 'id' => '7',
576
- 'name' => __('URL Custom Field', CWP_TEXTDOMAIN),
577
- 'type' => 'text',
578
- 'slug' => 'custom-field-url',
579
- 'option' => 'top_opt_custom_url_field',
580
- 'description' => __('URL will be fetched from the specified custom field.', CWP_TEXTDOMAIN),
581
- 'options' => array(),
582
- "available_pro" => "yes"
583
- ),
584
-
585
- 'use-url-shortner' => array(
586
- 'id' => '8',
587
- 'name' => __('Use URL Shortner', CWP_TEXTDOMAIN),
588
- 'type' => 'checkbox',
589
- 'slug' => 'use-url-shortner',
590
- 'option' => 'top_opt_use_url_shortner',
591
- 'description' => '',
592
- 'options' => '',
593
- 'dependency'=> array(
594
- "url-shortner"=>"true"
595
- ),
596
- "available_pro" => "yes"
597
- ),
598
-
599
-
600
-
601
- 'url-shortner' => array(
602
- 'id' => '9',
603
- 'name' => __('URL Shortner Service', CWP_TEXTDOMAIN),
604
- 'type' => 'select',
605
- 'slug' => 'url-shortner',
606
- 'option' => 'top_opt_url_shortner',
607
- 'description' => __('Shorten the link to your post.', CWP_TEXTDOMAIN),
608
- 'options' => array(
609
- 'wp_short_url' => __('wp short url', CWP_TEXTDOMAIN),
610
- //'t.co' => __('t.co', CWP_TEXTDOMAIN),
611
- 'is.gd' => __('is.gd', CWP_TEXTDOMAIN),
612
- 'bit.ly' => __('bit.ly', CWP_TEXTDOMAIN),
613
- //'tr.im' => __('tr.im', CWP_TEXTDOMAIN),
614
- //'3.ly' => __('3.ly', CWP_TEXTDOMAIN),
615
- //'u.nu' => __('u.nu', CWP_TEXTDOMAIN),
616
- //'1click.at' => __('1click.at', CWP_TEXTDOMAIN),
617
- //'tinyurl' => __('TinyUrl', CWP_TEXTDOMAIN)
618
-
619
- ),
620
- 'dependency'=> array(
621
- "bitly-key"=>"bit.ly",
622
- "bitly-user"=>"bit.ly"
623
- ),
624
- "available_pro" => "yes"
625
- ),
626
-
627
- 'bitly-key' => array(
628
- 'id' => '22',
629
- 'name' => __('Bitly Key', CWP_TEXTDOMAIN),
630
- 'type' => 'text',
631
- 'slug' => 'bitly-key',
632
- 'option' => 'top_opt_bitly_key',
633
- 'description' => '',
634
- 'options' => '',
635
- "available_pro" => "yes"
636
- ),
637
-
638
- 'bitly-user' => array(
639
- 'id' => '23',
640
- 'name' => __('Bitly User', CWP_TEXTDOMAIN),
641
- 'type' => 'text',
642
- 'slug' => 'bitly-user',
643
- 'option' => 'top_opt_bitly_user',
644
- 'description' => '',
645
- 'options' => '',
646
- "available_pro" => "yes"
647
- ),
648
-
649
- 'custom-hashtag-option' => array(
650
- 'id' => '10',
651
- 'name' => __('Hashtags', CWP_TEXTDOMAIN),
652
- 'type' => 'select',
653
- 'slug' => 'custom-hashtag-option',
654
- 'option' => 'top_opt_custom_hashtag_option',
655
- 'description' => __('Include #hashtags in your auto posts?', CWP_TEXTDOMAIN),
656
- 'options' => array(
657
- 'nohashtag' => __('Don\'t add any hashtags', CWP_TEXTDOMAIN),
658
- 'common' => __('Common hashtags for all shares', CWP_TEXTDOMAIN),
659
- 'categories'=> __('Create hashtags from Categories', CWP_TEXTDOMAIN),
660
- 'tags' => __('Create hashtags from Tags', CWP_TEXTDOMAIN),
661
- 'custom' => __('Create hashtags from Custom Fields', CWP_TEXTDOMAIN)
662
- ),
663
- 'dependency'=> array(
664
- "common-hashtags" =>"common",
665
- "hashtags-length" =>"common,categories,tags,custom",
666
- "common-hashtags" =>"common",
667
- "custom-hashtag-field"=>"custom"
668
- ),
669
- "available_pro" => "yes"
670
- ),
671
-
672
- 'common-hashtags' => array(
673
- 'id' => '11',
674
- 'name' => __('Common Hashtags', CWP_TEXTDOMAIN),
675
- 'type' => 'text',
676
- 'slug' => 'common-hashtags',
677
- 'option' => 'top_opt_hashtags',
678
- 'description' => __('Specify which hashtags you want to be used. eg. #example, #example2', CWP_TEXTDOMAIN),
679
- 'options' => array(),
680
- "available_pro" => "yes"
681
- ),
682
-
683
- 'hashtags-length' => array(
684
- 'id' => '12',
685
- 'name' => __('Maximum Hashtags Length', CWP_TEXTDOMAIN),
686
- 'type' => 'text',
687
- 'slug' => 'hashtags-length',
688
- 'option' => 'top_opt_hashtag_length',
689
- 'description' => __('Set to 0 (characters) to include all.', CWP_TEXTDOMAIN),
690
- 'options' => array(),
691
- "available_pro" => "yes"
692
- ),
693
-
694
- 'custom-hashtag-field' => array(
695
- 'id' => '13',
696
- 'name' => __('Hashtag Custom Field', CWP_TEXTDOMAIN),
697
- 'type' => 'text',
698
- 'slug' => 'custom-hashtag-field',
699
- 'option' => 'top_opt_custom_hashtag_field',
700
- 'description' => __('Fetch hashtags from specified custom field', CWP_TEXTDOMAIN),
701
- 'options' => array(),
702
- "available_pro" => "yes"
703
- ),
704
- 'use-image' => array(
705
- 'id' => '24',
706
- 'name' => __('Post with Image', CWP_TEXTDOMAIN),
707
- 'type' => 'checkbox',
708
- 'slug' => 'post-with-image',
709
- 'option' => 'top_opt_post_with_image',
710
- 'description' => __('Check if you want to add the post featured image to the share', CWP_TEXTDOMAIN),
711
- 'options' => array(),
712
- "available_pro" => "yes",
713
- "available_pro" => "yes"
714
- )
715
- )
716
- );
717
-
718
- $cwp_top_fields = array(
719
-
720
-
721
- 'interval' => array(
722
- 'id' => '14',
723
- 'name' => __('Minimum interval between shares', CWP_TEXTDOMAIN),
724
- 'type' => 'text',
725
- 'slug' => 'interval',
726
- 'option' => 'top_opt_interval',
727
- "available_pro" =>"no",
728
- 'description' => __('Minimum time between shares (Hour/Hours), 0.4 can be used also.', CWP_TEXTDOMAIN),
729
- 'options' => array()
730
- ),
731
-
732
- 'age-limit' => array(
733
- 'id' => '15',
734
- 'name' => __('Minimum age of post to be eligible for sharing', CWP_TEXTDOMAIN),
735
- 'type' => 'text',
736
- 'slug' => 'age-limit',
737
- 'option' => 'top_opt_age_limit',
738
- 'description' => __('Day/Days - 0 for Disabled', CWP_TEXTDOMAIN),
739
- 'options' => array()
740
- ),
741
-
742
- 'max-age-limit' => array(
743
- 'id' => '16',
744
- 'name' => __('Maximum age of post to be eligible for sharing', CWP_TEXTDOMAIN),
745
- 'type' => 'text',
746
- 'slug' => 'max-age-limit',
747
- 'option' => 'top_opt_max_age_limit',
748
- 'description' => __('Day/Days - 0 for Disabled', CWP_TEXTDOMAIN),
749
- 'options' => array()
750
- ),
751
-
752
- 'no-of-tweet' => array(
753
- 'id' => '17',
754
- 'name' => __('Number of Posts to share', CWP_TEXTDOMAIN),
755
- 'type' => 'text',
756
- 'slug' => 'no-of-tweet',
757
- 'option' => 'top_opt_no_of_tweet',
758
- 'description' => __('Number of posts to share each time', CWP_TEXTDOMAIN),
759
- 'options' => array()
760
- ),
761
-
762
-
763
-
764
-
765
- 'tweet-multiple-times' => array(
766
- 'id' => '25',
767
- 'name' => __('Share old posts more than once', CWP_TEXTDOMAIN),
768
- 'type' => 'checkbox',
769
- 'slug' => 'tweet-multiple-times',
770
- 'option' => 'top_opt_tweet_multiple_times',
771
- 'description' => __('By default once a post is shared it will not be shared again until you stop/start the plugin', CWP_TEXTDOMAIN),
772
- 'options' => array()
773
- ),
774
-
775
-
776
-
777
- 'post-type' => array(
778
- 'id' => '18',
779
- 'name' => __('Post Type', CWP_TEXTDOMAIN),
780
- 'type' => 'custom-post-type',
781
- 'slug' => 'post-type',
782
- 'option' => 'top_opt_post_type',
783
- 'description' => __('What type of items do you want to share?', CWP_TEXTDOMAIN),
784
- 'options' => array(),
785
- "available_pro" => "yes"
786
-
787
- ),
788
-
789
- 'analytics-tracking' => array(
790
- 'id' => '26',
791
- 'name' => __('Google Analytics Campaign Tracking', CWP_TEXTDOMAIN),
792
- 'type' => 'checkbox',
793
- 'slug' => 'ga-tracking',
794
- 'option' => 'top_opt_ga_tracking',
795
- 'description' => __('Enabling Campaign Tracking you would be able to see how much traffic Revive Old Post generated.', CWP_TEXTDOMAIN),
796
- 'options' => array()
797
- ),
798
-
799
- 'exclude-specific-categories' => array(
800
- 'id' => '21',
801
- 'name' => __('Exclude Specific Categories', CWP_TEXTDOMAIN),
802
- 'type' => 'categories-list',
803
- 'slug' => 'exclude-specific-category',
804
- 'option' => 'top_opt_omit_cats',
805
- 'description' => __('Select which categories do you want to exclude to share from? Blank - None', CWP_TEXTDOMAIN),
806
- 'options' => array()
807
- ),
808
-
809
- );
810
-
811
- // Default option values
812
- $defaultOptions = array(
813
- 'top_opt_tweet_type' => 'title',
814
- 'top_opt_tweet_type_custom_field' => '',
815
- 'top_opt_add_text' => '',
816
- 'top_opt_add_text_at' => 'beginning',
817
- 'top_opt_include_link' => 'true',
818
- 'top_opt_custom_url_option' => 'off',
819
- 'top_opt_use_url_shortner' => 'off',
820
- 'top_opt_ga_tracking' =>'on',
821
- 'top_opt_url_shortner' => 'is.gd',
822
- 'top_opt_custom_hashtag_option' => 'nohashtag',
823
- 'top_opt_hashtags' => '',
824
- 'top_opt_hashtag_length' => '0',
825
- 'top_opt_custom_hashtag_field' => '',
826
- 'top_opt_interval' => '4',
827
- 'top_opt_age_limit' => '30',
828
- 'top_opt_max_age_limit' => '0',
829
- 'top_opt_no_of_tweet' => '1',
830
- 'top_opt_post_type' => 'post',
831
- 'top_opt_post_type_value' => 'post',
832
- 'top_opt_custom_url_field' => '',
833
- //'top_opt_tweet_specific_category' => '',
834
- 'top_opt_omit_cats' => '',
835
-
836
- // Not field related
837
- 'cwp_topnew_active_status' => 'false'
838
- );
839
-
840
- // Define "array_column" function for PHP versions older than 5.5
841
- if(!function_exists("array_column")) {
842
- function array_column($array, $column)
843
- {
844
- $ret = array();
845
- foreach ($array as $row) $ret[] = $row[$column];
846
- return $ret;
847
- }
848
- }
849
-
850
- function top_current_page(){
851
- $pageURL = 'http';
852
- if (array_key_exists('HTTPS', $_SERVER) && $_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
853
- $pageURL .= "://";
854
- if (@$_SERVER["SERVER_PORT"] != "80") {
855
- $pageURL .= @$_SERVER["SERVER_NAME"].":".@$_SERVER["SERVER_PORT"].@$_SERVER["REQUEST_URI"];
856
- } else {
857
- $pageURL .= @$_SERVER["SERVER_NAME"].@$_SERVER["REQUEST_URI"];
858
- }
859
- return $pageURL;
860
- }
861
-
862
- function top_settings_url(){
863
- $pageURL = admin_url('admin.php?page=TweetOldPost');
864
- return str_replace(":80","",$pageURL);
865
- }
866
-
867
- // Store all options in array.
868
  $cwp_top_options_list = array_column($cwp_top_fields, 'option');
1
+ <?php
2
+ define("CURRENTURL", top_current_page());
3
+
4
+ if(class_exists("CWP_TOP_Core_PRO")){
5
+ define("CWP_TOP_PRO", TRUE);
6
+ }else{
7
+ define("CWP_TOP_PRO", FALSE);
8
+ }
9
+ // Settings Array
10
+ $cwp_top_settings = array(
11
+ 'name' => "Revive Old Post",
12
+ 'slug' => "TweetOldPost",
13
+ 'oAuth_settings' => array( // Based on TOP Dev Application settings.
14
+ 'oauth_access_token' => "2256465193-KDpAFIYfxpWugX2OU025b1CPs3WB0RJpgA4Gd4h",
15
+ 'oauth_access_token_secret' => "abx4Er8qEJ4jI7XDW8a90obzgy8cEtovPXCUNSjmwlpb9",
16
+ 'consumer_key' => "ofaYongByVpa3NDEbXa2g",
17
+ 'consumer_secret' => "vTzszlMujMZCY3mVtTE6WovUKQxqv3LVgiVku276M"
18
+ )
19
+ );
20
+ $cwp_rop_remote_trigger_url = "http://portal.themeisle.com/remote_trigger";
21
+ $cwp_rop_beta_trigger_url = "http://portal.themeisle.com/beta_user";
22
+ $cwp_top_global_schedule = array();
23
+ if(!defined('ROP_PRO_VERSION'))
24
+ $cwp_top_networks = array();
25
+ define("CWP_TOP_PRO_STRING",'<span class="cwp-pro-string">'.__("This is only available in the",'tweet-old-post')."<a href='https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=imagepro&utm_medium=link&utm_campaign=top&upgrade=true' target='_blank'> ".__("PRO version")."</a></span>");
26
+ define("CWP_TOP_PRO_BUSINESS_STRING",'<span class="cwp-pro-string">'.__("This is only available in the",'tweet-old-post')."<a href='https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=imagepro&utm_medium=link&utm_campaign=top&upgrade=true' target='_blank'> ".__("BUSINESS version")."</a></span>");
27
+
28
+ $cwp_rop_all_networks = array("twitter"=>false,"facebook"=>false,"linkedin"=>true, "xing"=>true,"tumblr"=>true);
29
+ $cwp_rop_restricted_show = array("bitly-key","bitly-user");
30
+ $cwp_format_fields = array(
31
+
32
+ 'tweet-content' => array(
33
+ 'id' => '1',
34
+ 'name' => __('Post Content', 'tweet-old-post'),
35
+ 'type' => 'select',
36
+ 'slug' => 'tweet-content',
37
+ 'option' => 'top_opt_tweet_type',
38
+ 'description' => __('What do you want to share?', 'tweet-old-post'),
39
+ 'options' => array(
40
+ 'title' => __('Title Only', 'tweet-old-post'),
41
+ 'body' => __('Body Only', 'tweet-old-post'),
42
+ 'titlenbody' => __('Title & Body', 'tweet-old-post'),
43
+ 'custom-field' => __('Custom Field', 'tweet-old-post')
44
+ ),
45
+ 'default_value'=>'title'
46
+ ),
47
+ 'top_opt_tweet_length' => array(
48
+ 'id' => '1',
49
+ 'name' => __('Length', 'tweet-old-post'),
50
+ 'type' => 'number',
51
+ 'slug' => 'tweet-length',
52
+ 'option' => 'top_opt_tweet_length',
53
+ 'description' => __('The length of the tweet', 'tweet-old-post'),
54
+ 'max-length' => 140,
55
+ 'default_value' =>140
56
+ ),
57
+
58
+ 'tweet-content-field' => array(
59
+ 'id' => '2',
60
+ 'name' => __('Post Content Custom Field', 'tweet-old-post'),
61
+ 'type' => 'text',
62
+ 'slug' => 'tweet-content-field',
63
+ 'option' => 'top_opt_tweet_type_custom_field',
64
+ 'description' => __('Which custom field do you want to fetch info from?', 'tweet-old-post'),
65
+ 'options' => array(),
66
+ 'default_value'=>""
67
+ ),
68
+
69
+ 'additional-text' => array(
70
+ 'id' => '3',
71
+ 'name' => __('Additional Text', 'tweet-old-post'),
72
+ 'type' => 'text',
73
+ 'slug' => 'additional-text',
74
+ 'option' => 'top_opt_add_text',
75
+ 'description' => __('Text added to your auto posts', 'tweet-old-post'),
76
+ 'options' => array(),
77
+ 'default_value'=>''
78
+ ),
79
+
80
+ 'additional-text-at' => array(
81
+ 'id' => '4',
82
+ 'name' => __('Additional Text At', 'tweet-old-post'),
83
+ 'type' => 'select',
84
+ 'slug' => 'additional-text-at',
85
+ 'option' => 'top_opt_add_text_at',
86
+ 'description' => __('Where do you want the text to be added?', 'tweet-old-post'),
87
+ 'options' => array(
88
+ 'beginning' => __('Beginning of Post', 'tweet-old-post'),
89
+ 'end' => __('End of Post', 'tweet-old-post')
90
+ ),
91
+ "default_value"=>"beginning"
92
+ ),
93
+
94
+ 'include-link' => array(
95
+ 'id' => '5',
96
+ 'name' => __('Include Link', 'tweet-old-post'),
97
+ 'type' => 'select',
98
+ 'slug' => 'include-link',
99
+ 'option' => 'top_opt_include_link',
100
+ 'description' => __('Include a link to your post?', 'tweet-old-post'),
101
+ 'options' => array(
102
+ 'true' => __('Yes', 'tweet-old-post'),
103
+ 'false' => __('No', 'tweet-old-post')
104
+ ),
105
+ 'dependency'=> array(
106
+ "url-from-custom-field"=>"true",
107
+ "use-url-shortner"=>"true",
108
+ ),
109
+ 'default_value' =>"yes"
110
+
111
+
112
+ ),
113
+
114
+ 'url-from-custom-field' => array(
115
+ 'id' => '6',
116
+ 'name' => __('Fetch URL From Custom Field', 'tweet-old-post'),
117
+ 'type' => 'checkbox',
118
+ 'slug' => 'url-from-custom-field',
119
+ 'option' => 'top_opt_custom_url_option',
120
+ 'description' => __('URL will be fetched from a custom field.', 'tweet-old-post'),
121
+ 'options' => '',
122
+ 'dependency'=> array(
123
+ "custom-field-url"=>"true"
124
+ ),
125
+ 'default_value'=>''
126
+
127
+ ),
128
+
129
+ 'custom-field-url' => array(
130
+ 'id' => '7',
131
+ 'name' => __('URL Custom Field', 'tweet-old-post'),
132
+ 'type' => 'text',
133
+ 'slug' => 'custom-field-url',
134
+ 'option' => 'top_opt_custom_url_field',
135
+ 'description' => __('URL will be fetched from the specified custom field.', 'tweet-old-post'),
136
+ 'options' => array(),
137
+ 'default_value'=>""
138
+ ),
139
+
140
+ 'use-url-shortner' => array(
141
+ 'id' => '8',
142
+ 'name' => __('Use URL Shortner', 'tweet-old-post'),
143
+ 'type' => 'checkbox',
144
+ 'slug' => 'use-url-shortner',
145
+ 'option' => 'top_opt_use_url_shortner',
146
+ 'description' => '',
147
+ 'options' => '',
148
+ 'dependency'=> array(
149
+ "url-shortner"=>"true"
150
+ ),
151
+ 'default_value'=>"off"
152
+ ),
153
+
154
+
155
+
156
+ 'url-shortner' => array(
157
+ 'id' => '9',
158
+ 'name' => __('URL Shortner Service', 'tweet-old-post'),
159
+ 'type' => 'select',
160
+ 'slug' => 'url-shortner',
161
+ 'option' => 'top_opt_url_shortner',
162
+ 'description' => __('Shorten the link to your post.', 'tweet-old-post'),
163
+ 'options' => array(
164
+ 'wp_short_url' => __('wp short url', 'tweet-old-post'),
165
+ //'t.co' => __('t.co', 'tweet-old-post'),
166
+ 'is.gd' => __('is.gd', 'tweet-old-post'),
167
+ 'bit.ly' => __('bit.ly', 'tweet-old-post'),
168
+ //'tr.im' => __('tr.im', 'tweet-old-post'),
169
+ //'3.ly' => __('3.ly', 'tweet-old-post'),
170
+ //'u.nu' => __('u.nu', 'tweet-old-post'),
171
+ //'1click.at' => __('1click.at', 'tweet-old-post'),
172
+ //'tinyurl' => __('TinyUrl', 'tweet-old-post')
173
+
174
+ ),
175
+ 'dependency'=> array(
176
+ "bitly-key"=>"bit.ly",
177
+ "bitly-user"=>"bit.ly"
178
+ ),
179
+ 'default_value'=>'wp_short_url'
180
+ ),
181
+
182
+ 'bitly-key' => array(
183
+ 'id' => '22',
184
+ 'name' => __('Bitly Key', 'tweet-old-post'),
185
+ 'type' => 'text',
186
+ 'slug' => 'bitly-key',
187
+ 'option' => 'top_opt_bitly_key',
188
+ 'description' => '',
189
+ 'options' => '',
190
+ 'default_value' => '',
191
+ ),
192
+
193
+ 'bitly-user' => array(
194
+ 'id' => '23',
195
+ 'name' => __('Bitly User', 'tweet-old-post'),
196
+ 'type' => 'text',
197
+ 'slug' => 'bitly-user',
198
+ 'option' => 'top_opt_bitly_user',
199
+ 'description' => '',
200
+ 'options' => '',
201
+ 'default_value' => '',
202
+ ),
203
+
204
+ 'custom-hashtag-option' => array(
205
+ 'id' => '10',
206
+ 'name' => __('Hashtags', 'tweet-old-post'),
207
+ 'type' => 'select',
208
+ 'slug' => 'custom-hashtag-option',
209
+ 'option' => 'top_opt_custom_hashtag_option',
210
+ 'description' => __('Include #hashtags in your auto posts?', 'tweet-old-post'),
211
+ 'options' => array(
212
+ 'nohashtag' => __('Don\'t add any hashtags', 'tweet-old-post'),
213
+ 'common' => __('Common hashtags for all shares', 'tweet-old-post'),
214
+ 'categories'=> __('Create hashtags from Categories', 'tweet-old-post'),
215
+ 'tags' => __('Create hashtags from Tags', 'tweet-old-post'),
216
+ 'custom' => __('Create hashtags from Custom Fields', 'tweet-old-post')
217
+ ),
218
+ 'dependency'=> array(
219
+ "common-hashtags" =>"common",
220
+ "hashtags-length" =>"common,categories,tags,custom",
221
+ "common-hashtags" =>"common",
222
+ "custom-hashtag-field"=>"custom"
223
+ ),
224
+ 'default_value'=>'nohashtag'
225
+ ),
226
+
227
+ 'common-hashtags' => array(
228
+ 'id' => '11',
229
+ 'name' => __('Common Hashtags', 'tweet-old-post'),
230
+ 'type' => 'text',
231
+ 'slug' => 'common-hashtags',
232
+ 'option' => 'top_opt_hashtags',
233
+ 'description' => __('Specify which hashtags you want to be used. eg. #example, #example2', 'tweet-old-post'),
234
+ 'options' => array(),
235
+ 'default_value'=>''
236
+ ),
237
+
238
+ 'hashtags-length' => array(
239
+ 'id' => '12',
240
+ 'name' => __('Maximum Hashtags Length', 'tweet-old-post'),
241
+ 'type' => 'text',
242
+ 'slug' => 'hashtags-length',
243
+ 'option' => 'top_opt_hashtag_length',
244
+ 'description' => __('Set to 0 (characters) to include all.', 'tweet-old-post'),
245
+ 'options' => array(),
246
+ 'default_value'=>'20'
247
+ ),
248
+
249
+ 'custom-hashtag-field' => array(
250
+ 'id' => '13',
251
+ 'name' => __('Hashtag Custom Field', 'tweet-old-post'),
252
+ 'type' => 'text',
253
+ 'slug' => 'custom-hashtag-field',
254
+ 'option' => 'top_opt_custom_hashtag_field',
255
+ 'description' => __('Fetch hashtags from specified custom field', 'tweet-old-post'),
256
+ 'options' => array(),
257
+ 'default_value'=>'',
258
+
259
+ )
260
+ ,
261
+ 'use-image' => array(
262
+ 'id' => '24',
263
+ 'name' => __('Post with Image', 'tweet-old-post'),
264
+ 'type' => 'checkbox',
265
+ 'slug' => 'post-with-image',
266
+ 'option' => 'top_opt_post_with_image',
267
+ 'description' => __('Check if you want to add the post featured image to the share', 'tweet-old-post'),
268
+ 'options' => array(),
269
+ "available_pro" => "yes",
270
+ 'default_value'=>"off"
271
+ )
272
+ );
273
+
274
+ $cwp_top_fields = array(
275
+
276
+
277
+ 'interval' => array(
278
+ 'id' => '14',
279
+ 'name' => __('Minimum interval between shares', 'tweet-old-post'),
280
+ 'type' => 'text',
281
+ 'slug' => 'interval',
282
+ 'option' => 'top_opt_interval',
283
+ "available_pro" =>"no",
284
+ 'description' => __('Minimum time between shares (Hour/Hours), 0.4 can be used also.', 'tweet-old-post'),
285
+ 'options' => array()
286
+
287
+ ),
288
+
289
+ 'age-limit' => array(
290
+ 'id' => '15',
291
+ 'name' => __('Minimum age of post to be eligible for sharing', 'tweet-old-post'),
292
+ 'type' => 'text',
293
+ 'slug' => 'age-limit',
294
+ 'option' => 'top_opt_age_limit',
295
+ 'description' => __('Day/Days - 0 for Disabled', 'tweet-old-post'),
296
+ 'options' => array()
297
+ ),
298
+
299
+ 'max-age-limit' => array(
300
+ 'id' => '16',
301
+ 'name' => __('Maximum age of post to be eligible for sharing', 'tweet-old-post'),
302
+ 'type' => 'text',
303
+ 'slug' => 'max-age-limit',
304
+ 'option' => 'top_opt_max_age_limit',
305
+ 'description' => __('Day/Days - 0 for Disabled', 'tweet-old-post'),
306
+ 'options' => array()
307
+ ),
308
+
309
+ 'no-of-tweet' => array(
310
+ 'id' => '17',
311
+ 'name' => __('Number of Posts to share', 'tweet-old-post'),
312
+ 'type' => 'text',
313
+ 'slug' => 'no-of-tweet',
314
+ 'option' => 'top_opt_no_of_tweet',
315
+ 'description' => __('Number of posts to share each time', 'tweet-old-post'),
316
+ 'options' => array()
317
+ ),
318
+
319
+
320
+
321
+
322
+ 'tweet-multiple-times' => array(
323
+ 'id' => '25',
324
+ 'name' => __('Share old posts more than once', 'tweet-old-post'),
325
+ 'type' => 'checkbox',
326
+ 'slug' => 'tweet-multiple-times',
327
+ 'option' => 'top_opt_tweet_multiple_times',
328
+ 'description' => __('By default once a post is shared it will not be shared again until you stop/start the plugin', 'tweet-old-post'),
329
+ 'options' => array()
330
+ ),
331
+
332
+
333
+
334
+ 'post-type' => array(
335
+ 'id' => '18',
336
+ 'name' => __('Post Type', 'tweet-old-post'),
337
+ 'type' => 'custom-post-type',
338
+ 'slug' => 'post-type',
339
+ 'option' => 'top_opt_post_type',
340
+ 'description' => __('What type of items do you want to share?', 'tweet-old-post'),
341
+ 'options' => array(),
342
+ "available_pro" => "yes"
343
+
344
+ ),
345
+
346
+ 'analytics-tracking' => array(
347
+ 'id' => '26',
348
+ 'name' => __('Google Analytics Campaign Tracking', 'tweet-old-post'),
349
+ 'type' => 'checkbox',
350
+ 'slug' => 'ga-tracking',
351
+ 'option' => 'top_opt_ga_tracking',
352
+ 'description' => __('Enabling Campaign Tracking you would be able to see how much traffic Revive Old Post generated.', 'tweet-old-post'),
353
+ 'options' => array()
354
+ ),
355
+
356
+ 'exclude-specific-categories' => array(
357
+ 'id' => '21',
358
+ 'name' => __('Exclude Specific Categories', 'tweet-old-post'),
359
+ 'type' => 'categories-list',
360
+ 'slug' => 'exclude-specific-category',
361
+ 'option' => 'top_opt_omit_cats',
362
+ 'description' => __('Select which categories do you want to exclude to share from? Blank - None', 'tweet-old-post'),
363
+ 'options' => array()
364
+ ),
365
+ 'image-size'=>array(
366
+ 'id' => '22',
367
+ 'name' => __('Select image size ', 'tweet-old-post'),
368
+ 'type' => 'image-list',
369
+ 'slug' => 'image-sizes',
370
+ 'option' => 'top_image_size_selected',
371
+ 'description' => __('Select which image size you would like to use <br/> when posting on social networks', 'tweet-old-post'),
372
+ 'options' => array(),
373
+ "available_pro" => "yes",
374
+ 'default_value'=>"full"
375
+ )
376
+
377
+ );
378
+
379
+ // Default option values
380
+ $defaultOptions = array(
381
+ 'top_opt_tweet_type' => 'title',
382
+ 'top_opt_tweet_type_custom_field' => '',
383
+ 'top_opt_add_text' => '',
384
+ 'top_opt_add_text_at' => 'beginning',
385
+ 'top_opt_include_link' => 'true',
386
+ 'top_opt_custom_url_option' => 'off',
387
+ 'top_opt_use_url_shortner' => 'off',
388
+ 'top_opt_ga_tracking' =>'on',
389
+ 'top_opt_url_shortner' => 'is.gd',
390
+ 'top_opt_custom_hashtag_option' => 'nohashtag',
391
+ 'top_opt_hashtags' => '',
392
+ 'top_opt_hashtag_length' => '0',
393
+ 'top_opt_custom_hashtag_field' => '',
394
+ 'top_opt_interval' => '4',
395
+ 'top_opt_age_limit' => '30',
396
+ 'top_opt_max_age_limit' => '0',
397
+ 'top_opt_no_of_tweet' => '1',
398
+ 'top_opt_post_type' => 'post',
399
+ 'top_opt_post_type_value' => 'post',
400
+ 'top_opt_custom_url_field' => '',
401
+ //'top_opt_tweet_specific_category' => '',
402
+ 'top_opt_omit_cats' => '',
403
+
404
+ // Not field related
405
+ 'cwp_topnew_active_status' => 'false'
406
+ );
407
+
408
+ // Define "array_column" function for PHP versions older than 5.5
409
+ if(!function_exists("array_column")) {
410
+ function array_column($array, $column)
411
+ {
412
+ $ret = array();
413
+ foreach ($array as $row) $ret[] = $row[$column];
414
+ return $ret;
415
+ }
416
+ }
417
+
418
+ function top_current_page(){
419
+ $pageURL = 'http';
420
+ if (array_key_exists('HTTPS', $_SERVER) && $_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
421
+ $pageURL .= "://";
422
+ if (@$_SERVER["SERVER_PORT"] != "80") {
423
+ $pageURL .= @$_SERVER["SERVER_NAME"].":".@$_SERVER["SERVER_PORT"].@$_SERVER["REQUEST_URI"];
424
+ } else {
425
+ $pageURL .= @$_SERVER["SERVER_NAME"].@$_SERVER["REQUEST_URI"];
426
+ }
427
+ return $pageURL;
428
+ }
429
+
430
+ function top_settings_url(){
431
+ $pageURL = get_admin_url( get_current_blog_id(), "admin.php?page=TweetOldPost" );;
432
+ return str_replace(":80","",$pageURL);
433
+ }
434
+
435
+ // Store all options in array.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
436
  $cwp_top_options_list = array_column($cwp_top_fields, 'option');
inc/core.php CHANGED
@@ -1,2676 +1,2898 @@
1
- <?php
2
- // Basic configuration
3
- require_once(ROPPLUGINPATH."/inc/config.php");
4
- // RopTwitterOAuth class
5
- require_once(ROPPLUGINPATH."/inc/oAuth/twitteroauth.php");
6
-
7
- if (!class_exists('CWP_TOP_Core')) {
8
- class CWP_TOP_Core {
9
-
10
- // All fields
11
- public static $fields;
12
- public static $networks;
13
- // Number of fields
14
- public static $noFields;
15
- public $notices;
16
- // Consumer key, Consumer Secret key, oAuth Callback Key
17
- public $consumer;
18
- public $lastID;
19
- public $consumerSecret;
20
- public $oAuthCallback;
21
- public $bitly_key;
22
- public $bitly_user;
23
- // Access token, oAuth Token, oAuth Token Secret and User Information
24
- private $cwp_top_access_token;
25
- private $cwp_top_oauth_token;
26
- private $cwp_top_oauth_token_secret;
27
-
28
-
29
- public $users;
30
- private $user_info;
31
-
32
- // Plugin Status
33
- public $pluginStatus;
34
- // Interval Set
35
- public $intervalSet;
36
- public $cwp_twitter;
37
- public static $date_format;
38
- public function __construct() {
39
- // Get all fields
40
- global $cwp_top_fields;
41
- global $cwp_top_networks;
42
-
43
- // Set all authentication settings
44
- $this->setAlloAuthSettings();
45
-
46
- // Load all hooks
47
- $this->loadAllHooks();
48
-
49
- // Check if the user added any account
50
- $this->afterAddAccountCheck();
51
-
52
- // Save all fields in static var
53
- self::$fields = $cwp_top_fields;
54
- self::$networks = $cwp_top_networks;
55
-
56
- // Save all number of fields in static var
57
- self::$noFields = count(self::$fields);
58
- }
59
- public static function addNotice($message,$type){
60
- $errors = get_option('rop_notice_active');
61
- if(count($errors) > 30) $errors = array();
62
- $errors[] = array(
63
- "time"=>date('j-m-Y h:i:s A'),
64
- 'message'=>$message,
65
- "type" => $type
66
- );
67
- update_option("rop_notice_active",$errors);
68
-
69
- }
70
- public static function clearLog(){
71
- if(!is_admin()) return false;
72
- update_option("rop_notice_active",array());
73
-
74
- }
75
- public static function addLog($m){
76
- $m .= date('l jS \of F Y h:i:s A')." - ".$m." \n\n ";
77
- file_put_contents("rop.log",$m,FILE_APPEND);
78
-
79
- }
80
- public function addLocalization() {
81
-
82
- load_plugin_textdomain(CWP_TEXTDOMAIN, false, dirname(ROPPLUGINBASENAME).'/languages/');
83
- }
84
- function checkUsers(){
85
- if(!is_array($this->users)) $this->users = array();
86
- if(count($this->users) == 0){
87
-
88
- self::addNotice(__("You have no account set to post !", CWP_TEXTDOMAIN),"error");
89
- die();
90
- }
91
-
92
- }
93
- public function startTweetOldPost( )
94
- {
95
- if(!is_admin()) return false;
96
- $this->checkUsers();
97
- if($this->pluginStatus !== 'true' ) {
98
- do_action("rop_start_posting");
99
- }
100
- die();
101
- }
102
- public function startPosting(){
103
-
104
- update_option('cwp_topnew_active_status', 'true');
105
- update_option('top_opt_already_tweeted_posts',array());
106
- update_option('top_last_tweets',array());
107
- $timeNow = $this->getTime();
108
- $timeNow = $timeNow+15;
109
-
110
- $this->clearScheduledTweets();
111
- $networks = $this->getAvailableNetworks();
112
-
113
- foreach($networks as $network){
114
- wp_schedule_single_event($timeNow,$network.'roptweetcron',array($network));
115
- }
116
-
117
- }
118
-
119
- public function stopPosting(){
120
-
121
- // Set it to inactive status
122
- update_option('cwp_topnew_active_status', 'false');
123
- update_option('cwp_topnew_notice', '');
124
- update_option('top_opt_already_tweeted_posts',array());
125
-
126
- // Clear all scheduled tweets
127
- $this->clearScheduledTweets();
128
- }
129
- public function stopTweetOldPost()
130
- {
131
- if(!is_admin()) return false;
132
- //echo $this->pluginStatus;
133
- // If the plugin is active
134
- if($this->pluginStatus !== 'false') {
135
- do_action("rop_stop_posting");
136
- }
137
-
138
- die(); // Required for AJAX
139
- }
140
-
141
- public function getExcludedPosts() {
142
-
143
- $postQueryPosts = "";
144
- $postPosts = get_option('top_opt_excluded_post');
145
-
146
- if(!empty($postPosts) && is_array($postPosts)) {
147
- $postQueryPosts = implode(',',$postPosts);
148
- }
149
- else
150
- $postQueryPosts = get_option('top_opt_excluded_post');
151
-
152
- return $postQueryPosts;
153
-
154
- }
155
-
156
- public function getTweetsFromDBbyID($id)
157
- {
158
- global $wpdb;
159
- $query = "
160
- SELECT * FROM {$wpdb->prefix}posts where ID = '{$id}'";
161
- $returnedPost = $wpdb->get_results($query);
162
- //echo $query;
163
- return $returnedPost;
164
- }
165
-
166
- public function getTweetsFromDB()
167
- {
168
- global $wpdb;
169
-
170
- // Generate the Tweet Post Date Range
171
- $dateQuery = $this->getTweetPostDateRange();
172
- if(!is_array($dateQuery)) return false;
173
- // Get the number of tweets to be tweeted each interval.
174
- $tweetCount = intval(get_option('top_opt_no_of_tweet'));
175
- if($tweetCount == 0 ) {
176
- self::addNotice("Invalid number for Number of Posts to share. It must be a value greater than 0 ",'error');
177
- return false;
178
- }
179
- // Get post categories set.
180
- // $postQueryCategories = $this->getTweetCategories();
181
- $excludedIds = "";
182
- $tweetedPosts = get_option("top_opt_already_tweeted_posts");
183
- if(!is_array($tweetedPosts)) $tweetedPosts = array();
184
- $orderQuery = "";
185
- $orderQuery = " ORDER BY post_date ASC ";
186
-
187
- if (get_option('top_opt_tweet_multiple_times')=="on") {
188
-
189
- $tweetedPosts = array();
190
- }
191
- $postQueryExcludedPosts = $this->getExcludedPosts();
192
- $postQueryExcludedPosts = explode (',',$postQueryExcludedPosts);
193
- $excluded = array_merge($tweetedPosts,$postQueryExcludedPosts);
194
- $excluded = array_unique($excluded);
195
- $excluded = array_filter($excluded);
196
- $postQueryExcludedCategories = $this->getExcludedCategories();
197
- $somePostType = $this->getTweetPostType();
198
-
199
- // Generate dynamic query.
200
- $query = "
201
- SELECT *
202
- FROM {$wpdb->prefix}posts
203
- LEFT JOIN {$wpdb->prefix}term_relationships ON ({$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id)
204
- WHERE 1=1
205
- AND ((post_date >= '{$dateQuery['before']}'
206
- AND post_date <= '{$dateQuery['after']}')) ";
207
-
208
- // If there are no categories set, select the post from all.
209
- //if(!empty($postQueryCategories)) {
210
- // $query .= "AND (wp_term_relationships.term_taxonomy_id IN ({$postQueryCategories})) ";
211
- // }
212
-
213
- if(!empty($postQueryExcludedCategories)) {
214
- $query .= "AND ( {$wpdb->prefix}posts.ID NOT IN (
215
- SELECT object_id
216
- FROM {$wpdb->prefix}term_relationships
217
- INNER JOIN {$wpdb->prefix}term_taxonomy ON ( {$wpdb->prefix}term_relationships.term_taxonomy_id = {$wpdb->prefix}term_taxonomy.term_taxonomy_id )
218
- WHERE {$wpdb->prefix}term_taxonomy.term_id IN ({$postQueryExcludedCategories}))) ";
219
- }
220
-
221
- if(!empty($excluded)) {
222
- $excluded = implode(',',$excluded);
223
- $query .= "AND ( {$wpdb->prefix}posts.ID NOT IN ({$excluded})) ";
224
- }
225
- if(!empty($somePostType)){
226
-
227
- $somePostType = explode(',',$somePostType);
228
- $somePostType = "'".implode("','",$somePostType)."'";
229
- }
230
- $query .= "AND {$wpdb->prefix}posts.post_type IN ({$somePostType})
231
- AND ({$wpdb->prefix}posts.post_status = 'publish')
232
- GROUP BY {$wpdb->prefix}posts.ID
233
- {$orderQuery }
234
- ";
235
-
236
- $returnedPost = $wpdb->get_results($query);
237
-
238
- if(count($returnedPost)< $tweetCount)
239
- {
240
- return $returnedPost;
241
- }
242
- $rand_keys = array_rand($returnedPost , $tweetCount);
243
-
244
- if(is_int($rand_keys)) $rand_keys = array($rand_keys);
245
- $return = array();
246
-
247
- foreach($rand_keys as $rk){
248
- $return[] = $returnedPost[$rk];
249
- }
250
- $returnedPost = $return;
251
- if(count($returnedPost) > $tweetCount)
252
- {
253
- $returnedPost = array_slice($returnedPost,0,$tweetCount);
254
- }
255
- return $returnedPost;
256
- }
257
-
258
- public function isPostWithImageEnabled ($ntk = "twitter") {
259
- $options = get_option("top_opt_post_formats");
260
- global $cwp_top_networks;
261
- $value = isset($options[$ntk."_".$cwp_top_networks[$ntk]["use-image"]['option']]) ? $options[$ntk."_".$cwp_top_networks[$ntk]["use-image"]['option']] : get_option("top_opt_post_with_image") ;
262
- if ($value !='on')
263
- return false;
264
- else
265
- return true;
266
- }
267
-
268
- public function tweetOldPost($ntk = "",$byID = false)
269
-
270
- {
271
- if ($byID!==false) {
272
-
273
- $returnedPost = $this->getTweetsFromDBbyID($byID);
274
- }else{
275
-
276
- $returnedPost = $this->getTweetsFromDB();
277
- if(!is_array($returnedPost)) return false;
278
-
279
- }
280
-
281
- if (count($returnedPost) == 0 ) {
282
- self::addNotice('There is no suitable post to tweet make sure you excluded correct categories and selected the right dates.','error');
283
- }
284
- $done = get_option("top_opt_already_tweeted_posts");
285
- if(!is_array($done) || get_option('top_opt_tweet_multiple_times')=="on" ) $done = array();
286
-
287
- foreach($returnedPost as $post){
288
- if(in_array($post->ID,$done)) continue;
289
- $oknet = false;
290
- foreach($this->users as $u){
291
- if($u['service'] == $ntk){
292
- $oknet = true;
293
- break;
294
- }
295
- }
296
- if(!$oknet) return false;
297
- $finalTweet = $this->generateTweetFromPost($post,$ntk);
298
-
299
- $this->tweetPost( $finalTweet, $ntk, $post );
300
-
301
- $tweetedPosts = get_option("top_opt_already_tweeted_posts");
302
-
303
- if ($tweetedPosts=="") $tweetedPosts = array();
304
- // Push the tweeted post at the end of the array.
305
- array_push($tweetedPosts, $post->ID);
306
- // Update the new already tweeted posts array.
307
- if ( function_exists('w3tc_pgcache_flush') ) {
308
-
309
- w3tc_dbcache_flush();
310
-
311
- w3tc_objectcache_flush();
312
- $cache = ' and W3TC Caches cleared';
313
- }
314
- update_option("top_opt_already_tweeted_posts", $tweetedPosts);
315
- $done[] = $post->ID;
316
- }
317
- if ($byID===false) {
318
- $this->scheduleTweet($ntk);
319
-
320
- }
321
-
322
- }
323
-
324
- public function scheduleTweet($ntk){
325
- $time = $this->getNextTweetTime( $ntk );
326
- if($time != 0 && $time > $this->getTime()){
327
- if(wp_next_scheduled( $ntk.'roptweetcron',array($ntk) ) === false) {
328
- wp_schedule_single_event( $time, $ntk . 'roptweetcron', array( $ntk ) );
329
- }
330
- }else{
331
- self::addNotice("Invalid next schedule: ".date ( 'M j, Y @ G:i',$time),'error');
332
- }
333
-
334
- }
335
- public function getAvailableNetworks(){
336
- $networks = array();
337
- $users = is_array($this->users) ? $this->users : array();
338
- foreach($users as $u){
339
- if($u['service'] == 'twitter' && !in_array("twitter",$networks))
340
- $networks[] = "twitter";
341
- if($u['service'] == 'facebook' && !in_array("facebook",$networks))
342
- $networks[] = "facebook";
343
- if($u['service'] == 'linkedin' && !in_array("linkedin",$networks))
344
- $networks[] = "linkedin";
345
- }
346
-
347
- return $networks;
348
- }
349
-
350
- public function getAllNetworks(){
351
- $networks = array('twitter','facebook','linkedin');
352
-
353
-
354
- return $networks;
355
- }
356
- public function findInString($where,$what) {
357
- if (!is_string($where)) {
358
- return false;
359
- }
360
- else
361
- return strpos($where,$what);
362
- }
363
-
364
- public function getNotice() {
365
- if(!is_admin()) return false;
366
- $notice = get_option('rop_notice_active');
367
- if(!is_array($notice)) $notice = array();
368
- foreach($notice as $k=>$n){
369
- $notice[$k]['message'] = strip_tags($n['message']);
370
- }
371
- echo json_encode($notice);
372
- die();
373
- }
374
-
375
- public function tweetNow() {
376
- if(!is_admin()) return false;
377
- $networks = $this->getAvailableNetworks();
378
- foreach($networks as $net){
379
-
380
- $this->tweetOldPost($net,get_option('top_lastID'));
381
- }
382
- die();
383
- }
384
-
385
- public function viewSampleTweet()
386
- {
387
-
388
- if(!is_admin()) return false;
389
- $returnedTweets = $this->getTweetsFromDB();
390
-
391
- $messages = array();
392
- $networks = $this->getAvailableNetworks();
393
- if(count($returnedTweets) == 0) {
394
- foreach($networks as $net){
395
- $messages[$net] = __("No posts to share",CWP_TEXTDOMAIN);
396
- }
397
- $networks = array();
398
- }
399
- foreach($networks as $n) {
400
-
401
- $finalTweetsPreview = $this->generateTweetFromPost($returnedTweets[0],$n);
402
- if (is_array($finalTweetsPreview)){
403
- $finalTweetsPreview = $finalTweetsPreview['message'];
404
- }
405
- $messages[$n] = $finalTweetsPreview;
406
- }
407
- if(isset($returnedTweets[0]))
408
- update_option( 'top_lastID', $returnedTweets[0]->ID);
409
-
410
- foreach($networks as $n) {
411
- if (CWP_TOP_PRO && $this->isPostWithImageEnabled($n)) {
412
- if (has_post_thumbnail($returnedTweets[0]->ID)) :
413
- $image_array = wp_get_attachment_image_src( get_post_thumbnail_id( $returnedTweets[0]->ID), array('medium') );
414
- $image = $image_array[0];
415
- else :
416
- $post = get_post($returnedTweets[0]->ID);
417
- $image = '';
418
- ob_start();
419
- ob_end_clean();
420
- $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
421
-
422
- $image = $matches [1] [0];
423
-
424
- endif;
425
- $messages[$n] = '<img class="top_preview" src="'.$image.'"/>'.$messages[$n];
426
- }
427
- }
428
-
429
- echo json_encode($messages);
430
-
431
-
432
- die(); // required
433
- }
434
-
435
- /**
436
- * Returns if the post is already tweeted
437
- * @param [type] $postId Post ID
438
- * @return boolean True if not already tweeted / False if already tweeted
439
- */
440
-
441
- public function isNotAlreadyTweeted($postId) {
442
- // Get all already tweeted posts
443
-
444
- $tweetedPosts = get_option("top_opt_already_tweeted_posts");
445
-
446
- if (!$tweetedPosts) {
447
- add_option("top_opt_already_tweeted_posts");
448
- return true;
449
- }
450
-
451
- // If the new post ID is in the array, which means that is already tweeted
452
- if (!empty($tweetedPosts) && is_array($tweetedPosts) ) {
453
-
454
- if (in_array($postId, $tweetedPosts))
455
- return false;
456
- else
457
- return true;
458
- }
459
- else
460
- {
461
- return true;
462
- }
463
- }
464
-
465
- public function getStrLen($string) {
466
-
467
- if (function_exists("mb_strlen"))
468
- return mb_strlen($string);
469
- else
470
- return strlen($string);
471
- }
472
-
473
- public function ropSubstr($string,$nr1,$nr2 ) {
474
- if (function_exists("mb_substr")) {
475
- return mb_substr($string,$nr1,$nr2);
476
- }
477
- else
478
- return substr($string,$nr1, $nr2);
479
- }
480
-
481
- /**
482
- * Generates the tweet based on the user settings
483
- * @param [type] $postQuery Returned post from database
484
- * @return [type] Generated Tweet
485
- */
486
-
487
- public function generateTweetFromPost($postQuery,$network)
488
- {
489
-
490
- // Save all user settings in variables.
491
- global $cwp_top_networks;
492
- $tweetedPosts = get_option("top_opt_already_tweeted_posts");
493
- $formats = get_option('top_opt_post_formats');
494
- $tweet_content = isset($formats[$network."_"."top_opt_tweet_type"]) ? $formats[$network."_"."top_opt_tweet_type"] : get_option( 'top_opt_tweet_type' );
495
- $tweet_content_custom_field = isset($formats[$network."_"."top_opt_tweet_type_custom_field"]) ? $formats[$network."_"."top_opt_tweet_type_custom_field"] : get_option( 'top_opt_tweet_type_custom_field' );
496
- $additional_text = isset($formats[$network."_"."top_opt_add_text"]) ? $formats[$network."_"."top_opt_add_text"] : get_option( 'top_opt_tweet_type_custom_field' );
497
- $additional_text_at = isset($formats[$network."_"."top_opt_add_text_at"]) ? $formats[$network."_"."top_opt_add_text_at"] : get_option( 'top_opt_add_text_at' );
498
- $max_length = isset($formats[$network."_"."top_opt_tweet_length"]) ? $formats[$network."_"."top_opt_tweet_length"] : $cwp_top_networks[$network]['top_opt_tweet_length']['default_value'];
499
- $include_link = isset($formats[$network."_"."top_opt_include_link"]) ? $formats[$network."_"."top_opt_include_link"] : get_option( 'top_opt_include_link' ); get_option( 'top_opt_include_link' );
500
- $fetch_url_from_custom_field = isset($formats[$network."_"."top_opt_custom_url_option"]) ? $formats[$network."_"."top_opt_custom_url_option"] : get_option( 'top_opt_custom_url_option' );
501
- $custom_field_url = isset($formats[$network."_"."top_opt_custom_url_field"]) ? $formats[$network."_"."top_opt_custom_url_field"] : get_option( 'top_opt_custom_url_field' ); get_option( 'top_opt_custom_url_field' );
502
- $use_url_shortner = isset($formats[$network."_"."top_opt_use_url_shortner"]) ? $formats[$network."_"."top_opt_use_url_shortner"] : get_option( 'top_opt_use_url_shortner' );
503
- $url_shortner_service = isset($formats[$network."_"."top_opt_url_shortner"]) ? $formats[$network."_"."top_opt_url_shortner"] : get_option( 'top_opt_url_shortner' );
504
- $hashtags = isset($formats[$network."_"."top_opt_custom_hashtag_option"]) ? $formats[$network."_"."top_opt_custom_hashtag_option"] : get_option( 'top_opt_custom_hashtag_option' );
505
- $common_hashtags = isset($formats[$network."_"."top_opt_hashtags"]) ? $formats[$network."_"."top_opt_hashtags"] : get_option( 'top_opt_hashtags' );
506
- $maximum_hashtag_length = isset($formats[$network."_"."top_opt_hashtag_length"]) ? $formats[$network."_"."top_opt_hashtag_length"] : get_option( 'top_opt_hashtag_length' );
507
- $hashtag_custom_field = isset($formats[$network."_"."top_opt_custom_hashtag_field"]) ? $formats[$network."_"."top_opt_custom_hashtag_field"] : get_option( 'top_opt_custom_hashtag_field' );
508
- $bitly_key = isset($formats[$network."_"."top_opt_bitly_key"]) ? $formats[$network."_"."top_opt_bitly_key"] : get_option( 'top_opt_bitly_key' );
509
- $bitly_user = isset($formats[$network."_"."top_opt_bitly_user"]) ? $formats[$network."_"."top_opt_bitly_user"] : get_option( 'top_opt_bitly_user' );
510
- $post_with_image = isset($formats[$network."_". 'top_opt_post_with_image']) ? $formats[$network."_". 'top_opt_post_with_image'] : get_option( 'top_opt_bitly_user' );
511
- $ga_tracking = get_option( 'top_opt_ga_tracking' );
512
- $additionalTextBeginning = "";
513
- $additionalTextEnd = "";
514
- // If the user set to not use hashtags, set it to empty variable.
515
- if ( $hashtags == 'nohashtag' ) {
516
- $newHashtags = "";
517
- }
518
- // Generate the tweet content.
519
- switch ( $tweet_content ) {
520
- case 'title':
521
- $tweetContent = $postQuery->post_title;
522
- break;
523
- case 'body':
524
- $tweetContent = get_post_field( 'post_content', $postQuery->ID );
525
- break;
526
- case 'titlenbody':
527
- $tweetContent = $postQuery->post_title . " " . get_post_field( 'post_content', $postQuery->ID );
528
- break;
529
- case 'custom-field':
530
- $tweetContent = get_post_meta( $postQuery->ID, $tweet_content_custom_field, true );
531
- break;
532
- default:
533
- $tweetContent = "";
534
- break;
535
- }
536
- // Trim new empty lines.
537
- if(!is_string($tweetContent)) $tweetContent = '';
538
- $tweetContent = strip_tags( html_entity_decode( $tweetContent ) );
539
- //$tweetContent = esc_html($tweetContent);
540
- //$tweetContent = esc_html($tweetContent);
541
- //$tweetContent = trim(preg_replace('/\s+/', ' ', $tweetContent));
542
- // Remove html entinies.
543
- //$tweetContent = preg_replace("/&#?[a-z0-9]+;/i","", $tweetContent);
544
- // Strip all shortcodes from content.
545
- $tweetContent = strip_shortcodes( $tweetContent );
546
- $fTweet = array();
547
- $fTweet['link'] = get_permalink( $postQuery->ID );
548
- // Generate the post link.
549
- if ( $include_link == 'true' ) {
550
- if ( $fetch_url_from_custom_field == 'on' ) {
551
- $post_url = "" . get_post_meta( $postQuery->ID, $custom_field_url, true );
552
- } else {
553
- $post_url = "" . get_permalink( $postQuery->ID );
554
- }
555
- if ( $post_url == "" ) {
556
- $post_url = "" . get_permalink( $postQuery->ID );
557
- }
558
- if ( $ga_tracking == "on" ) {
559
- $param = 'utm_source=ReviveOldPost&utm_medium=social&utm_campaign=ReviveOldPost';
560
- $post_url = rtrim( $post_url );
561
- if ( strpos( $post_url, "?" ) === false ) {
562
- $post_url .= '?' . $param;
563
- } else {
564
- $post_url .= '&' . $param;
565
- }
566
- }
567
- if ( $use_url_shortner == 'on' ) {
568
- $post_url = "" . $this->shortenURL( $post_url, $url_shortner_service, $postQuery->ID, $bitly_key, $bitly_user );
569
- }
570
- if ( $post_url == "" ) {
571
- $post_url = "" . get_permalink( $postQuery->ID );
572
- }
573
- $post_url = $post_url . "";
574
- } else {
575
- $post_url = "";
576
- }
577
- // Generate the hashtags
578
- $newHashtags = "";
579
- if ( $hashtags != 'nohashtag' ) {
580
- switch ( $hashtags ) {
581
- case 'common':
582
- $newHashtags = $common_hashtags;
583
- break;
584
- case 'categories':
585
- if ( $postQuery->post_type == "post" ) {
586
- $postCategories = get_the_category( $postQuery->ID );
587
- foreach ( $postCategories as $category ) {
588
- if ( strlen( $category->cat_name . $newHashtags ) <= $maximum_hashtag_length || $maximum_hashtag_length == 0 ) {
589
- $newHashtags = $newHashtags . " #" . preg_replace( '/-/', '', strtolower( $category->slug ) );
590
- }
591
- }
592
- } else {
593
- if ( CWP_TOP_PRO ) {
594
- global $CWP_TOP_Core_PRO;
595
- $newHashtags = $CWP_TOP_Core_PRO->topProGetCustomCategories( $postQuery, $maximum_hashtag_length );
596
- }
597
- }
598
- break;
599
- case 'tags':
600
- $postTags = wp_get_post_tags( $postQuery->ID );
601
- foreach ( $postTags as $postTag ) {
602
- if ( strlen( $postTag->slug . $newHashtags ) <= $maximum_hashtag_length || $maximum_hashtag_length == 0 ) {
603
- $newHashtags = $newHashtags . " #" . preg_replace( '/-/', '', strtolower( $postTag->slug ) );
604
- }
605
- }
606
- break;
607
- case 'custom':
608
- $newHashtags = get_post_meta( $postQuery->ID, $hashtag_custom_field, true );
609
- break;
610
- default:
611
- break;
612
- }
613
- }
614
- // Generate the additional text
615
- if ( $additional_text_at == 'beginning' ) {
616
- $additionalTextBeginning = $additional_text . " ";
617
- }
618
- if ( $additional_text_at == 'end' ) {
619
- $additionalTextEnd = " " . $additional_text;
620
- }
621
- // Calculate the final tweet length
622
- $finalTweetLength = 0;
623
- if ( ! empty( $additional_text ) ) {
624
- $additionalTextLength = $this->getStrLen( $additional_text );
625
- $finalTweetLength += intval( $additionalTextLength );
626
- }
627
- if ( ! empty( $post_url ) ) {
628
- $postURLLength = $this->getStrLen( $post_url );
629
- //$post_url = urlencode($post_url);
630
- if ( $postURLLength > 21 ) {
631
- $postURLLength = 25;
632
- }
633
- $finalTweetLength += intval( $postURLLength );
634
- }
635
- if ( ! empty( $newHashtags ) ) {
636
- $hashtagsLength = $this->getStrLen( $newHashtags );
637
- $finalTweetLength += intval( $hashtagsLength );
638
- }
639
- if ( $post_with_image == "on" ) {
640
- $finalTweetLength += 25;
641
- }
642
- $finalTweetLength = $max_length - 1 - $finalTweetLength - 5;
643
- $tweetContent = $this->ropSubstr( $tweetContent, 0, $finalTweetLength );
644
- $finalTweet = $additionalTextBeginning . $tweetContent . " %short_urlshort_urlur% " . $newHashtags . $additionalTextEnd;
645
- $finalTweet = $this->ropSubstr( $finalTweet, 0, $max_length - 1 );
646
- $finalTweet = str_replace( "%short_urlshort_urlur%", $post_url, $finalTweet );
647
- $fTweet['message'] = strip_tags( $finalTweet );
648
- if ( $post_url != "" ) {
649
- $fTweet['link'] = $post_url;
650
- }
651
- //var_dump($fTweet['link']);
652
- // Strip any tags and return the final tweet
653
- return $fTweet;
654
- //var_dump(get_object_taxonomies( $postQuery->post_type, 'objects' ));
655
- //var_dump(get_the_terms($postQuery->ID,'download_category'));
656
- }
657
-
658
- /**
659
- * Tweets the returned post from generateTweetFromPost()
660
- * @param [type] $finalTweet Generated tweet
661
- */
662
-
663
- public function tweetPost($finalTweet,$network = 'twitter',$post)
664
- {
665
-
666
-
667
- foreach ($this->users as $user) {
668
- if($network == $user['service'] ){
669
-
670
- switch ($user['service']) {
671
- case 'twitter':
672
- // Create a new twitter connection using the stored user credentials.
673
- $connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
674
- $args = array('status' => $finalTweet['message']);
675
-
676
- if($this->isPostWithImageEnabled($network) && CWP_TOP_PRO) {
677
- global $CWP_TOP_Core_PRO;
678
-
679
-
680
- if(defined('ROP_IMAGE_CHECK')){
681
- $args = $CWP_TOP_Core_PRO->topProImage( $connection, $finalTweet, $post->ID, $network );
682
- if ( isset( $args['media[]'] ) ) {
683
- $response = $connection->upload( 'statuses/update_with_media', $args );
684
- } else {
685
- $response = $connection->post( 'statuses/update', $args );
686
- }
687
- }else{
688
- $CWP_TOP_Core_PRO->topProImage( $connection, $finalTweet['message'], $post->ID, $network );
689
- }
690
- }else{
691
-
692
- $response = $connection->post('statuses/update',$args);
693
- }
694
-
695
- if($response !== false){
696
- if(!is_object($response))
697
- $status = json_decode($response);
698
- if($status === false){
699
-
700
- // self::addNotice("Error for post ".$post->post_title." when sending to Twitter: Invalid response - ".$response,'error');
701
-
702
- }
703
- else{
704
- if($status->errors[0]->code != 200) {
705
- // self::addNotice("Error for post ".$post->post_title." when sending to Twitter: ".$status->errors[0]->message,'error');
706
-
707
-
708
- }
709
- else{
710
-
711
- }
712
- }
713
- if($connection->http_code == 200 ){
714
- self::addNotice("Post ".$post->post_title." has been successfully sent to Twitter.",'notice');
715
-
716
- }
717
- }
718
- break;
719
- case 'facebook':
720
-
721
- $args = array(
722
-
723
- 'body' => array( 'message' => $finalTweet['message'],'link' => $finalTweet['link']),
724
- 'timeout'=>20
725
-
726
- );
727
- if($this->isPostWithImageEnabled($network) && CWP_TOP_PRO){
728
- global $CWP_TOP_Core_PRO;
729
- if(defined('ROP_IMAGE_CHECK'))
730
- $args = $CWP_TOP_Core_PRO->topProImage($connection, $finalTweet, $post->ID,$network);
731
- }
732
-
733
- $pp=wp_remote_post("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/$user[id]/feed?access_token=$user[oauth_token]",$args);
734
- if(is_wp_error( $pp )){
735
- self::addNotice("Error for posting on facebook for - " .$post->post_title."".$pp->get_error_message(),'error' );
736
-
737
- }else{
738
- if($pp['response']['code'] == 200){
739
-
740
- self::addNotice("Post ". $post->post_title." has been successfully sent to facebook ",'notice');
741
- }else{
742
- self::addNotice("Error for post ". $post->post_title." ".$pp['response']['message']." on facebook for ".$user['oauth_user_details']->name,'error');
743
-
744
- }
745
-
746
- }
747
-
748
- break;
749
-
750
- case 'linkedin':
751
-
752
- $lk_message = str_replace("&", "&amp;",$finalTweet['message']);
753
- $sharedLink = str_replace("&", "&amp;",$finalTweet['link']);
754
- $content_xml = "";
755
- $visibility="anyone";
756
- $content_xml.="<content><title>".$lk_message."</title><submitted-url>".$sharedLink."</submitted-url></content>";
757
- $url = 'https://api.linkedin.com/v1/people/~/shares?oauth2_access_token='.$user["oauth_token"];
758
-
759
-
760
- $xml = '<?xml version="1.0" encoding="UTF-8"?><share>
761
- ' . $content_xml . '
762
- <visibility>
763
- <code>' . $visibility . '</code>
764
- </visibility>
765
- </share>';
766
- $headers = array(
767
- "Content-type: text/xml",
768
- "Content-length: " . strlen($xml),
769
- "Connection: close",
770
- );
771
-
772
- if (!function_exists('curl_version'))
773
- self::addNotice("Your host does not support CURL",'error');
774
- $ch = curl_init();
775
- curl_setopt($ch, CURLOPT_URL,$url);
776
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
777
- curl_setopt($ch, CURLOPT_TIMEOUT, 10);
778
- curl_setopt($ch, CURLOPT_POST, true);
779
- curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
780
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
781
-
782
- $data = curl_exec($ch);
783
-
784
-
785
- if(curl_errno($ch))
786
- {
787
-
788
- self::addNotice("Curl error: ". curl_error($ch),'error');
789
- }
790
- else{
791
- self::addNotice("Post ". $post->post_title." has been successfully sent to LinkedIN.",'notice');
792
- curl_close($ch);
793
- }
794
- break;
795
-
796
-
797
-
798
-
799
- }
800
-
801
- }
802
-
803
- }
804
- }
805
-
806
-
807
- public function system_info(){
808
-
809
- global $wpdb;
810
- if(CWP_TOP_PRO){
811
-
812
- $pro = get_plugin_data(ROPPROPLUGINPATH."/tweet-old-post-pro.php");
813
- }
814
- $lite = get_plugin_data(ROPPLUGINPATH."/tweet-old-post.php");
815
- if ( get_bloginfo( 'version' ) < '3.4' ) {
816
- $theme_data = get_theme_data( get_stylesheet_directory() . '/style.css' );
817
- $theme = $theme_data['Name'] . ' ' . $theme_data['Version'];
818
- } else {
819
- $theme_data = wp_get_theme();
820
- $theme = $theme_data->Name . ' ' . $theme_data->Version;
821
- }
822
-
823
- // Try to identifty the hosting provider
824
- $host = false;
825
- if( defined( 'WPE_APIKEY' ) ) {
826
- $host = 'WP Engine';
827
- } elseif( defined( 'PAGELYBIN' ) ) {
828
- $host = 'Pagely';
829
- }
830
- ?>
831
- <div class="wrap">
832
- <h2><?php _e( 'System Information', CWP_TEXTDOMAIN); ?></h2><br/>
833
- <form action="" method="post" dir="ltr">
834
- <textarea readonly="readonly" onclick="this.focus();this.select()" cols="100" id="system-info-textarea" name="cwp-top-sysinfo" rows="20" title="<?php _e( 'To copy the system info, click below then press Ctrl + C (PC) or Cmd + C (Mac).', 'edd' ); ?>">
835
-
836
- ## Please include this information when posting support requests ##
837
-
838
- ## BEGIN ROP CONFIGS ##
839
-
840
- <?php
841
- $options = get_option("top_opt_post_formats");
842
- $cwp_top_global_schedule = get_option("cwp_top_global_schedule");
843
- global $cwp_top_networks;
844
- echo "## ROP POST FORMAT";
845
- foreach($cwp_top_networks as $n=>$d){
846
- echo "\n \n \n ##".$n." \n \n \n";
847
-
848
-
849
-
850
-
851
- foreach($d as $f){
852
-
853
- echo $f['name']. " : ". $options[$n."_".$f['option']]." \n";
854
- }
855
-
856
- }
857
- ?>
858
-
859
- ## END ROP CONFIGS ##
860
-
861
- ## Begin CRON Info
862
-
863
- CRON Active: <?php echo (WP_CRON) ? "yes" : "no"; ?><?php echo "\n"; ?>
864
- Alternate WP Cron: <?php echo defined(ALTERNATE_WP_CRON) ? ((ALTERNATE_WP_CRON) ? "yes" : "no" ) : "no"; ?><?php echo "\n";
865
-
866
- ?>
867
- Time now: <?php echo date ( 'M j, Y @ G:i',time()); ?> <?php echo "\n"; ?>
868
- ROP Crons:
869
- <?php
870
- $all = $this->getAllNetworks();
871
- foreach($all as $nn ){
872
- if(wp_next_scheduled($nn.'roptweetcron',array($nn)) === false) continue;
873
- echo date ( 'M j, Y @ G:i', wp_next_scheduled($nn.'roptweetcron',array($nn)) );
874
- }
875
-
876
- ?>
877
-
878
- ## End Cron Info
879
-
880
- ##Begin General Settings:
881
-
882
- <?php
883
- global $cwp_top_fields;
884
- foreach($cwp_top_fields as $general_field){
885
- echo $general_field['name']. " : ";
886
- if(is_array(get_option($general_field['option'])))
887
- echo implode(",",get_option($general_field['option']))." \n" ;
888
- else
889
- echo get_option($general_field['option'])." \n";
890
- }
891
- ?>
892
-
893
- ##End General Settings
894
-
895
-
896
- <?php
897
- if(CWP_TOP_PRO):?>
898
- ##Begin Custom schedule settings:
899
-
900
- <?php foreach($all as $a) {
901
-
902
- if( $cwp_top_global_schedule[$a.'_schedule_type_selected'] == 'each')
903
- {
904
- echo strtoupper($a)." post on every ".$cwp_top_global_schedule[$a.'_top_opt_interval']." hours"." \n" ;
905
- }else{
906
- echo strtoupper($a)." post each ".$cwp_top_global_schedule[$a.'_top_opt_interval']['days']." days of the week at: "." \n" ;
907
- foreach($cwp_top_global_schedule[$a.'_top_opt_interval']['times'] as $time){
908
- echo ''.$time['hour']." : ".$time['minute']." \n " ;
909
-
910
-
911
- }
912
- }
913
- ?>
914
- <?php } ?>
915
-
916
- ##End Custom schedule settings
917
- <?php endif;
918
- ?>
919
-
920
- ### Begin System Info ###
921
-
922
-
923
- Multisite: <?php echo is_multisite() ? 'Yes' . "\n" : 'No' . "\n" ?>
924
-
925
- SITE_URL: <?php echo site_url() . "\n"; ?>
926
- HOME_URL: <?php echo home_url() . "\n"; ?>
927
- <?php if(CWP_TOP_PRO): ?>
928
- ROP PRO Version: <?php echo $pro['Version'] . "\n"; ?>
929
- <?php endif; ?>
930
- ROP Lite Version: <?php echo $lite['Version'] . "\n"; ?>
931
- WordPress Version: <?php echo get_bloginfo( 'version' ) . "\n"; ?>
932
- Permalink Structure: <?php echo get_option( 'permalink_structure' ) . "\n"; ?>
933
- Active Theme: <?php echo $theme . "\n"; ?>
934
- <?php if( $host ) : ?>
935
- Host: <?php echo $host . "\n"; ?>
936
- <?php endif; ?>
937
- PHP Version: <?php echo PHP_VERSION . "\n"; ?>
938
- MySQL Version: <?php echo mysql_get_server_info() . "\n"; ?>
939
- Web Server Info: <?php echo $_SERVER['SERVER_SOFTWARE'] . "\n"; ?>
940
- WordPress Memory Limit: <?php echo WP_MEMORY_LIMIT ; ?><?php echo "\n"; ?>
941
- PHP Safe Mode: <?php echo ini_get( 'safe_mode' ) ? "Yes" : "No\n"; ?>
942
- PHP Memory Limit: <?php echo ini_get( 'memory_limit' ) . "\n"; ?>
943
- PHP Upload Max Size: <?php echo ini_get( 'upload_max_filesize' ) . "\n"; ?>
944
- PHP Post Max Size: <?php echo ini_get( 'post_max_size' ) . "\n"; ?>
945
- PHP Upload Max Filesize: <?php echo ini_get( 'upload_max_filesize' ) . "\n"; ?>
946
- PHP Time Limit: <?php echo ini_get( 'max_execution_time' ) . "\n"; ?>
947
- PHP Max Input Vars: <?php echo ini_get( 'max_input_vars' ) . "\n"; ?>
948
- PHP Arg Separator: <?php echo ini_get( 'arg_separator.output' ) . "\n"; ?>
949
- PHP Allow URL File Open: <?php echo ini_get( 'allow_url_fopen' ) ? "Yes" : "No\n"; ?>
950
- WP_DEBUG: <?php echo defined( 'WP_DEBUG' ) ? WP_DEBUG ? 'Enabled' . "\n" : 'Disabled' . "\n" : 'Not set' . "\n" ?>
951
- WP Table Prefix: <?php echo "Length: ". strlen( $wpdb->prefix ); echo " Status:"; if ( strlen( $wpdb->prefix )>16 ) {echo " ERROR: Too Long";} else {echo " Acceptable";} echo "\n"; ?>
952
- Show On Front: <?php echo get_option( 'show_on_front' ) . "\n" ?>
953
- Page On Front: <?php $id = get_option( 'page_on_front' ); echo get_the_title( $id ) . ' (#' . $id . ')' . "\n" ?>
954
- Page For Posts: <?php $id = get_option( 'page_for_posts' ); echo get_the_title( $id ) . ' (#' . $id . ')' . "\n" ?>
955
- Session: <?php echo isset( $_SESSION ) ? 'Enabled' : 'Disabled'; ?><?php echo "\n"; ?>
956
- Session Name: <?php echo esc_html( ini_get( 'session.name' ) ); ?><?php echo "\n"; ?>
957
- Cookie Path: <?php echo esc_html( ini_get( 'session.cookie_path' ) ); ?><?php echo "\n"; ?>
958
- Save Path: <?php echo esc_html( ini_get( 'session.save_path' ) ); ?><?php echo "\n"; ?>
959
- Use Cookies: <?php echo ini_get( 'session.use_cookies' ) ? 'On' : 'Off'; ?><?php echo "\n"; ?>
960
- Use Only Cookies: <?php echo ini_get( 'session.use_only_cookies' ) ? 'On' : 'Off'; ?><?php echo "\n"; ?>
961
- DISPLAY ERRORS: <?php echo ( ini_get( 'display_errors' ) ) ? 'On (' . ini_get( 'display_errors' ) . ')' : 'N/A'; ?><?php echo "\n"; ?>
962
- FSOCKOPEN: <?php echo ( function_exists( 'fsockopen' ) ) ? 'Your server supports fsockopen.' : 'Your server does not support fsockopen.'; ?><?php echo "\n"; ?>
963
- cURL: <?php echo ( function_exists( 'curl_init' ) ) ? 'Your server supports cURL.' : 'Your server does not support cURL.'; ?><?php echo "\n"; ?>
964
- SOAP Client: <?php echo ( class_exists( 'SoapClient' ) ) ? 'Your server has the SOAP Client enabled.' : 'Your server does not have the SOAP Client enabled.'; ?><?php echo "\n"; ?>
965
-
966
- ACTIVE PLUGINS:
967
-
968
-
969
- <?php
970
- $plugins = get_plugins();
971
- $active_plugins = get_option( 'active_plugins', array() );
972
-
973
- foreach ( $plugins as $plugin_path => $plugin ) {
974
- // If the plugin isn't active, don't show it.
975
- if ( ! in_array( $plugin_path, $active_plugins ) )
976
- continue;
977
-
978
- echo $plugin['Name'] . ': ' . $plugin['Version'] ."\n";
979
- }
980
-
981
- if ( is_multisite() ) :
982
- ?>
983
-
984
- NETWORK ACTIVE PLUGINS:
985
-
986
- <?php
987
- $plugins = wp_get_active_network_plugins();
988
- $active_plugins = get_site_option( 'active_sitewide_plugins', array() );
989
-
990
- foreach ( $plugins as $plugin_path ) {
991
- $plugin_base = plugin_basename( $plugin_path );
992
-
993
- // If the plugin isn't active, don't show it.
994
- if ( ! array_key_exists( $plugin_base, $active_plugins ) )
995
- continue;
996
-
997
- $plugin = get_plugin_data( $plugin_path );
998
-
999
- echo "\t"."\t"."\t"."\t".$plugin['Name'] . ' :' . $plugin['Version'] ."\n";
1000
- }
1001
-
1002
- endif;
1003
- ?>
1004
-
1005
-
1006
-
1007
- ### End System Info ###
1008
-
1009
- ##Begin Log info
1010
-
1011
- <?php $logs = get_option('rop_notice_active');
1012
- foreach($logs as $log){
1013
- echo strtoupper($log['type']). " @ ".$log['time']. ' - '. $log['message']." \n ";
1014
-
1015
-
1016
- }
1017
- ?>
1018
- <?php ?>
1019
-
1020
- #End log info
1021
-
1022
- ##Begin user info
1023
-
1024
- <?php
1025
- foreach($all as $a ){
1026
- if(!isset($$a)) $$a = 0;
1027
- foreach($this->users as $us){
1028
- if($us['service'] == $a) $$a ++;
1029
-
1030
- }
1031
-
1032
- }
1033
- foreach($all as $a){
1034
- echo strtoupper($a)." accounts - ".$$a." \n";
1035
-
1036
- }
1037
-
1038
- ?>
1039
-
1040
- ##End user info
1041
-
1042
- </textarea>
1043
- <p class="submit">
1044
- <input type="hidden" name="cwp-action" value="download_sysinfo" />
1045
- <?php submit_button( 'Download System Info File', 'primary', 'cwp-download-sysinfo', false ); ?>
1046
- </p>
1047
- </form>
1048
- </div>
1049
- </div>
1050
- <?php
1051
- }
1052
- /*public function tweetPostwithImage($finalTweet, $id,$ntk = 'twitter')
1053
- {
1054
-
1055
- $k=1;
1056
- $tw=0;
1057
- $nrOfUsers = count($this->users);
1058
- $time = get_option("top_last_tweets");
1059
-
1060
- foreach ($this->users as $user) {
1061
-
1062
- if($ntk == $user['service'] ){
1063
- if(isset($time[$ntk])){
1064
- if(time() - $time[$ntk] < 60)
1065
- return false;
1066
-
1067
- }
1068
-
1069
- $time[$ntk] = time();
1070
- update_option("top_last_tweets",$time);
1071
- switch ($user['service']) {
1072
- case 'twitter':
1073
- // Create a new twitter connection using the stored user credentials.
1074
- $connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
1075
- // Post the new tweet
1076
- if (CWP_TOP_PRO){
1077
- global $CWP_TOP_Core_PRO;
1078
- $status = $CWP_TOP_Core_PRO->topProImage($connection, $finalTweet['message'], $id);
1079
- }
1080
- //var_dump($status);
1081
- //$tw++;
1082
- //} else {
1083
- /// //$connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
1084
- //$status = $connection->post('statuses/update', array('status' => "acesta e un tweet"));
1085
- //$tw++;
1086
- //}
1087
-
1088
- if ($nrOfUsers == $k)
1089
- return $status;
1090
- else
1091
- $k++;
1092
-
1093
- case 'facebook':
1094
- $args = array(
1095
-
1096
- 'body' => array( 'message' => $finalTweet['message'],'link' => $finalTweet['link']),
1097
-
1098
- );
1099
-
1100
- $pp=wp_remote_post("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/$user[id]/feed?access_token=$user[oauth_token]",$args);
1101
- if ($nrOfUsers == $k)
1102
- return $pp['response']['message'];
1103
- else
1104
- $k++;
1105
-
1106
- break;
1107
-
1108
- case 'linkedin':
1109
-
1110
- $lk_message = str_replace("&", "&amp;",$finalTweet['message']);
1111
- $sharedLink = str_replace("&", "&amp;",$finalTweet['link']);
1112
- $content_xml = "";
1113
- $visibility="anyone";
1114
- $content_xml.="<content><title>".$lk_message."</title><submitted-url>".$sharedLink."</submitted-url></content>";
1115
- $url = 'https://api.linkedin.com/v1/people/~/shares?oauth2_access_token='.$user["oauth_token"];
1116
-
1117
-
1118
- $xml = '<?xml version="1.0" encoding="UTF-8"?><share>
1119
- ' . $content_xml . '
1120
- <visibility>
1121
- <code>' . $visibility . '</code>
1122
- </visibility>
1123
- </share>';
1124
- $headers = array(
1125
- "Content-type: text/xml",
1126
- "Content-length: " . strlen($xml),
1127
- "Connection: close",
1128
- );
1129
- if (!function_exists('curl_version'))
1130
- update_option('cwp_topnew_notice',"You host does not support CURL");
1131
- $ch = curl_init();
1132
- curl_setopt($ch, CURLOPT_URL,$url);
1133
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1134
- curl_setopt($ch, CURLOPT_TIMEOUT, 10);
1135
- curl_setopt($ch, CURLOPT_POST, true);
1136
- curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
1137
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
1138
-
1139
- $data = curl_exec($ch);
1140
-
1141
- if ($nrOfUsers == $k)
1142
- return $data;
1143
- else
1144
- $k++;
1145
-
1146
- if(curl_errno($ch))
1147
- print curl_error($ch);
1148
- else
1149
- curl_close($ch);
1150
-
1151
- break;
1152
- default:
1153
- $connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
1154
- // Post the new tweet
1155
- if (CWP_TOP_PRO) {
1156
- global $$CWP_TOP_Core_PRO;
1157
- $status = $CWP_TOP_Core_PRO->topProImage( $connection, $finalTweet['message'], $id );
1158
- }
1159
- if ($nrOfUsers == $k)
1160
- return $status;
1161
- else
1162
- $k++;
1163
-
1164
-
1165
- }
1166
- }
1167
- //sleep(100);
1168
- }
1169
- }*/
1170
-
1171
- // Generates the tweet date range based on the user input.
1172
- public function getTweetPostDateRange()
1173
- {
1174
- if (get_option('top_opt_max_age_limit')==0 )
1175
- $limit = 9999;
1176
- else
1177
- $limit = intval(get_option('top_opt_max_age_limit'));
1178
-
1179
- if( !is_int($limit) ) {
1180
- self::addNotice("Incorect value for Maximum age of post to be eligible for sharing. Please check the value to be a number greater or equal than 0 ",'error');
1181
- return false;
1182
- }
1183
-
1184
- $min = intval(get_option('top_opt_age_limit'));
1185
-
1186
- if(!is_int($min) ){
1187
- self::addNotice("Incorect value for Minimum age of post to be eligible for sharing. Please check the value to be a number greater or equal than 0 ",'error');
1188
- return false;
1189
-
1190
- }
1191
- if($limit == 0 ){
1192
- $limit = 10*365;
1193
- }
1194
- if($limit < $min){
1195
- self::addNotice("Maximum age of post to be eligible for sharing must be greater than Minimum age of post to be eligible for sharing. Please check the value to be a number greater or equal than 0 ",'error');
1196
- return false;
1197
-
1198
- }
1199
-
1200
-
1201
-
1202
- $minLimit = time() - $min*24*60*60;
1203
- $maxLimit = time() - $limit*24*60*60;
1204
-
1205
- $minAgeLimit = date("Y-m-d H:i:s", $minLimit);
1206
- $maxAgeLimit = date("Y-m-d H:i:s", $maxLimit);
1207
- $dateQuery = array();
1208
- $dateQuery['before'] = $maxAgeLimit;
1209
- $dateQuery['after'] = $minAgeLimit;
1210
- $dateQuery['inclusive'] = true;
1211
- return $dateQuery;
1212
-
1213
-
1214
- }
1215
-
1216
- // Gets the omited tweet categories
1217
-
1218
- public function getExcludedCategories()
1219
- {
1220
- $postQueryCategories = "";
1221
- $postCategories = get_option('top_opt_omit_cats');
1222
-
1223
- if(!empty($postCategories) && is_array($postCategories)) {
1224
- $postQueryCategories = implode(',',$postCategories);
1225
- }
1226
- else
1227
- $postQueryCategories = get_option('top_opt_omit_cats');
1228
-
1229
- return $postQueryCategories;
1230
- }
1231
-
1232
- // Gets the tweet post type.
1233
- public function getTweetPostType()
1234
- {
1235
- $postQueryPostTypes = "";
1236
- $top_opt_post_type = get_option('top_opt_post_type');
1237
-
1238
- if(!empty($top_opt_post_type) && is_array($top_opt_post_type)) {
1239
- $postQueryPostTypes = implode(',',$top_opt_post_type);
1240
- }
1241
- else
1242
- $postQueryPostTypes = get_option('top_opt_post_type');
1243
-
1244
- return $postQueryPostTypes;
1245
-
1246
- }
1247
-
1248
-
1249
- // Creates a custom Tweet Old Post schedule
1250
- public function createCustomSchedule($schedules)
1251
- {
1252
- $schedules['cwp_top_schedule'] = array(
1253
- 'interval' => floatval($this->intervalSet) * 60 * 60,
1254
- 'display' => __("Custom Tweet User Interval", CWP_TEXTDOMAIN)
1255
- );
1256
-
1257
- return $schedules;
1258
- }
1259
-
1260
- // Clears the custom Tweet Old Post cron job.
1261
- public function clearScheduledTweets()
1262
- {
1263
- $all = $this->getAllNetworks();
1264
- foreach($all as $n){
1265
- wp_clear_scheduled_hook($n.'roptweetcron',array($n));
1266
- }
1267
- }
1268
-
1269
- // Deactivation hook
1270
- public function deactivationHook()
1271
- {
1272
- delete_option('activation_hook_test_motherfucker');
1273
- $this->clearScheduledTweets();
1274
- $this->deleteAllOptions();
1275
- }
1276
-
1277
- // Sets all authentication settings
1278
- public function setAlloAuthSettings()
1279
- {
1280
- global $cwp_top_settings;
1281
-
1282
- $this->consumer = $cwp_top_settings['oAuth_settings']['consumer_key'];
1283
- $this->consumerSecret = $cwp_top_settings['oAuth_settings']['consumer_secret'];
1284
- $this->oAuthCallback = CURRENTURL;
1285
-
1286
- $this->cwp_top_access_token = get_option('cwp_top_access_token');
1287
- $this->cwp_top_oauth_token = get_option('cwp_top_oauth_token');
1288
- $this->cwp_top_oauth_token_secret = get_option('cwp_top_oauth_token_secret');
1289
-
1290
- $this->user_info = get_option('cwp_top_oauth_user_details');
1291
- $this->users = get_option('cwp_top_logged_in_users');
1292
- if(!is_array($this->users)) $this->users = array();
1293
- $ok_update = false;
1294
- foreach($this->users as $k=>$user){
1295
- if(!isset($user['service'])){
1296
- if(strpos($user['oauth_user_details']->profile_image_url,'twimg')){
1297
-
1298
- $this->users[$k]['service'] = 'twitter';
1299
- }
1300
- if(strpos($user['oauth_user_details']->profile_image_url,'facebook')){
1301
-
1302
- $this->users[$k]['service'] = 'facebook';
1303
- }
1304
- if(strpos($user['oauth_user_details']->profile_image_url,'licdn')){
1305
-
1306
- $this->users[$k]['service'] = 'linkedin';
1307
- }
1308
- $ok_update = true;
1309
- }
1310
-
1311
- }
1312
- if($ok_update){
1313
-
1314
- update_option('cwp_top_logged_in_users',$this->users);
1315
-
1316
- }
1317
- $this->pluginStatus = get_option('cwp_topnew_active_status');
1318
- $this->intervalSet = get_option('top_opt_interval');
1319
-
1320
- self::$date_format = 'M j, Y @ G:i';
1321
- //update_option('cwp_top_logged_in_users', '');
1322
- }
1323
-
1324
- // Checks if twitter returned any temporary credentials to log in the user.
1325
- public function afterAddAccountCheck()
1326
- {
1327
- if( time() - get_option("top_reauthorize") > 2592000 )
1328
- $this->reAuthorize();
1329
- global $cwp_top_settings;
1330
- $code="";
1331
- if(isset($_REQUEST['code']))
1332
- $code = $_REQUEST["code"];
1333
-
1334
- if(isset($_REQUEST['oauth_token'])) {
1335
- if($_REQUEST['oauth_token'] == $this->cwp_top_oauth_token) {
1336
-
1337
- $twitter = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $this->cwp_top_oauth_token, $this->cwp_top_oauth_token_secret );
1338
- $access_token = $twitter->getAccessToken($_REQUEST['oauth_verifier']);
1339
- $user_details = $twitter->get('account/verify_credentials');
1340
-
1341
- $newUser = array(
1342
- 'user_id' => $user_details->id,
1343
- 'oauth_token' => $access_token['oauth_token'],
1344
- 'oauth_token_secret' => $access_token['oauth_token_secret'],
1345
- 'oauth_user_details' => $user_details,
1346
- 'service' => 'twitter'
1347
- );
1348
-
1349
- $loggedInUsers = get_option('cwp_top_logged_in_users');
1350
- if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1351
-
1352
-
1353
- if(in_array($newUser, $loggedInUsers)) {
1354
- echo "You already added that user! no can do !";
1355
- } else {
1356
- array_push($loggedInUsers, $newUser);
1357
- update_option('cwp_top_logged_in_users', $loggedInUsers);
1358
- }
1359
-
1360
- header("Location: " . top_settings_url());
1361
- exit;
1362
- }
1363
- }
1364
-
1365
- if(isset($_REQUEST['state']) && (get_option('top_fb_session_state') === $_REQUEST['state'])) {
1366
-
1367
- $token_url = "https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/oauth/access_token?"
1368
- . "client_id=" . get_option('cwp_top_app_id') . "&redirect_uri=" . top_settings_url()
1369
- . "&client_secret=" . get_option('cwp_top_app_secret') . "&code=" . $code;
1370
-
1371
- $params = null;$access_token="";
1372
- $response = wp_remote_get($token_url);
1373
-
1374
- if(is_array($response))
1375
- {
1376
- if(isset($response['body']))
1377
- {
1378
- parse_str($response['body'], $params);
1379
- if(isset($params['access_token']))
1380
- $access_token = $params['access_token'];
1381
- }
1382
- }
1383
-
1384
- if($access_token!="")
1385
- {
1386
- update_option('top_fb_token',$access_token);
1387
-
1388
- }
1389
- header("Location: " . top_settings_url().'#fbadd');
1390
- }
1391
-
1392
- if (isset($_GET['code'])&&isset($_GET['state'])&&get_option('top_lk_session_state') == $_GET['state']) {
1393
-
1394
- $lk_auth_token = get_option('cwp_top_lk_app_id');
1395
- $lk_auth_secret = get_option('cwp_top_lk_app_secret');
1396
- $params = array('grant_type' => 'authorization_code',
1397
- 'client_id' => $lk_auth_token,
1398
- 'client_secret' => $lk_auth_secret,
1399
- 'code' => $_GET['code'],
1400
- 'redirect_uri' => top_settings_url(),
1401
- );
1402
-
1403
- $url = 'https://www.linkedin.com/uas/oauth2/accessToken?' . http_build_query($params);
1404
- //echo $url;
1405
- $response = wp_remote_post($url);
1406
- $token = json_decode($response['body']);
1407
- //print_r($response);
1408
- //print_r($token);
1409
- if($token->access_token) {
1410
- // the request went through without an error, gather user's 'access' tokens
1411
- //AQVBBQ6_ggJaUVFYmJ5oVF_kSH-wn6VNREGgC_sYPWp0YV0U4r2CFwptnLXUbJra5Glp0ZMax96CrD2azzf_HkJ2UdLp5q5zoiT_rbl5bmTMf50XnDfRcdm8Vl2k2XoYhGQ-LkYTnddFz1K-OBcW0CWsapzgZH2hepMVMhc1Lw7bhwTab04"
1412
- update_option('top_linkedin_token',$token->access_token);
1413
- update_option('top_linkedin_token_expires',$token->expires_in);
1414
- }
1415
-
1416
- $url = 'https://api.linkedin.com/v1/people/~:(id,picture-url,first_name,last_name)?oauth2_access_token='.$token->access_token;
1417
- //echo $url;
1418
- $response = wp_remote_get($url);
1419
- $response = wp_remote_retrieve_body($response);
1420
- //print_r($response);
1421
- $person = simplexml_load_string($response);
1422
-
1423
- if (isset($person->id)) {
1424
- $user_details = array('profile_image_url' => (string)$person->{'picture-url'},'name'=> (string)$person->{'first-name'} );
1425
-
1426
- $newUser = array(
1427
- 'user_id' => (string)$person->id,
1428
- 'oauth_token' => $token->access_token,
1429
- 'oauth_token_secret' => '',
1430
- 'oauth_user_details' => (object)$user_details,
1431
- 'service' => 'linkedin'
1432
- );
1433
-
1434
- $loggedInUsers = get_option('cwp_top_logged_in_users');
1435
- if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1436
-
1437
- foreach ($loggedInUsers as $key=>$user) {
1438
- if ($user['user_id'] == $person->id)
1439
- unset($loggedInUsers[$key]);
1440
- }
1441
-
1442
- if(in_array($newUser, $loggedInUsers)) {
1443
- echo "You already added that user! no can do !";
1444
- } else {
1445
- array_push($loggedInUsers, $newUser);
1446
- update_option('cwp_top_logged_in_users', $loggedInUsers);
1447
- }
1448
- }
1449
- header("Location: " . top_settings_url());
1450
- }
1451
-
1452
-
1453
- }
1454
-
1455
- // Used to display the login buttons
1456
- public function displayLoginButton($social_network)
1457
- {
1458
- // display the twitter login button
1459
- if($this->userIsLoggedIn($social_network)) {
1460
- $this->setAlloAuthSettings($social_network);
1461
- return true;
1462
- } else {
1463
- return false;
1464
- }
1465
- }
1466
-
1467
- public function reAuthorize() {
1468
- $top_session_state = uniqid('', true);
1469
- update_option('top_reauthorize',time());
1470
- $loggedInUsers = get_option('cwp_top_logged_in_users');
1471
- if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1472
- $lk = 0;
1473
- $fb = 0;
1474
-
1475
- foreach ($loggedInUsers as $key=>$user) {
1476
- if ($user['service'] === "linkedin"&&$lk===0) {
1477
- $lk++;
1478
- $url = 'https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id='.get_option("cwp_top_lk_app_id").'&scope=rw_nus&state='.$top_session_state.'&redirect_uri='.top_settings_url();
1479
- header("Location: " . $url);
1480
-
1481
- update_option('top_lk_session_state',$top_session_state);
1482
-
1483
- }
1484
-
1485
- if ($user['service'] === "facebook"&&$fb===0) {
1486
- $top_session_state_fb = md5(uniqid(rand(), TRUE));
1487
- $fb++;
1488
- update_option('top_fb_session_state',$top_session_state_fb);
1489
- $dialog_url = "https://www.facebook.com/".ROP_TOP_FB_API_VERSION."/dialog/oauth?client_id="
1490
- . get_option("cwp_top_app_id") . "&redirect_uri=" . top_settings_url() . "&state="
1491
- . $top_session_state_fb . "&scope=publish_stream,publish_actions,manage_pages";
1492
-
1493
- header("Location: " . $dialog_url);
1494
- }
1495
- }
1496
-
1497
- }
1498
-
1499
- // Adds pages
1500
- public function displayPages()
1501
- {
1502
-
1503
- if(!is_admin()) return false;
1504
- $social_network = $_POST['social_network'];
1505
- $access_token = get_option('top_fb_token');
1506
-
1507
- switch ($social_network) {
1508
- case 'facebook':
1509
- $result1="";$pagearray1="";
1510
- $pp=wp_remote_get("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/me/accounts?access_token=$access_token&limit=100&offset=0");
1511
- //print_r($pp);
1512
- $me=wp_remote_get("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/me/?access_token=$access_token&limit=100&offset=0");
1513
- if(is_array($pp))
1514
- {
1515
- $result1=$pp['body'];
1516
- $result2 = $me['body'];
1517
- $pagearray2 = json_decode($result2);
1518
- //print_r($pagearray2);
1519
- $pagearray1 = json_decode($result1);
1520
- $profile['name'] = $pagearray2->first_name.' '.$pagearray2->last_name;
1521
- $profile['id'] = $pagearray2->id;
1522
- $profile['category'] ='profile';
1523
- $profile['access_token'] = $access_token;
1524
- if(is_array($pagearray1->data))
1525
- array_unshift($pagearray1->data, $profile);
1526
- //$pagearray1->data[count($pagearray1->data)] = $profile;
1527
- $result1 = json_encode($pagearray1);
1528
- //print_r($results1);
1529
- echo $result1;
1530
-
1531
- }
1532
- break;
1533
- }
1534
- die(); // Required
1535
- }
1536
- public function adminNotice(){
1537
- if(is_array($this->notices)){
1538
-
1539
- foreach($this->notices as $n){
1540
- ?>
1541
- <div class="error">
1542
- <p><?php _e( $n, CWP_TEXTDOMAIN ); ?></p>
1543
- </div>
1544
- <?php
1545
- }
1546
- }
1547
-
1548
- }
1549
- public function addPages()
1550
- {
1551
-
1552
- if(!is_admin()) return false;
1553
- $social_network = $_POST['social_network'];
1554
- $access_token = $_POST['page_token'];
1555
- $page_id= $_POST['page_id'];
1556
-
1557
- switch ($social_network) {
1558
- case 'facebook':
1559
- $user_details['profile_image_url'] = $_POST['picture_url'];
1560
- $user_details['name'] = $_POST['page_name'];
1561
- $user_details = (object) $user_details;
1562
- $newUser = array(
1563
- 'user_id' => $page_id,
1564
- 'oauth_token' => $access_token,
1565
- 'oauth_token_secret' => "",
1566
- 'oauth_user_details' => $user_details,
1567
- 'service' => 'facebook'
1568
- );
1569
-
1570
- $loggedInUsers = get_option('cwp_top_logged_in_users');
1571
- if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1572
-
1573
- foreach ($loggedInUsers as $key=>$user) {
1574
- if ($user['user_id'] == $page_id)
1575
- unset($loggedInUsers[$key]);
1576
- }
1577
-
1578
- if(in_array($newUser, $loggedInUsers)) {
1579
- echo "You already added that user! no can do !";
1580
- } else {
1581
- array_push($loggedInUsers, $newUser);
1582
- update_option('cwp_top_logged_in_users', $loggedInUsers);
1583
- echo top_settings_url();
1584
- }
1585
-
1586
-
1587
- break;
1588
- }
1589
- die(); // Required
1590
- }
1591
-
1592
- // Adds new account
1593
- public function addNewAccount()
1594
- {
1595
-
1596
- if(!is_admin()) return false;
1597
- global $cwp_top_settings;
1598
- $social_network = $_POST['social_network'];
1599
- $networks = $this->getAvailableNetworks();
1600
- $response = array();
1601
- if($social_network == 'linkedin' && !CWP_TOP_PRO){
1602
- self::addNotice("You need to <a target='_blank' href='https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=topplusacc&utm_medium=announce&utm_campaign=top&upgrade=true'>upgrade to the PRO version</a> in order to add a Linkedin account, fellow pirate!",'error');
1603
-
1604
-
1605
- }else if(in_array($social_network,$networks) && !CWP_TOP_PRO) {
1606
- self::addNotice("You need to <a target='_blank' href='https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=topplusacc&utm_medium=announce&utm_campaign=top&upgrade=true'>upgrade to the PRO version</a> in order to add more accounts, fellow pirate!",'error');
1607
-
1608
-
1609
- }else{
1610
- switch ($social_network) {
1611
- case 'twitter':
1612
- $this->oAuthCallback = $_POST['currentURL'];
1613
- $twitter = new RopTwitterOAuth($this->consumer, $this->consumerSecret);
1614
- $requestToken = $twitter->getRequestToken($this->oAuthCallback);
1615
-
1616
- update_option('cwp_top_oauth_token', $requestToken['oauth_token']);
1617
- update_option('cwp_top_oauth_token_secret', $requestToken['oauth_token_secret']);
1618
-
1619
- switch ($twitter->http_code) {
1620
- case 200:
1621
- $url = $twitter->getAuthorizeURL($requestToken['oauth_token']);
1622
- $response['url'] = $url;
1623
- break;
1624
-
1625
- default:
1626
- self::addNotice(__("Could not connect to Twitter!"),CWP_TEXTDOMAIN);
1627
-
1628
- break;
1629
- }
1630
- break;
1631
- case 'facebook':
1632
- if (empty($_POST['extra']['app_id'])){
1633
- self::addNotice(__("Could not connect to Facebook! You need to add the App ID",CWP_TEXTDOMAIN),'error');
1634
- }else
1635
- if (empty($_POST['extra']['app_secret'])){
1636
- self::addNotice(__("Could not connect to Facebook! You need to add the App Secret",CWP_TEXTDOMAIN),'error');
1637
-
1638
- }else{
1639
- update_option('cwp_top_app_id', $_POST['extra']['app_id']);
1640
- update_option('cwp_top_app_secret', $_POST['extra']['app_secret']);
1641
-
1642
- $top_session_state = md5(uniqid(rand(), TRUE));
1643
-
1644
- update_option('top_fb_session_state',$top_session_state);
1645
- $dialog_url = "https://www.facebook.com/".ROP_TOP_FB_API_VERSION."/dialog/oauth?client_id="
1646
- . $_POST['extra']['app_id'] . "&redirect_uri=" . top_settings_url() . "&state="
1647
- . $top_session_state . "&scope=publish_stream,publish_actions,manage_pages";
1648
-
1649
- $response['url'] = $dialog_url;
1650
-
1651
- }
1652
-
1653
- break;
1654
- case 'linkedin':
1655
- if (empty($_POST['extra']['app_id'])){
1656
- self::addNotice(__("Could not connect to Linkedin! You need to add the App ID",CWP_TEXTDOMAIN),'error');
1657
- }else
1658
- if (empty($_POST['extra']['app_secret'])){
1659
- self::addNotice(__("Could not connect to Linkedin! You need to add the App Secret",CWP_TEXTDOMAIN),'error');
1660
-
1661
- }else{
1662
- $top_session_state = uniqid('', true);
1663
- $url = 'https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id='.$_POST['extra']["app_id"].'&scope=rw_nus&state='.$top_session_state.'&redirect_uri='.top_settings_url();
1664
-
1665
- update_option('top_lk_session_state',$top_session_state);
1666
- update_option('cwp_top_lk_app_id', $_POST['extra']['app_id']);
1667
- update_option('cwp_top_lk_app_secret', $_POST['extra']['app_secret']);
1668
-
1669
- $response['url'] = $url;
1670
-
1671
-
1672
- }
1673
-
1674
-
1675
-
1676
- break;
1677
-
1678
-
1679
- }
1680
-
1681
- }
1682
-
1683
- echo json_encode($response);
1684
-
1685
- die(); // Required
1686
- }
1687
-
1688
- // Adds more than one account
1689
- public function addNewAccountPro()
1690
- {
1691
-
1692
- if(!is_admin()) return false;
1693
- if (CWP_TOP_PRO) {
1694
- global $CWP_TOP_Core_PRO;
1695
- $CWP_TOP_Core_PRO->topProAddNewAccount($_POST['social_network']);
1696
- }
1697
- else{
1698
- update_option('cwp_topnew_notice',"You need to <a target='_blank' href='https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=topplusacc&utm_medium=announce&utm_campaign=top&upgrade=true'>upgrade to the PRO version</a> in order to add more accounts, fellow pirate!");
1699
- echo "You need to <a target='_blank' href='https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=topplusacc&utm_medium=announce&utm_campaign=top&upgrade=true'>upgrade to the PRO version</a> in order to add more accounts, fellow pirate!";
1700
-
1701
- }
1702
- die(); // Required
1703
- }
1704
-
1705
- // Gets the next tweet interval.
1706
- public function getNextTweetInterval()
1707
- {
1708
- $timestamp = wp_next_scheduled( 'cwptoptweetcronnew' );
1709
-
1710
- //echo $timestamp;
1711
- //$timestamp = date("Y-m-d H:i:s", $timestamp);
1712
- //$timeLeft = get_date_from_gmt($timestamp);
1713
- //$timeLeft = strtotime($timeLeft);
1714
- echo $timestamp;
1715
- }
1716
-
1717
- // Checks if the user is logged in/
1718
- public function userIsLoggedIn()
1719
- {
1720
- if(!empty($this->cwp_top_oauth_token) && !empty($this->cwp_top_oauth_token_secret)) {
1721
- return true;
1722
- } else {
1723
- return false;
1724
- }
1725
- }
1726
-
1727
- // Clears all Twitter user credentials.
1728
- public function logOutUser()
1729
- {
1730
- if(!is_admin()) return false;
1731
- $userID = $_POST['user_id'];
1732
-
1733
- $users = get_option('cwp_top_logged_in_users');
1734
-
1735
- foreach ($users as $id => $user) {
1736
- foreach ($user as $key => $value) {
1737
- if($userID == $value) {
1738
- $user_id = array_search($user, $users);
1739
- unset($users[$user_id]);
1740
- }
1741
- }
1742
- }
1743
-
1744
- update_option('cwp_top_logged_in_users', $users);
1745
-
1746
- $this->setAlloAuthSettings();
1747
- die();
1748
- }
1749
-
1750
- function getUpperDays($day,$days){
1751
- $tmp = array();
1752
- foreach($days as $d){
1753
- if($day <= $d){
1754
- $tmp[] = $d;
1755
- }
1756
- }
1757
- return $tmp;
1758
- }
1759
- function getNextTweetTime($network){
1760
- $time = 0;
1761
- if(!CWP_TOP_PRO){
1762
- $time = $this->getTime() + ( floatval(get_option('top_opt_interval')) * 3600 ) ;
1763
- if($time > $this->getTime()) {
1764
- return $time;
1765
- }else{
1766
- return 0;
1767
- }
1768
- }
1769
- $cwp_top_global_schedule = get_option("cwp_top_global_schedule" );
1770
- $type = $cwp_top_global_schedule[$network.'_schedule_type_selected'];
1771
- if($type == 'each'){
1772
- $time = $this->getTime() + floatval($cwp_top_global_schedule[$network.'_top_opt_interval']) * 3600;
1773
- if($time > $this->getTime()) {
1774
- return $time;
1775
- }else{
1776
- return 0;
1777
- }
1778
- }else{
1779
- if (date('N', $this->getTime()) == 1){
1780
- $start = strtotime("monday this week",$this->getTime()) ;
1781
- }else{
1782
- $start = strtotime("last Monday",$this->getTime()) ;
1783
- }
1784
-
1785
- $days = explode(",",$cwp_top_global_schedule[$network.'_top_opt_interval']['days']);
1786
- $times = $cwp_top_global_schedule[$network.'_top_opt_interval']['times'];
1787
- $schedules_days = array();
1788
- if(count($times) == 0 ) return false;
1789
- if(count($days) == 0 ) return false;
1790
- foreach($days as $rday){
1791
- $schedules_days[] = $start + ($rday-1) * 3600 * 24;
1792
-
1793
- }
1794
- $schedules = array();
1795
- foreach($schedules_days as $schedule){
1796
-
1797
- foreach($times as $time){
1798
-
1799
- $schedules[] = $schedule + floatval($time['hour']) * 3600 + floatval($time['minute']) * 60;
1800
-
1801
- }
1802
-
1803
- }
1804
- sort($schedules,SORT_REGULAR);
1805
-
1806
- $ctime = $this->getTime();
1807
- foreach($schedules as $s ){
1808
- if($s > $ctime ) {
1809
- return $s;
1810
- }
1811
-
1812
- }
1813
- return 0;
1814
- }
1815
- return 0;
1816
- }
1817
- public function getAllOptions(){
1818
- $options = array();
1819
-
1820
- global $cwp_top_networks;
1821
- $all = $this->getAllNetworks();
1822
- foreach($cwp_top_networks as $n=>$d){
1823
- foreach($d as $df){
1824
-
1825
- $options[] = $n."_".$df['option'];
1826
-
1827
- }
1828
- }
1829
- foreach($all as $a){
1830
-
1831
- $options[] = $a."_schedule_type_selected";
1832
- $options[] = $a."_top_schedule_days";
1833
- $options[] = $a."_time_choice_hour";
1834
- $options[] = $a."_top_opt_interval";
1835
- $options[] = $a."_time_choice_min";
1836
- }
1837
- global $cwp_top_fields;
1838
- foreach ($cwp_top_fields as $field)
1839
- {
1840
- $options[] = $field['option'];
1841
- }
1842
- return $options;
1843
- }
1844
- public function sanitizeRequest(){
1845
-
1846
- $dataSent = $_POST['dataSent']['dataSent'];
1847
- $valid = array();
1848
- parse_str($dataSent, $options);
1849
- $all_options = $this->getAllOptions();
1850
- $invalid = array();
1851
- foreach($options as $k => $option ){
1852
- if(in_array($k,$all_options)){
1853
- $valid[$k] = $option;
1854
-
1855
- }else{
1856
- $invalid[] = $k;
1857
- }
1858
-
1859
- }
1860
- $_POST['dataSent']['dataSent'] = http_build_query($valid);
1861
- }
1862
- // Updates all options.
1863
- public function updateAllOptions()
1864
- {
1865
- if(!is_admin()) return false;
1866
- $dataSent = $_POST['dataSent']['dataSent'];
1867
- $this->sanitizeRequest();
1868
- $options = array();
1869
-
1870
- parse_str($dataSent, $options);
1871
- foreach ($options as $option => $newValue) {
1872
- //$newValue = sanitize_text_field($newValue);
1873
- update_option($option, $newValue);
1874
- }
1875
-
1876
- //update_option('top_opt_post_type', 'post');
1877
-
1878
- if(!array_key_exists('top_opt_custom_url_option', $options)) {
1879
- update_option('top_opt_custom_url_option', 'off');
1880
- }
1881
-
1882
- if(!array_key_exists('top_opt_use_url_shortner', $options)) {
1883
- update_option('top_opt_use_url_shortner', 'off');
1884
- }
1885
-
1886
- if(!array_key_exists('top_opt_post_with_image', $options)) {
1887
- update_option('top_opt_post_with_image', 'off');
1888
- }
1889
-
1890
- if(!array_key_exists('top_opt_tweet_multiple_times', $options)) {
1891
- update_option('top_opt_tweet_multiple_times', 'off');
1892
- }
1893
-
1894
- if(!array_key_exists('top_opt_ga_tracking', $options)) {
1895
- update_option('top_opt_ga_tracking', 'off');
1896
- }
1897
-
1898
- //if(!array_key_exists('top_opt_tweet_specific_category', $options)) {
1899
- // update_option('top_opt_tweet_specific_category', '');
1900
- //}
1901
-
1902
- if(!array_key_exists('top_opt_omit_cats', $options)) {
1903
- update_option('top_opt_omit_cats', '');
1904
- }
1905
-
1906
- if(!array_key_exists('top_opt_post_type', $options)) {
1907
- update_option('top_opt_post_type', 'post');
1908
- }
1909
-
1910
- //update_option("top_opt_already_tweeted_posts", array());
1911
- $this->updateAllPostFormat();
1912
- if(CWP_TOP_PRO){
1913
-
1914
- global $CWP_TOP_Core_PRO;
1915
- $CWP_TOP_Core_PRO->updateTopProAjax();
1916
- }
1917
- die();
1918
- }
1919
-
1920
- public function updateAllPostFormat()
1921
- {
1922
- global $cwp_top_networks;
1923
- $dataSent = $_POST['dataSent']['dataSent'];
1924
-
1925
- $options = array();
1926
- parse_str($dataSent, $options);
1927
-
1928
- //print_r($options);
1929
- foreach($cwp_top_networks as $n=>$d){
1930
-
1931
- if(!array_key_exists($n.'_top_opt_custom_url_option', $options)) {
1932
- $options[$n.'_top_opt_custom_url_option'] = 'off';
1933
- }
1934
-
1935
- if(!array_key_exists($n.'_top_opt_use_url_shortner', $options)) {
1936
- $options[$n.'_top_opt_use_url_shortner'] = 'off';
1937
- }
1938
-
1939
- if(!array_key_exists($n.'_top_opt_post_with_image', $options)) {
1940
- $options[$n.'_top_opt_post_with_image'] = 'off';
1941
- }
1942
-
1943
- if(!array_key_exists($n.'_top_opt_tweet_multiple_times', $options)) {
1944
- $options[$n.'_top_opt_tweet_multiple_times'] = 'off';
1945
- }
1946
-
1947
- if(!array_key_exists($n.'_top_opt_ga_tracking', $options)) {
1948
- $options[$n.'_top_opt_ga_tracking'] = 'off';
1949
- }
1950
-
1951
- //if(!array_key_exists('top_opt_tweet_specific_category', $options)) {
1952
- // update_option('top_opt_tweet_specific_category', '');
1953
- //}
1954
-
1955
- if(!array_key_exists($n.'_top_opt_omit_cats', $options)) {
1956
- $options[$n.'_top_opt_omit_cats'] = '';
1957
- }
1958
-
1959
- if(!array_key_exists($n.'_top_opt_post_type', $options)) {
1960
- $options[$n.'_top_opt_post_type'] = 'post';
1961
- }
1962
-
1963
- }
1964
-
1965
- update_option('top_opt_post_formats', $options);
1966
-
1967
- }
1968
-
1969
- public function top_admin_notice() {
1970
- global $current_user ;
1971
- $user_id = $current_user->ID;
1972
- /* Check that the user hasn't already clicked to ignore the message */
1973
- if ( ! get_user_meta($user_id, 'top_ignore_notice3') ) {
1974
- // echo '<div class="error"><p>';
1975
- // printf(__(' We just fixed the interrupted posting issue and scheduling issue, if you don\'t see any tweets you need to re-authentificate your twitter accounts. | <a href="'.SETTINGSURL.'&top_nag_ignore=0">Hide Notice</a>'));
1976
- // echo "</p></div>";
1977
- }
1978
- }
1979
- public function top_nag_ignore() {
1980
-
1981
- global $current_user;
1982
- $user_id = $current_user->ID;
1983
- /* If user clicks to ignore the notice, add that to their user meta */
1984
- if ( isset($_GET['top_nag_ignore']) && '0' == $_GET['top_nag_ignore'] ) {
1985
- add_user_meta($user_id, 'top_ignore_notice3', 'true', true);
1986
- }
1987
- }
1988
-
1989
- public function resetAllOptions()
1990
- {
1991
-
1992
- if(!is_admin()) return false;
1993
- update_option('activation_hook_test_motherfucker', "Well, the plugin was activated!");
1994
-
1995
- $defaultOptions = array(
1996
- 'top_opt_tweet_type' => 'title',
1997
- 'top_opt_post_with_image' => 'off',
1998
- 'top_opt_bitly_user' =>'',
1999
- 'top_opt_bitly_key' =>'',
2000
- 'top_opt_post_type_custom_field' => '',
2001
- 'top_opt_add_text' => '',
2002
- 'top_opt_add_text_at' => 'beginning',
2003
- 'top_opt_include_link' => 'true',
2004
- 'top_opt_custom_url_option' => 'off',
2005
- 'top_opt_use_url_shortner' => 'off',
2006
- 'top_opt_ga_tracking' => 'on',
2007
- 'top_opt_url_shortner' => 'is.gd',
2008
- 'top_opt_custom_hashtag_option' => 'nohashtag',
2009
- 'top_opt_hashtags' => '',
2010
- 'top_opt_hashtag_length' => '0',
2011
- 'top_opt_custom_hashtag_field' => '',
2012
- 'top_opt_interval' => '8',
2013
- 'top_opt_age_limit' => '30',
2014
- 'top_opt_max_age_limit' => '0',
2015
- 'top_opt_no_of_tweet' => '1',
2016
- 'top_opt_post_type' => 'post',
2017
- 'top_opt_post_type_value' => 'post',
2018
- 'top_opt_custom_url_field' => '',
2019
- 'top_opt_omit_cats' => '',
2020
- 'cwp_topnew_active_status' => 'false',
2021
- 'cwp_topnew_notice' => '',
2022
- 'top_opt_excluded_post' => '',
2023
- 'top_opt_tweet-multiple-times' => 'off',
2024
- 'cwp_top_logged_in_users' => '',
2025
- 'top_fb_token' =>'',
2026
- 'top_opt_post_formats' =>''
2027
- );
2028
-
2029
- foreach ($defaultOptions as $option => $defaultValue) {
2030
- update_option($option, $defaultValue);
2031
- }
2032
-
2033
-
2034
- update_option("top_opt_post_formats",array());
2035
- update_option("cwp_top_global_schedule",array());
2036
- $this->clearScheduledTweets();
2037
- //die();
2038
- }
2039
-
2040
- public function deleteAllOptions()
2041
- {
2042
- global $defaultOptions;
2043
- foreach ($defaultOptions as $option => $defaultValue) {
2044
- delete_option($option);
2045
- }
2046
- }
2047
-
2048
- // Generate all fields based on settings
2049
- public static function generateFieldType($field)
2050
- {
2051
- $disabled = "";
2052
- $pro = "";
2053
-
2054
- switch ($field['type']) {
2055
-
2056
- case 'text':
2057
- if (isset($field['available_pro'])) {
2058
-
2059
-
2060
- if(!CWP_TOP_PRO && $field['available_pro'] == 'yes'){
2061
- $pro = CWP_TOP_PRO_STRING;
2062
- $disabled = "disabled='disabled'";
2063
- }
2064
- }
2065
- echo "<input type='text' placeholder='".__($field['description'],CWP_TEXTDOMAIN)."' ".$disabled." value='".$field['option_value']."' name='".$field['option']."' id='".$field['option']."'><br/>".$pro;
2066
- break;
2067
-
2068
- case 'number':
2069
- if (isset($field['available_pro'])) {
2070
-
2071
-
2072
- if(!CWP_TOP_PRO){
2073
- $pro = CWP_TOP_PRO_STRING;
2074
- $disabled = "disabled='disabled'";
2075
- }
2076
- }
2077
- echo "<input type='number' placeholder='".__($field['description'],CWP_TEXTDOMAIN)."' ".$disabled." value='".$field['option_value']."' max='".$field['max-length']."' name='".$field['option']."' id='".$field['option']."'><br/>".$pro;
2078
- break;
2079
-
2080
- case 'select':
2081
- $noFieldOptions = intval(count($field['options']));
2082
- $fieldOptions = array_keys($field['options']);
2083
- if (isset($field['available_pro'])) {
2084
-
2085
-
2086
- if(!CWP_TOP_PRO && $field['available_pro'] == 'yes'){
2087
- $pro = CWP_TOP_PRO_STRING;
2088
- $disabled = "disabled='disabled'";
2089
- }
2090
- }
2091
- //if ($field['option']=='top_opt_post_type') $disabled = "disabled";
2092
- print "<select id='".$field['option']."' name='".$field['option']."'".$disabled.">";
2093
- for ($i=0; $i < $noFieldOptions; $i++) {
2094
- print "<option value=".$fieldOptions[$i];
2095
- if($field['option_value'] == $fieldOptions[$i]) { echo " selected='selected'"; }
2096
- print ">".__($field['options'][$fieldOptions[$i]],CWP_TEXTDOMAIN)."</option>";
2097
- }
2098
- print "</select>".$pro;
2099
- break;
2100
-
2101
- case 'checkbox':
2102
-
2103
- if (isset($field['available_pro'])) {
2104
-
2105
- if(!CWP_TOP_PRO){
2106
- $pro = CWP_TOP_PRO_STRING;
2107
- $disabled = "disabled='disabled'";
2108
- }
2109
- }
2110
- print "<input id='".$field['option']."' type='checkbox' ".$disabled." name='".$field['option']."'";
2111
- if($field['option_value'] == 'on') { echo "checked=checked"; }
2112
- print " />".$pro;
2113
-
2114
-
2115
- break;
2116
-
2117
- case 'categories-list':
2118
- print "<div class='categories-list cwp-tax-post'><p class='rop-category-header'> Posts </p>";
2119
- $categories = get_categories(array(
2120
- 'hide_empty' => false));
2121
-
2122
- foreach ($categories as $category) {
2123
-
2124
- $top_opt_tweet_specific_category = get_option('top_opt_tweet_specific_category');
2125
-
2126
- if (!is_array(get_option('top_opt_omit_cats')))
2127
- $top_opt_omit_specific_cats = explode(',',get_option('top_opt_omit_cats'));
2128
- else
2129
- $top_opt_omit_specific_cats = get_option('top_opt_omit_cats');
2130
-
2131
- print "<div class='cwp-cat'>";
2132
- print "<input type='checkbox' name='".$field['option']."[]' value='".$category->cat_ID."' id='".$field['option']."_cat_".$category->cat_ID."'";
2133
-
2134
- if($field['option'] == 'top_opt_omit_cats') {
2135
- if(is_array($top_opt_omit_specific_cats)) {
2136
- if(in_array($category->cat_ID, $top_opt_omit_specific_cats)) {
2137
- print "checked=checked";
2138
- }
2139
- }
2140
- }
2141
-
2142
-
2143
- print ">";
2144
- print "<label for='".$field['option']."_cat_".$category->cat_ID."'>".$category->name."</label>";
2145
- print "</div>";
2146
- }
2147
- print "<div class='clearfix'></div></div>";
2148
- $taxs = get_taxonomies(array(
2149
- 'public' => true,
2150
- '_builtin' => false
2151
- ),"object","and");
2152
- $args = array(
2153
- 'public' => true,
2154
- '_builtin' => false
2155
- );
2156
- $output = 'object';
2157
- $operator = 'and';
2158
- $post_types = get_post_types( $args, $output, $operator );
2159
-
2160
- foreach($post_types as $pt=>$pd){
2161
- foreach($taxs as $tx){
2162
-
2163
- if(in_array($pt,$tx->object_type)){
2164
-
2165
- $terms = get_terms($tx->name, array(
2166
- 'hide_empty' => false
2167
-
2168
- ) );
2169
- if(!empty($terms)){
2170
- print "<div class='categories-list cwp-hidden cwp-tax-".$pt."'><p class='rop-category-header'>".$pd->labels->name." </p>";
2171
- foreach ($terms as $t) {
2172
-
2173
- if (!is_array(get_option('top_opt_omit_cats')))
2174
- $top_opt_omit_specific_cats = explode(',',get_option('top_opt_omit_cats'));
2175
- else
2176
- $top_opt_omit_specific_cats = get_option('top_opt_omit_cats');
2177
-
2178
- print "<div class='cwp-cat'>";
2179
- print "<input type='checkbox' data-posttype='".$pt."' name='".$field['option']."[]' value='".$t->term_id."' id='".$field['option']."_cat_".$t->term_id."'";
2180
-
2181
- if($field['option'] == 'top_opt_omit_cats') {
2182
- if(is_array($top_opt_omit_specific_cats)) {
2183
- if(in_array($t->term_id, $top_opt_omit_specific_cats)) {
2184
- print "checked=checked";
2185
- }
2186
- }
2187
- }
2188
-
2189
-
2190
- print ">";
2191
- print "<label for='".$field['option']."_cat_".$t->term_id."'>".$t->name."</label>";
2192
- print "</div>";
2193
- }
2194
- print "</div>";
2195
- }
2196
-
2197
- }
2198
-
2199
- }
2200
-
2201
- }
2202
-
2203
-
2204
- break;
2205
-
2206
- case 'custom-post-type':
2207
- print "<div class='post-type-list clearfix'>";
2208
- $args = array(
2209
- 'public' => true,
2210
- '_builtin' => false
2211
- );
2212
-
2213
- $output = 'names'; // names or objects, note names is the default
2214
- $operator = 'and'; // 'and' or 'or'
2215
- if (isset($field['available_pro'])) {
2216
- if(!CWP_TOP_PRO){
2217
- $pro = CWP_TOP_PRO_STRING;
2218
- $disabled = "disabled='disabled'";
2219
- }
2220
- }
2221
- $post_types = get_post_types( $args, $output, $operator );
2222
- array_push($post_types,"post","page");
2223
- foreach ($post_types as $post_type) {
2224
-
2225
- //$top_opt_tweet_specific_category = get_option('top_opt_tweet_specific_category');
2226
-
2227
- if (!is_array(get_option('top_opt_post_type')))
2228
- $top_opt_post_types = explode(',',get_option('top_opt_post_type'));
2229
- else
2230
- $top_opt_post_types = get_option('top_opt_post_type');
2231
-
2232
- print "<div class='cwp-cat '>";
2233
- print "<input ".$disabled." type='checkbox' class='cwp-cpt-checkbox' name='".$field['option']."[]' value='".$post_type."' id='".$field['option']."_cat_".$post_type."'";
2234
-
2235
- if($field['option'] == 'top_opt_post_type') {
2236
- if(is_array($top_opt_post_types)) {
2237
- if(in_array($post_type, $top_opt_post_types)) {
2238
- print "checked=checked";
2239
- }
2240
- }
2241
- }
2242
-
2243
-
2244
- print ">";
2245
- print "<label for='".$field['option']."_cat_".$post_type."'>".$post_type."</label>";
2246
- print "</div>";
2247
-
2248
- }
2249
- print "</div> ".$pro;
2250
- break;
2251
-
2252
- }
2253
-
2254
- }
2255
-
2256
-
2257
- public function echoTime() {
2258
-
2259
- echo $this->getTime();
2260
-
2261
- die();
2262
- }
2263
- public function getTime() {
2264
-
2265
- return time() ;
2266
-
2267
- //return time() - 253214 + 2 * 3600 + 24 * 3600;
2268
- }
2269
-
2270
- function top_plugin_action_links($links, $file) {
2271
-
2272
- if ($file == ROPPLUGINBASENAME) {
2273
- // The "page" query string value must be equal to the slug
2274
- // of the Settings admin page we defined earlier, which in
2275
- // this case equals "myplugin-settings".
2276
- $settings_link = '<a href="' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=TweetOldPost">Settings</a>';
2277
- array_unshift($links, $settings_link);
2278
- }
2279
-
2280
- return $links;
2281
- }
2282
-
2283
- public function fixCron() {
2284
- update_option('cwp_topnew_notice','');
2285
-
2286
- if ( defined( 'ALTERNATE_WP_CRON' ) ) {
2287
-
2288
- //delete_option( 'hmbkp_wp_cron_test_failed' );
2289
-
2290
- //echo 1;
2291
-
2292
- return 0;
2293
-
2294
- }
2295
- else {
2296
-
2297
- $response = wp_remote_head( site_url( 'wp-cron.php' ), array( 'timeout' => 30 ) );
2298
-
2299
- if ( is_wp_error( $response ) ) {
2300
-
2301
- update_option('cwp_topnew_notice', "Looks like there is an issue with your WP Cron and Tweet Old Post relies on wp-cron to schedule tweets, see the <a href='http://wordpress.org/plugins/tweet-old-post/faq/'>FAQ</a> for more details!");
2302
-
2303
- } elseif ( wp_remote_retrieve_response_code( $response ) != 200 ) {
2304
-
2305
- update_option('cwp_topnew_notice', "Looks like there is an issue with your WP Cron and Tweet Old Post relies on wp-cron to schedule tweets, see the <a href='http://wordpress.org/plugins/tweet-old-post/faq/'>FAQ</a> for more details!");
2306
-
2307
- }
2308
-
2309
-
2310
-
2311
- }
2312
- }
2313
- public function clearOldCron(){
2314
- if(isset($_POST['cwp-action'])){
2315
- if($_POST['cwp-action'] == 'download_sysinfo'){
2316
- header('Content-Disposition: attachment; filename="report.txt"');
2317
- header('Content-type: text/plain');
2318
- echo $_POST['cwp-top-sysinfo'];
2319
- die();
2320
-
2321
- }
2322
-
2323
- }
2324
- if(!defined("VERSION_CHECK") && function_exists('topProImage')){
2325
- $this->notices[] = "You need to have the latest version of the Revive Old Post Pro addon in order to use it. Please download it from the themeisle.com account";
2326
-
2327
- }
2328
- $all = $this->getAllNetworks();
2329
- if($this->pluginStatus !== 'true'){
2330
-
2331
- foreach($all as $a){
2332
-
2333
- wp_clear_scheduled_hook($a.'roptweetcron',array($a));
2334
-
2335
-
2336
- }
2337
- return false;
2338
- }
2339
-
2340
- $networks = $this->getAvailableNetworks();
2341
- if(wp_next_scheduled( 'cwp_top_tweet_cron' ) !== false) {
2342
-
2343
- $timestamp = wp_next_scheduled( 'cwp_top_tweet_cron' );
2344
- wp_clear_scheduled_hook('cwp_top_tweet_cron');
2345
- foreach($networks as $network){
2346
- wp_schedule_single_event($timestamp,$network.'roptweetcron',array($network));
2347
- }
2348
-
2349
- }else{
2350
-
2351
- if(wp_next_scheduled( 'cwptoptweetcronnew' ) !== false) {
2352
- $timestamp = wp_next_scheduled( 'cwptoptweetcronnew' );
2353
- wp_clear_scheduled_hook('cwptoptweetcronnew');
2354
- foreach($networks as $network){
2355
- wp_schedule_single_event($timestamp,$network.'roptweetcron',array($network));
2356
- }
2357
- }
2358
- else{
2359
-
2360
- foreach($all as $a){
2361
- if(wp_next_scheduled( $a.'cwptoptweetcron',array($a) ) !== false) {
2362
-
2363
- $timestamp = wp_next_scheduled($a.'cwptoptweetcron',array($a) );
2364
- wp_clear_scheduled_hook($a.'cwptoptweetcron',array($a));
2365
- wp_schedule_single_event($timestamp,$a.'roptweetcron',array($a));
2366
- }
2367
- }
2368
- foreach($all as $a){
2369
- if(!in_array($a,$networks)){
2370
- wp_clear_scheduled_hook($a.'roptweetcron',array($a));
2371
- }
2372
-
2373
- }
2374
-
2375
- }
2376
-
2377
- }
2378
-
2379
- if($this->pluginStatus === 'true'){
2380
- foreach($networks as $avn){
2381
- if(wp_next_scheduled( $avn.'roptweetcron',array($avn) ) === false) {
2382
- $this->scheduleTweet($avn);
2383
- }
2384
- }
2385
- }
2386
-
2387
-
2388
- }
2389
- public function loadAllHooks()
2390
- {
2391
- if(isset($_GET['debug']) == 'on') {
2392
- //$this->getNextTweetTime('twitter');
2393
- // $this->tweetOldPost("twitter");
2394
- // $this->tweetOldPost("facebook");
2395
- die();
2396
- }
2397
- // loading all actions and filters
2398
- add_action('admin_menu', array($this, 'addAdminMenuPage'));
2399
-
2400
- add_action('admin_enqueue_scripts', array($this, 'loadAllScriptsAndStyles'));
2401
-
2402
- add_action( 'admin_notices', array($this, 'adminNotice') );
2403
-
2404
- add_filter('plugin_action_links',array($this,'top_plugin_action_links'), 10, 2);
2405
-
2406
- add_action( 'plugins_loaded', array($this, 'addLocalization') );
2407
-
2408
- //ajax actions
2409
-
2410
- // Update all options ajax action.
2411
- add_action('wp_ajax_update_response', array($this, 'updateAllOptions'));
2412
-
2413
- // Reset all options ajax action.
2414
- add_action('wp_ajax_reset_options', array($this, 'resetAllOptions'));
2415
-
2416
- // Add new twitter account ajax action
2417
- add_action('wp_ajax_add_new_account', array($this, 'addNewAccount'));
2418
-
2419
- // Display managed pages ajax action
2420
- add_action('wp_ajax_display_pages', array($this, 'displayPages'));
2421
-
2422
- // Add new account managed pages ajax action
2423
- add_action('wp_ajax_add_pages', array($this, 'addPages'));
2424
-
2425
- // Add more than one twitter account ajax action
2426
- add_action('wp_ajax_add_new_account_pro', array($this, 'addNewAccountPro'));
2427
-
2428
- // Log Out Twitter user ajax action
2429
- add_action('wp_ajax_log_out_user', array($this, 'logOutUser'));
2430
-
2431
- //start ROP
2432
- add_action('wp_ajax_tweet_old_post_action', array($this, 'startTweetOldPost'));
2433
-
2434
- //clear Log messages
2435
- add_action('wp_ajax_rop_clear_log', array($this, 'clearLog'));
2436
-
2437
- //remote trigger cron
2438
- add_action('wp_ajax_remote_trigger', array($this, 'remoteTrigger'));
2439
-
2440
- //sample tweet messages
2441
- add_action('wp_ajax_view_sample_tweet_action', array($this, 'viewSampleTweet'));
2442
-
2443
- // Tweet Old Post tweet now action.
2444
- add_action('wp_ajax_tweet_now_action', array($this, 'tweetNow'));
2445
-
2446
- add_action('wp_ajax_gettime_action', array($this, 'echoTime'));
2447
-
2448
- //get notice
2449
- add_action('wp_ajax_getNotice_action', array($this, 'getNotice'));
2450
-
2451
- //stop ROP
2452
- add_action('wp_ajax_stop_tweet_old_post', array($this, 'stopTweetOldPost'));
2453
-
2454
- //custom actions
2455
-
2456
- add_action("rop_start_posting",array($this,"startPosting"));
2457
- add_action("rop_stop_posting",array($this,"stopPosting"));
2458
- $networks = $this->getAllNetworks();
2459
-
2460
- foreach($networks as $network){
2461
- add_action($network.'roptweetcron',array($this,"tweetOldPost"));
2462
-
2463
- }
2464
-
2465
- //admin_init actions
2466
-
2467
- add_action('admin_init', array($this,'top_nag_ignore'));
2468
- add_action('admin_init', array($this,'clearOldCron'));
2469
-
2470
-
2471
-
2472
- }
2473
- public function remoteTrigger(){
2474
- if(!is_admin()) return false;
2475
- $state = $_POST["state"];
2476
- if(!empty($state) &&( $state == "on" || $state == "off")){
2477
-
2478
- update_option("cwp_rop_remote_trigger",$state);
2479
- $this->sendRemoteTrigger($state);
2480
-
2481
- }
2482
-
2483
- die();
2484
- }
2485
-
2486
- public function sendRemoteTrigger($state){
2487
-
2488
- global $cwp_rop_remote_trigger_url;
2489
- $state = ($state == "on") ? "yes" : "no";
2490
-
2491
- wp_remote_post( $cwp_rop_remote_trigger_url, array(
2492
- 'method' => 'POST',
2493
- 'timeout' => 1,
2494
- 'redirection' => 5,
2495
- 'httpversion' => '1.0',
2496
- 'blocking' => true,
2497
- 'headers' => array(),
2498
- 'body' => array( 'url' => get_site_url(), 'status' => $state ),
2499
- 'cookies' => array()
2500
- )
2501
- );
2502
-
2503
- }
2504
- public function loadAllScriptsAndStyles()
2505
- {
2506
- global $cwp_top_settings; // Global Tweet Old Post Settings
2507
-
2508
- // Enqueue and register all scripts on plugin's page
2509
- if(isset($_GET['page'])) {
2510
- if ($_GET['page'] == $cwp_top_settings['slug'] || $_GET['page'] == "ExcludePosts") {
2511
-
2512
- // Enqueue and Register Main CSS File
2513
- wp_register_style( 'cwp_top_stylesheet', ROPCSSFILE, false, time() );
2514
- wp_enqueue_style( 'cwp_top_stylesheet' );
2515
-
2516
- // Register Main JS File
2517
- wp_enqueue_script( 'cwp_top_js_countdown', ROPJSCOUNTDOWN, array(), time(), true );
2518
- wp_enqueue_script( 'cwp_top_javascript', ROPJSFILE, array(), time(), true );
2519
- wp_localize_script( 'cwp_top_javascript', 'cwp_top_ajaxload', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
2520
- }
2521
- }
2522
-
2523
- }
2524
-
2525
- function top_check_user_role( $role, $user_id = null ) {
2526
-
2527
- if ( is_numeric( $user_id ) )
2528
- $user = get_userdata( $user_id );
2529
- else
2530
- $user = wp_get_current_user();
2531
-
2532
- if ( empty( $user ) )
2533
- return false;
2534
-
2535
- return in_array( $role, (array) $user->roles );
2536
- }
2537
-
2538
- public function addAdminMenuPage()
2539
- {
2540
- global $cwp_top_settings; // Global Tweet Old Post Settings
2541
- if (!current_user_can('manage_options') && $this->top_check_user_role( 'Administrator' ))
2542
- $cap = 1;
2543
- else
2544
- $cap='manage_options';
2545
- add_menu_page($cwp_top_settings['name'], $cwp_top_settings['name'], $cap, $cwp_top_settings['slug'], array($this, 'loadMainView'), '','99.87514');
2546
- add_submenu_page($cwp_top_settings['slug'], __('Exclude Posts',CWP_TEXTDOMAIN), __('Exclude Posts',CWP_TEXTDOMAIN), 'manage_options', 'ExcludePosts', 'rop_exclude_posts');
2547
-
2548
- add_submenu_page($cwp_top_settings['slug'], __('System Info',CWP_TEXTDOMAIN), __('System Info',CWP_TEXTDOMAIN), 'manage_options', 'SystemInfo', array($this,'system_info'));
2549
-
2550
- }
2551
- public function loadMainView()
2552
- {
2553
- global $cwp_top_fields;
2554
- foreach ($cwp_top_fields as $field => $value) {
2555
- $cwp_top_fields[$field]['option_value'] = get_option($cwp_top_fields[$field]['option']);
2556
- }
2557
- global $cwp_top_networks;
2558
- global $cwp_top_global_schedule;
2559
- $options = get_option("top_opt_post_formats");
2560
- $cwp_top_global_schedule = get_option("cwp_top_global_schedule");
2561
- if($options === false ) $options = array();
2562
- if($cwp_top_global_schedule === false ) $cwp_top_global_schedule = array();
2563
-
2564
- $schedule = $cwp_top_fields["interval"]['option_value'];
2565
- foreach ($cwp_top_networks as $network_name => $network_details) {
2566
- foreach ($network_details as $field => $vvalue) {
2567
- $value = isset($options[$network_name."_".$cwp_top_networks[$network_name][$field]['option']]) ? $options[$network_name."_".$cwp_top_networks[$network_name][$field]['option']] : false ;
2568
- if($value === false) {
2569
- $value = get_option($cwp_top_networks[$network_name][$field]['option']);
2570
- if($value === false) {
2571
- if(isset($vvalue['default_value']))
2572
- $value = $vvalue['default_value'];
2573
- }
2574
- }
2575
- $cwp_top_networks[$network_name][$field]['option_value'] = $value;
2576
- }
2577
- if(!isset($cwp_top_global_schedule[$network_name."_schedule_type_selected"])){
2578
- $cwp_top_global_schedule[$network_name."_schedule_type_selected"] = "each";
2579
- $cwp_top_global_schedule[$network_name."_top_opt_interval"] = $schedule;
2580
- }
2581
- }
2582
- require_once(plugin_dir_path( __FILE__ )."view.php");
2583
- }
2584
-
2585
- // Sends a request to the passed URL
2586
- public function sendRequest($url, $method='GET', $data='', $auth_user='', $auth_pass='') {
2587
-
2588
- $ch = curl_init($url);
2589
-
2590
- if (strtoupper($method) == "POST") {
2591
- curl_setopt($ch, CURLOPT_POST, 1);
2592
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
2593
- }
2594
-
2595
- if (ini_get('open_basedir') == '' && ini_get('safe_mode') == 'Off') {
2596
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
2597
- }
2598
-
2599
- curl_setopt($ch, CURLOPT_HEADER, 0);
2600
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
2601
-
2602
- if ($auth_user != '' && $auth_pass != '') {
2603
- curl_setopt($ch, CURLOPT_USERPWD, "{$auth_user}:{$auth_pass}");
2604
- }
2605
-
2606
- $response = curl_exec($ch);
2607
-
2608
- $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
2609
-
2610
- curl_close($ch);
2611
-
2612
- if ($httpcode != 200) {
2613
- self::addNotice("Error for request: " . $url . " : ". $response,'error');
2614
- return $httpcode;
2615
- }
2616
-
2617
- return $response;
2618
- }
2619
-
2620
- // Shortens the url.
2621
- public function shortenURL($url, $service, $id, $bitly_key, $bitly_user) {
2622
- $url = urlencode($url);
2623
- if ($service == "bit.ly") {
2624
-
2625
- //$shortURL = $url;
2626
- $url = trim($url);
2627
- $bitly_key = trim($bitly_key);
2628
- $bitly_user = trim($bitly_user);
2629
- $shortURL = "http://api.bit.ly/v3/shorten?format=txt&login=".$bitly_user."&apiKey=".$bitly_key."&longUrl={$url}";
2630
- $shortURL = $this->sendRequest($shortURL, 'GET');
2631
-
2632
- } elseif ($service == "tr.im") {
2633
- $shortURL = "http://api.tr.im/api/trim_simple?url={$url}";
2634
- $shortURL = $this->sendRequest($shortURL, 'GET');
2635
- } elseif ($service == "3.ly") {
2636
- $shortURL = "http://3.ly/?api=em5893833&u={$url}";
2637
- $shortURL = $this->sendRequest($shortURL, 'GET');
2638
- } elseif ($service == "tinyurl") {
2639
- $shortURL = "http://tinyurl.com/api-create.php?url=" . $url;
2640
- $shortURL = $this->sendRequest($shortURL, 'GET');
2641
- } elseif ($service == "u.nu") {
2642
- $shortURL = "http://u.nu/unu-api-simple?url={$url}";
2643
- $shortURL = $this->sendRequest($shortURL, 'GET');
2644
- } elseif ($service == "1click.at") {
2645
- $shortURL = "http://1click.at/api.php?action=shorturl&url={$url}&format=simple";
2646
- $shortURL = $this->sendRequest($shortURL, 'GET');
2647
- } elseif ($service == "is.gd") {
2648
-
2649
- $shortURL = "http://is.gd/api.php?longurl={$url}";
2650
-
2651
- $shortURL = $this->sendRequest($shortURL, 'GET');
2652
- } elseif ($service == "t.co") {
2653
- $shortURL = "http://twitter.com/share?url={$url}";
2654
- $shortURL = $this->sendRequest($shortURL, 'GET');
2655
- } else {
2656
- $shortURL = wp_get_shortlink($id);
2657
- }
2658
- if($shortURL != ' 400 '&& $shortURL!="500" && $shortURL!="0") {
2659
- return $shortURL;
2660
- }
2661
- else
2662
- update_option('cwp_topnew_notice','Looks like is an error with your url shortner');
2663
- }
2664
-
2665
- public function rop_load_dashboard_icon()
2666
- {
2667
- wp_register_style( 'rop_custom_dashboard_icon', ROPCUSTOMDASHBOARDICON, false, time() );
2668
- wp_enqueue_style( 'rop_custom_dashboard_icon' );
2669
- }
2670
-
2671
- }
2672
- }
2673
-
2674
- if(class_exists('CWP_TOP_Core')) {
2675
- $CWP_TOP_Core = new CWP_TOP_Core;
2676
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // Basic configuration
3
+ require_once(ROPPLUGINPATH."/inc/config.php");
4
+ // RopTwitterOAuth class
5
+ require_once(ROPPLUGINPATH."/inc/oAuth/twitteroauth.php");
6
+
7
+ if (!class_exists('CWP_TOP_Core')) {
8
+ class CWP_TOP_Core {
9
+
10
+ // All fields
11
+ public static $fields;
12
+ public static $networks;
13
+ // Number of fields
14
+ public static $noFields;
15
+ public $notices;
16
+ // Consumer key, Consumer Secret key, oAuth Callback Key
17
+ public $consumer;
18
+ public $lastID;
19
+ public $consumerSecret;
20
+ public $oAuthCallback;
21
+ public $bitly_key;
22
+ public $bitly_user;
23
+ // Access token, oAuth Token, oAuth Token Secret and User Information
24
+ private $cwp_top_access_token;
25
+ private $cwp_top_oauth_token;
26
+ private $cwp_top_oauth_token_secret;
27
+
28
+
29
+ public $users;
30
+ private $user_info;
31
+
32
+ // Plugin Status
33
+ public $pluginStatus;
34
+ // Interval Set
35
+ public $intervalSet;
36
+ public $cwp_twitter;
37
+ public static $date_format;
38
+ public function __construct() {
39
+ // Get all fields
40
+ global $cwp_top_fields;
41
+ global $cwp_top_networks;
42
+
43
+
44
+ $this->setAlloAuthSettings();
45
+ // Load all hooks
46
+ $this->loadAllHooks();
47
+
48
+ // Set all authentication settings
49
+ // Check if the user added any account
50
+ $this->afterAddAccountCheck();
51
+
52
+ // Save all fields in static var
53
+ self::$fields = $cwp_top_fields;
54
+ self::$networks = $cwp_top_networks;
55
+
56
+ // Save all number of fields in static var
57
+ self::$noFields = count(self::$fields);
58
+ }
59
+ public static function addNotice($message,$type){
60
+ $errors = get_option('rop_notice_active');
61
+ if(count($errors) > 30) $errors = array();
62
+ $errors[] = array(
63
+ "time"=>date('j-m-Y h:i:s A'),
64
+ 'message'=>$message,
65
+ "type" => $type
66
+ );
67
+ update_option("rop_notice_active",$errors);
68
+
69
+ }
70
+ public static function clearLog(){
71
+ if(!is_admin()) return false;
72
+ update_option("rop_notice_active",array());
73
+
74
+ }
75
+ public static function addLog($m){
76
+ $m .= date('l jS \of F Y h:i:s A')." - ".$m." \n\n ";
77
+ file_put_contents("rop.log",$m,FILE_APPEND);
78
+
79
+ }
80
+ public function addLocalization() {
81
+
82
+ load_plugin_textdomain('tweet-old-post', false, dirname(ROPPLUGINBASENAME).'/languages/');
83
+ }
84
+ function checkUsers(){
85
+ if(!is_array($this->users)) $this->users = array();
86
+ if(count($this->users) == 0){
87
+
88
+ self::addNotice(__("You have no account set to post !", 'tweet-old-post'),"error");
89
+ die();
90
+ }
91
+
92
+ }
93
+ public function startTweetOldPost( )
94
+ {
95
+ if(!is_admin()) return false;
96
+ $this->checkUsers();
97
+ if($this->pluginStatus !== 'true' ) {
98
+ do_action("rop_start_posting");
99
+ }
100
+ die();
101
+ }
102
+ public function startPosting(){
103
+
104
+ update_option('cwp_topnew_active_status', 'true');
105
+ update_option('top_opt_already_tweeted_posts',array());
106
+ update_option('top_last_tweets',array());
107
+ $timeNow = $this->getTime();
108
+ $timeNow = $timeNow+15;
109
+
110
+ $this->clearScheduledTweets();
111
+ $networks = $this->getAvailableNetworks();
112
+
113
+ foreach($networks as $network){
114
+ wp_schedule_single_event($timeNow,$network.'roptweetcron',array($network));
115
+ }
116
+
117
+ }
118
+
119
+ public function stopPosting(){
120
+
121
+ // Set it to inactive status
122
+ update_option('cwp_topnew_active_status', 'false');
123
+ update_option('cwp_topnew_notice', '');
124
+ update_option('top_opt_already_tweeted_posts',array());
125
+
126
+ // Clear all scheduled tweets
127
+ $this->clearScheduledTweets();
128
+ }
129
+ public function stopTweetOldPost()
130
+ {
131
+ if(!is_admin()) return false;
132
+ //echo $this->pluginStatus;
133
+ // If the plugin is active
134
+ if($this->pluginStatus !== 'false') {
135
+ do_action("rop_stop_posting");
136
+ }
137
+
138
+ die(); // Required for AJAX
139
+ }
140
+
141
+ public function getExcludedPosts() {
142
+
143
+ $postQueryPosts = "";
144
+ $postPosts = get_option('top_opt_excluded_post');
145
+
146
+ if(!empty($postPosts) && is_array($postPosts)) {
147
+ $postQueryPosts = implode(',',$postPosts);
148
+ }
149
+ else
150
+ $postQueryPosts = get_option('top_opt_excluded_post');
151
+
152
+ return $postQueryPosts;
153
+
154
+ }
155
+
156
+ public function getTweetsFromDBbyID($id)
157
+ {
158
+ global $wpdb;
159
+ $query = "
160
+ SELECT * FROM {$wpdb->prefix}posts where ID = '{$id}'";
161
+ $returnedPost = $wpdb->get_results($query);
162
+ //echo $query;
163
+ return $returnedPost;
164
+ }
165
+
166
+ public function getTweetsFromDB()
167
+ {
168
+ global $wpdb;
169
+ // Generate the Tweet Post Date Range
170
+ $dateQuery = $this->getTweetPostDateRange();
171
+ if(!is_array($dateQuery)) return false;
172
+ // Get the number of tweets to be tweeted each interval.
173
+ $tweetCount = intval(get_option('top_opt_no_of_tweet'));
174
+ if($tweetCount == 0 ) {
175
+ self::addNotice("Invalid number for Number of Posts to share. It must be a value greater than 0 ",'error');
176
+ return false;
177
+ }
178
+ // Get post categories set.
179
+ // $postQueryCategories = $this->getTweetCategories();
180
+ $excludedIds = "";
181
+ $tweetedPosts = get_option("top_opt_already_tweeted_posts");
182
+ if(!is_array($tweetedPosts)) $tweetedPosts = array();
183
+
184
+ if (get_option('top_opt_tweet_multiple_times')=="on") {
185
+
186
+ $tweetedPosts = array();
187
+ }
188
+ $postQueryExcludedPosts = $this->getExcludedPosts();
189
+ $postQueryExcludedPosts = explode (',',$postQueryExcludedPosts);
190
+ $excluded = array_merge($tweetedPosts,$postQueryExcludedPosts);
191
+ $excluded = array_unique($excluded);
192
+ $excluded = array_filter($excluded);
193
+ $postQueryExcludedCategories = $this->getExcludedCategories();
194
+ $somePostType = $this->getTweetPostType();
195
+ // Generate dynamic query.
196
+ $query = "
197
+ SELECT {$wpdb->prefix}posts.ID
198
+ FROM {$wpdb->prefix}posts
199
+ LEFT JOIN {$wpdb->prefix}term_relationships ON ({$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id)
200
+ WHERE 1=1
201
+ AND ((post_date >= '{$dateQuery['before']}'
202
+ AND post_date <= '{$dateQuery['after']}')) ";
203
+
204
+ // If there are no categories set, select the post from all.
205
+ //if(!empty($postQueryCategories)) {
206
+ // $query .= "AND (wp_term_relationships.term_taxonomy_id IN ({$postQueryCategories})) ";
207
+ // }
208
+
209
+ if(!empty($postQueryExcludedCategories)) {
210
+ $query .= "AND ( {$wpdb->prefix}posts.ID NOT IN (
211
+ SELECT object_id
212
+ FROM {$wpdb->prefix}term_relationships
213
+ INNER JOIN {$wpdb->prefix}term_taxonomy ON ( {$wpdb->prefix}term_relationships.term_taxonomy_id = {$wpdb->prefix}term_taxonomy.term_taxonomy_id )
214
+ WHERE {$wpdb->prefix}term_taxonomy.term_id IN ({$postQueryExcludedCategories}))) ";
215
+ }
216
+
217
+ if(!empty($excluded)) {
218
+ $excluded = implode(',',$excluded);
219
+ $query .= "AND ( {$wpdb->prefix}posts.ID NOT IN ({$excluded})) ";
220
+ }
221
+ if(!empty($somePostType)){
222
+
223
+ $somePostType = explode(',',$somePostType);
224
+ $somePostType = "'".implode("','",$somePostType)."'";
225
+ }
226
+ $query .= "AND {$wpdb->prefix}posts.post_type IN ({$somePostType})
227
+ AND ({$wpdb->prefix}posts.post_status = 'publish')
228
+ GROUP BY {$wpdb->prefix}posts.ID
229
+ order by RAND() limit 50
230
+ ";
231
+
232
+ $returnedPost = $wpdb->get_results( $query);
233
+
234
+ if(count($returnedPost) > $tweetCount) {
235
+ $rand_keys = array_rand( $returnedPost, $tweetCount );
236
+
237
+ if ( is_int( $rand_keys ) ) {
238
+ $rand_keys = array( $rand_keys );
239
+ }
240
+ $return = array();
241
+
242
+ foreach ( $rand_keys as $rk ) {
243
+ $return[] = $returnedPost[ $rk ];
244
+ }
245
+ $returnedPost = $return;
246
+ if ( count( $returnedPost ) > $tweetCount ) {
247
+ $returnedPost = array_slice( $returnedPost, 0, $tweetCount );
248
+ }
249
+ }
250
+ $ids = array();
251
+ foreach($returnedPost as $rp){
252
+ $ids[] = $rp->ID;
253
+
254
+ }
255
+
256
+
257
+ $returnedPost = array();
258
+ if(!empty($ids))
259
+ $returnedPost = $wpdb->get_results("select * from {$wpdb->prefix}posts where ID in (".implode(",",$ids).") ");
260
+
261
+ return $returnedPost;
262
+
263
+ }
264
+ public function isPostWithImageEnabled ($ntk = "twitter") {
265
+ $options = get_option("top_opt_post_formats");
266
+ $format_fields = $this->getFormatFields();
267
+ $value = isset($options[$ntk."_".$format_fields[$ntk]["use-image"]['option']]) ? $options[$ntk."_".$format_fields[$ntk]["use-image"]['option']] : get_option("top_opt_post_with_image") ;
268
+ if ($value !='on')
269
+ return false;
270
+ else
271
+ return true;
272
+ }
273
+ public function getUsers(){
274
+ $users = apply_filters("rop_users_filter",get_option('cwp_top_logged_in_users'));
275
+ return is_array($users) ? $users : array();
276
+
277
+
278
+ }
279
+ public function checkNetworkLock($ntk){
280
+ if ( wp_using_ext_object_cache() ) {
281
+ $value = wp_cache_get( $ntk.'roplock', 'transient', true );
282
+ return ( false !== $value) ;
283
+ } else {
284
+
285
+
286
+ return (false !== ( $value = get_transient( $ntk.'roplock' ) ));
287
+ }
288
+
289
+
290
+
291
+
292
+ }
293
+ public function setNetworkLock($ntk){
294
+ if ( wp_using_ext_object_cache() ) {
295
+ wp_cache_set( $ntk.'roplock', "lock", 'transient', 5 * MINUTE_IN_SECONDS );
296
+ } else {
297
+ set_transient( $ntk.'roplock' , "lock",5 * MINUTE_IN_SECONDS);
298
+ }
299
+
300
+ }
301
+ public function deleteNetworkLock($ntk){
302
+ if ( wp_using_ext_object_cache() ) {
303
+ wp_cache_delete($ntk.'roplock','transient');
304
+ } else {
305
+ delete_transient($ntk.'roplock');
306
+ }
307
+
308
+ }
309
+
310
+ public function tweetOldPost($ntk = "",$byID = false)
311
+
312
+ {
313
+ if ( $this->checkNetworkLock($ntk) && $byID === false ) return false;
314
+
315
+
316
+ $this->setNetworkLock($ntk);
317
+ if ($byID!==false) {
318
+
319
+ $returnedPost = $this->getTweetsFromDBbyID($byID);
320
+ }else{
321
+ $returnedPost = $this->getTweetsFromDB();
322
+ if(!is_array($returnedPost)) return false;
323
+ }
324
+ if (count($returnedPost) == 0 ) {
325
+ self::addNotice(__('There is no suitable post to tweet make sure you excluded correct categories and selected the right dates.','tweet-old-post'),'error');
326
+ }
327
+ $done = get_option("top_opt_already_tweeted_posts");
328
+ if(!is_array($done) || get_option('top_opt_tweet_multiple_times')=="on" ) $done = array();
329
+ $users = $this->getUsers();
330
+ foreach($returnedPost as $post){
331
+ if(in_array($post->ID,$done)) continue;
332
+ $oknet = false;
333
+ foreach($users as $u){
334
+ if($u['service'] == $ntk){
335
+ $oknet = true;
336
+ break;
337
+ }
338
+ }
339
+ if(!$oknet) return false;
340
+ $finalTweet = $this->generateTweetFromPost($post,$ntk);
341
+ $this->tweetPost( $finalTweet, $ntk, $post );
342
+ $tweetedPosts = get_option("top_opt_already_tweeted_posts");
343
+ if ($tweetedPosts=="") $tweetedPosts = array();
344
+ array_push($tweetedPosts, $post->ID);
345
+ update_option("top_opt_already_tweeted_posts", $tweetedPosts);
346
+ $done[] = $post->ID;
347
+ }
348
+ if ($byID===false) {
349
+ $this->scheduleTweet($ntk);
350
+ }
351
+
352
+
353
+ $this->deleteNetworkLock($ntk);
354
+ }
355
+
356
+ public function scheduleTweet($ntk){
357
+ $time = $this->getNextTweetTime( $ntk );
358
+
359
+ if($time != 0 && $time > $this->getTime()){
360
+ if(wp_next_scheduled( $ntk.'roptweetcron',array($ntk) ) === false) {
361
+ wp_schedule_single_event( $time, $ntk . 'roptweetcron', array( $ntk ) );
362
+ }
363
+ }else{
364
+ self::addNotice(__("Invalid next schedule: ",'tweet-old-post').date ( 'M j, Y @ G:i',$time),'error');
365
+ }
366
+ }
367
+ public function getAvailableNetworks(){
368
+ $networks = array();
369
+ $users = is_array($this->users) ? $this->users : array();
370
+ foreach($users as $u){
371
+ if(!in_array($u['service'],$networks))
372
+ $networks[] = $u['service'];
373
+ }
374
+
375
+ return $networks;
376
+ }
377
+
378
+ public function getAllNetworks($all = false){
379
+ global $cwp_rop_all_networks;
380
+ if(empty($cwp_rop_all_networks)) return array();
381
+
382
+ return ($all) ? $cwp_rop_all_networks : array_keys($cwp_rop_all_networks);
383
+ }
384
+ public function findInString($where,$what) {
385
+ if (!is_string($where)) {
386
+ return false;
387
+ }
388
+ else
389
+ return strpos($where,$what);
390
+ }
391
+
392
+ public function getNotice() {
393
+ if(!is_admin()) return false;
394
+ $notice = get_option('rop_notice_active');
395
+ if(!is_array($notice)) $notice = array();
396
+
397
+ foreach($notice as $k=>$n){
398
+ $notice[$k]['message'] = strip_tags($n['message']);
399
+ }
400
+ echo json_encode($notice);
401
+ die();
402
+ }
403
+
404
+ public function tweetNow() {
405
+ if(!is_admin()) return false;
406
+ $networks = $this->getAvailableNetworks();
407
+ foreach($networks as $net){
408
+
409
+ $this->tweetOldPost($net,get_option('top_lastID'));
410
+ }
411
+ die();
412
+ }
413
+
414
+ public function viewSampleTweet()
415
+ {
416
+
417
+ if(!is_admin()) return false;
418
+ $returnedTweets = $this->getTweetsFromDB();
419
+
420
+ $messages = array();
421
+ $networks = $this->getAvailableNetworks();
422
+
423
+ if(count($returnedTweets) == 0) {
424
+ foreach($networks as $net){
425
+ $messages[$net] = __("No posts to share",'tweet-old-post');
426
+ }
427
+ $networks = array();
428
+ }
429
+ foreach($networks as $n) {
430
+
431
+ $finalTweetsPreview = $this->generateTweetFromPost($returnedTweets[0],$n);
432
+ if (is_array($finalTweetsPreview)){
433
+ $finalTweetsPreview = $finalTweetsPreview['message']." ".$finalTweetsPreview['link'];
434
+ }
435
+ $messages[$n] = $finalTweetsPreview;
436
+ }
437
+ if(isset($returnedTweets[0]))
438
+ update_option( 'top_lastID', $returnedTweets[0]->ID);
439
+
440
+ foreach($networks as $n) {
441
+ if (CWP_TOP_PRO && $this->isPostWithImageEnabled($n)) {
442
+
443
+ if(defined('ROP_PRO_VERSION')){
444
+ global $CWP_TOP_Core_PRO;
445
+ $image = $CWP_TOP_Core_PRO->getPostImage($returnedTweets[0]->ID);
446
+
447
+ }else {
448
+ if ( has_post_thumbnail( $returnedTweets[0]->ID ) ) :
449
+
450
+ $image_array = wp_get_attachment_image_src( get_post_thumbnail_id( $returnedTweets[0]->ID ) );
451
+
452
+ $image = $image_array[0];
453
+ else :
454
+ $post = get_post( $returnedTweets[0]->ID );
455
+ $image = '';
456
+ ob_start();
457
+ ob_end_clean();
458
+ $output = preg_match_all( '/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches );
459
+ if(isset($matches [1] [0]))
460
+ $image = $matches [1] [0];
461
+
462
+ endif;
463
+ }
464
+ if(!empty($image))
465
+ $messages[$n] = '<img class="top_preview" src="'.$image.'"/>'.$messages[$n];
466
+ }
467
+ }
468
+
469
+ echo json_encode($messages);
470
+
471
+
472
+ die(); // required
473
+ }
474
+
475
+ /**
476
+ * Returns if the post is already tweeted
477
+ * @param [type] $postId Post ID
478
+ * @return boolean True if not already tweeted / False if already tweeted
479
+ */
480
+
481
+ public function isNotAlreadyTweeted($postId) {
482
+ // Get all already tweeted posts
483
+
484
+ $tweetedPosts = get_option("top_opt_already_tweeted_posts");
485
+
486
+ if (!$tweetedPosts) {
487
+ add_option("top_opt_already_tweeted_posts");
488
+ return true;
489
+ }
490
+
491
+ // If the new post ID is in the array, which means that is already tweeted
492
+ if (!empty($tweetedPosts) && is_array($tweetedPosts) ) {
493
+
494
+ if (in_array($postId, $tweetedPosts))
495
+ return false;
496
+ else
497
+ return true;
498
+ }
499
+ else
500
+ {
501
+ return true;
502
+ }
503
+ }
504
+
505
+ public function getStrLen($string) {
506
+
507
+ if (function_exists("mb_strlen"))
508
+ return mb_strlen($string);
509
+ else
510
+ return strlen($string);
511
+ }
512
+
513
+ public function ropSubstr($string,$nr1,$nr2 ) {
514
+
515
+ return substr($string,$nr1, $nr2);
516
+ }
517
+
518
+ /**
519
+ * Generates the tweet based on the user settings
520
+ * @param [type] $postQuery Returned post from database
521
+ * @return [type] Generated Tweet
522
+ */
523
+
524
+ public function generateTweetFromPost($postQuery,$network)
525
+ {
526
+
527
+ $format_fields = $this->getFormatFields();
528
+ $tweetedPosts = get_option("top_opt_already_tweeted_posts");
529
+ $formats = get_option('top_opt_post_formats');
530
+ $tweet_content = isset($formats[$network."_"."top_opt_tweet_type"]) ? $formats[$network."_"."top_opt_tweet_type"] : get_option( 'top_opt_tweet_type' );
531
+ $tweet_content_custom_field = isset($formats[$network."_"."top_opt_tweet_type_custom_field"]) ? $formats[$network."_"."top_opt_tweet_type_custom_field"] : get_option( 'top_opt_tweet_type_custom_field' );
532
+ $additional_text = isset($formats[$network."_"."top_opt_add_text"]) ? $formats[$network."_"."top_opt_add_text"] : get_option( 'top_opt_tweet_type_custom_field' );
533
+ $additional_text_at = isset($formats[$network."_"."top_opt_add_text_at"]) ? $formats[$network."_"."top_opt_add_text_at"] : get_option( 'top_opt_add_text_at' );
534
+ $max_length = isset($formats[$network."_"."top_opt_tweet_length"]) ? $formats[$network."_"."top_opt_tweet_length"] : $format_fields[$network]['top_opt_tweet_length']['default_value'];
535
+ $include_link = isset($formats[$network."_"."top_opt_include_link"]) ? $formats[$network."_"."top_opt_include_link"] : get_option( 'top_opt_include_link' ); get_option( 'top_opt_include_link' );
536
+ $fetch_url_from_custom_field = isset($formats[$network."_"."top_opt_custom_url_option"]) ? $formats[$network."_"."top_opt_custom_url_option"] : get_option( 'top_opt_custom_url_option' );
537
+ $custom_field_url = isset($formats[$network."_"."top_opt_custom_url_field"]) ? $formats[$network."_"."top_opt_custom_url_field"] : get_option( 'top_opt_custom_url_field' ); get_option( 'top_opt_custom_url_field' );
538
+ $use_url_shortner = isset($formats[$network."_"."top_opt_use_url_shortner"]) ? $formats[$network."_"."top_opt_use_url_shortner"] : get_option( 'top_opt_use_url_shortner' );
539
+ $url_shortner_service = isset($formats[$network."_"."top_opt_url_shortner"]) ? $formats[$network."_"."top_opt_url_shortner"] : get_option( 'top_opt_url_shortner' );
540
+ $hashtags = isset($formats[$network."_"."top_opt_custom_hashtag_option"]) ? $formats[$network."_"."top_opt_custom_hashtag_option"] : get_option( 'top_opt_custom_hashtag_option' );
541
+ $common_hashtags = isset($formats[$network."_"."top_opt_hashtags"]) ? $formats[$network."_"."top_opt_hashtags"] : get_option( 'top_opt_hashtags' );
542
+ $maximum_hashtag_length = isset($formats[$network."_"."top_opt_hashtag_length"]) ? $formats[$network."_"."top_opt_hashtag_length"] : get_option( 'top_opt_hashtag_length' );
543
+ $hashtag_custom_field = isset($formats[$network."_"."top_opt_custom_hashtag_field"]) ? $formats[$network."_"."top_opt_custom_hashtag_field"] : get_option( 'top_opt_custom_hashtag_field' );
544
+ $bitly_key = isset($formats[$network."_"."top_opt_bitly_key"]) ? $formats[$network."_"."top_opt_bitly_key"] : get_option( 'top_opt_bitly_key' );
545
+ $bitly_user = isset($formats[$network."_"."top_opt_bitly_user"]) ? $formats[$network."_"."top_opt_bitly_user"] : get_option( 'top_opt_bitly_user' );
546
+ $post_with_image = isset($formats[$network."_". 'top_opt_post_with_image']) ? $formats[$network."_". 'top_opt_post_with_image'] : get_option( 'top_opt_bitly_user' );
547
+ $ga_tracking = get_option( 'top_opt_ga_tracking' );
548
+ $additionalTextBeginning = "";
549
+ $additionalTextEnd = "";
550
+
551
+ // If the user set to not use hashtags, set it to empty variable.
552
+ if ( $hashtags == 'nohashtag' ) {
553
+ $newHashtags = "";
554
+ }
555
+ // Generate the tweet content.
556
+ switch ( $tweet_content ) {
557
+ case 'title':
558
+ $tweetContent = $postQuery->post_title;
559
+ break;
560
+ case 'body':
561
+ $tweetContent = get_post_field( 'post_content', $postQuery->ID );
562
+ break;
563
+ case 'titlenbody':
564
+ $tweetContent = $postQuery->post_title . " " . get_post_field( 'post_content', $postQuery->ID );
565
+ break;
566
+ case 'custom-field':
567
+ $tweetContent = get_post_meta( $postQuery->ID, $tweet_content_custom_field, true );
568
+ break;
569
+ default:
570
+ $tweetContent = "";
571
+ break;
572
+ }
573
+ // Trim new empty lines.
574
+ if(!is_string($tweetContent)) $tweetContent = '';
575
+ $tweetContent = strip_tags( html_entity_decode( $tweetContent,ENT_QUOTES ) );
576
+ //$tweetContent = esc_html($tweetContent);
577
+ //$tweetContent = esc_html($tweetContent);
578
+ //$tweetContent = trim(preg_replace('/\s+/', ' ', $tweetContent));
579
+ // Remove html entinies.
580
+ //$tweetContent = preg_replace("/&#?[a-z0-9]+;/i","", $tweetContent);
581
+ // Strip all shortcodes from content.
582
+ $tweetContent = strip_shortcodes( $tweetContent );
583
+ $fTweet = array();
584
+ $post_url = get_permalink( $postQuery->ID );
585
+ // Generate the post link.
586
+ if ( $include_link == 'true' ) {
587
+ if ( $fetch_url_from_custom_field == 'on' ) {
588
+ //$post_url = preg_replace('/https?:\/\/[^\s"<>]+/', '$0', );
589
+ preg_match_all('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', get_post_meta( $postQuery->ID, $custom_field_url, true ), $match);
590
+ if(isset($match[0])){
591
+ if(isset($match[0][0]))
592
+ $post_url = $match[0][0];
593
+ }
594
+ } else {
595
+ $post_url = "" . get_permalink( $postQuery->ID );
596
+ }
597
+ if ( $post_url == "" ) {
598
+ $post_url = "" . get_permalink( $postQuery->ID );
599
+ }
600
+ if ( $ga_tracking == "on" ) {
601
+ $param = 'utm_source=ReviveOldPost&utm_medium=social&utm_campaign=ReviveOldPost';
602
+ $post_url = rtrim( $post_url );
603
+ if ( strpos( $post_url, "?" ) === false ) {
604
+ $post_url .= '?' . $param;
605
+ } else {
606
+ $post_url .= '&' . $param;
607
+ }
608
+ }
609
+ if ( $use_url_shortner == 'on' ) {
610
+ $post_url = "" . $this->shortenURL( $post_url, $url_shortner_service, $postQuery->ID, $bitly_key, $bitly_user );
611
+ }
612
+ if ( $post_url == "" ) {
613
+ $post_url = "" . get_permalink( $postQuery->ID );
614
+ }
615
+ $post_url = $post_url . "";
616
+ } else {
617
+ $post_url = "";
618
+ }
619
+ // Generate the hashtags
620
+ $newHashtags = "";
621
+ if ( $hashtags != 'nohashtag' ) {
622
+ switch ( $hashtags ) {
623
+ case 'common':
624
+ $newHashtags = $common_hashtags;
625
+ break;
626
+ case 'categories':
627
+ if ( $postQuery->post_type == "post" ) {
628
+ $postCategories = get_the_category( $postQuery->ID );
629
+ foreach ( $postCategories as $category ) {
630
+ if ( strlen( $category->slug . $newHashtags ) <= $maximum_hashtag_length || $maximum_hashtag_length == 0 ) {
631
+ $newHashtags = $newHashtags . " #" . preg_replace( '/-/', '', strtolower( $category->slug ) );
632
+ }
633
+ }
634
+ } else {
635
+ if ( CWP_TOP_PRO ) {
636
+ global $CWP_TOP_Core_PRO;
637
+ $newHashtags = $CWP_TOP_Core_PRO->topProGetCustomCategories( $postQuery, $maximum_hashtag_length );
638
+ }
639
+ }
640
+ break;
641
+ case 'tags':
642
+ $postTags = wp_get_post_tags( $postQuery->ID );
643
+ foreach ( $postTags as $postTag ) {
644
+ if ( strlen( $postTag->slug . $newHashtags ) <= $maximum_hashtag_length || $maximum_hashtag_length == 0 ) {
645
+ $newHashtags = $newHashtags . " #" . preg_replace( '/-/', '', strtolower( $postTag->slug ) );
646
+ }
647
+ }
648
+ break;
649
+ case 'custom':
650
+ $newHashtags = get_post_meta( $postQuery->ID, $hashtag_custom_field, true );
651
+ if($maximum_hashtag_length != 0){
652
+ if(strlen( $newHashtags ) <= $maximum_hashtag_length)
653
+ {
654
+ $newHashtags = $this->ropSubstr($newHashtags,0,$maximum_hashtag_length);
655
+ }
656
+ }
657
+ break;
658
+ default:
659
+ break;
660
+ }
661
+ }
662
+ // Generate the additional text
663
+ if ( $additional_text_at == 'beginning' ) {
664
+ $additionalTextBeginning = $additional_text . " ";
665
+ }
666
+ if ( $additional_text_at == 'end' ) {
667
+ $additionalTextEnd = " " . $additional_text;
668
+ }
669
+
670
+ $fTweet['link'] = $post_url;
671
+ $adTextELength = 0;
672
+ if(is_string($additionalTextEnd)){
673
+ $adTextELength = $this->getStrLen($additionalTextEnd);
674
+ }
675
+ $adTextBLength = 0;
676
+ if(is_string($additionalTextBeginning)){
677
+ $adTextBLength = $this->getStrLen($additionalTextBeginning);
678
+ }
679
+ $hashLength = 0;
680
+ if(is_string($newHashtags) && $network != 'tumblr'){
681
+ $hashLength = $this->getStrLen($newHashtags);
682
+ }
683
+ $finalTweetSize = $max_length - $hashLength - $adTextELength - $adTextBLength ;
684
+ if($network == 'twitter' && !empty($fTweet['link']) ){
685
+ $finalTweetSize = $finalTweetSize - 25;
686
+
687
+
688
+ }
689
+ if($network == 'twitter' && CWP_TOP_PRO && $this->isPostWithImageEnabled($network)){
690
+ $finalTweetSize = $finalTweetSize - 25;
691
+ }
692
+ $tweetContent = $this->ropSubstr( $tweetContent,0,$finalTweetSize);
693
+ if($network == 'twitter'){
694
+ if(!empty($fTweet['link'])) $fTweet['link'] = " ".$fTweet['link']." ";
695
+
696
+ $finalTweet = $additionalTextBeginning . $tweetContent .$fTweet['link'].$newHashtags . $additionalTextEnd;
697
+ $fTweet['link'] = '';
698
+ $finalTweet = preg_replace('/\s+/', ' ', trim( $finalTweet));
699
+
700
+ }else{
701
+ if($network === 'tumblr') {
702
+ $fTweet['tags'] = implode(",",array_filter(explode("#", $newHashtags)));
703
+ $finalTweet = $additionalTextBeginning . $tweetContent . $additionalTextEnd;
704
+ }else{
705
+ $finalTweet = $additionalTextBeginning . $tweetContent .$newHashtags . $additionalTextEnd;
706
+ }
707
+ }
708
+
709
+ $fTweet['message'] = $finalTweet ;
710
+
711
+ return $fTweet;
712
+ }
713
+
714
+ /**
715
+ * Tweets the returned post from generateTweetFromPost()
716
+ * @param [type] $finalTweet Generated tweet
717
+ */
718
+
719
+ public function tweetPost($finalTweet,$network = 'twitter',$post)
720
+ {
721
+ $users = $this->getUsers();
722
+ foreach ($users as $user) {
723
+ if($network == $user['service'] ){
724
+
725
+ switch ($user['service']) {
726
+ case 'twitter':
727
+ // Create a new twitter connection using the stored user credentials.
728
+ $connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
729
+ $args = array('status' => $finalTweet['message'].$finalTweet['link']);
730
+ $response = false;
731
+ //self::addNotice(strlen($args["status"]),"error");
732
+ if($this->isPostWithImageEnabled($network) && CWP_TOP_PRO) {
733
+ global $CWP_TOP_Core_PRO;
734
+
735
+
736
+ if(defined('ROP_IMAGE_CHECK')){
737
+ $args = $CWP_TOP_Core_PRO->topProImage( $connection, $finalTweet, $post->ID, $network );
738
+ if ( isset( $args['media[]'] ) ) {
739
+ $image = array("media"=>$args['media[]']);
740
+ $response = $connection->upload( 'https://upload.twitter.com/1.1/media/upload.json', $image );
741
+ unset($args['media[]']);
742
+ $args["media_ids"] = $response->media_id_string;
743
+ $response = $connection->post( 'statuses/update', $args );
744
+ } else {
745
+ $response = $connection->post( 'statuses/update', $args );
746
+ }
747
+ }else{
748
+ $response = $CWP_TOP_Core_PRO->topProImage( $connection, $finalTweet['message']. " " .$finalTweet['link'], $post->ID, $network );
749
+ }
750
+ }else{
751
+
752
+ $response = $connection->post('statuses/update',$args);
753
+ }
754
+
755
+ if($response !== false){
756
+ $status = '';
757
+ if(!is_object($response))
758
+ $status = json_decode($response);
759
+ if(!is_object($status)){
760
+
761
+ // self::addNotice("Error for post ".$post->post_title." when sending to Twitter: Invalid response - ".$response,'error');
762
+
763
+ }
764
+ else{
765
+
766
+ if($status->errors[0]->code != 200) {
767
+ // self::addNotice("Error for post ".$post->post_title." when sending to Twitter: ".$status->errors[0]->message,'error');
768
+
769
+
770
+ }
771
+ else{
772
+
773
+ }
774
+ }
775
+ if($connection->http_code == 200 ){
776
+ self::addNotice("Post ".$post->post_title." has been successfully sent to Twitter.",'notice');
777
+
778
+ }
779
+ }
780
+ break;
781
+ case 'facebook':
782
+
783
+ $args = array(
784
+
785
+ 'body' => array( 'message' => $finalTweet['message'],'link' => $finalTweet['link']),
786
+ 'timeout'=>20
787
+
788
+ );
789
+ if($this->isPostWithImageEnabled($network) && CWP_TOP_PRO){
790
+ global $CWP_TOP_Core_PRO;
791
+ if(defined('ROP_IMAGE_CHECK'))
792
+ $args = $CWP_TOP_Core_PRO->topProImage($connection, $finalTweet, $post->ID,$network);
793
+ }
794
+
795
+ $pp=wp_remote_post("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/".$user['id']."/feed?access_token=".$user['oauth_token'],$args);
796
+ if(is_wp_error( $pp )){
797
+ self::addNotice(__("Error for posting on facebook for:",'tweet-old-post')." ".$post->post_title."".$pp->get_error_message(),'error' );
798
+
799
+ }else{
800
+ if($pp['response']['code'] == 200){
801
+
802
+ self::addNotice(sprintf(__("Post %s has been successfully sent to facebook",'tweet-old-post'), $post->post_title),'notice');
803
+ }else{
804
+ self::addNotice(__("Error for facebook share on post ",'tweet-old-post'). $post->post_title." ".$pp['response']['message']." @".$user['oauth_user_details']->name,'error');
805
+
806
+ }
807
+
808
+ }
809
+
810
+ break;
811
+
812
+ case 'linkedin':
813
+
814
+ $lk_message = str_replace("&", "&amp;",$finalTweet['message']);
815
+ $sharedLink = str_replace("&", "&amp;",$finalTweet['link']);
816
+ $content_xml = "";
817
+ $visibility="anyone";
818
+ $content_xml.="<content><title>".$lk_message."</title><submitted-url>".$sharedLink."</submitted-url></content>";
819
+ $url = 'https://api.linkedin.com/v1/people/~/shares?oauth2_access_token='.$user["oauth_token"];
820
+
821
+
822
+ $xml = '<?xml version="1.0" encoding="UTF-8"?><share>
823
+ ' . $content_xml . '
824
+ <visibility>
825
+ <code>' . $visibility . '</code>
826
+ </visibility>
827
+ </share>';
828
+ $headers = array(
829
+ "Content-type: text/xml",
830
+ "Content-length: " . strlen($xml),
831
+ "Connection: close",
832
+ );
833
+
834
+ if (!function_exists('curl_version'))
835
+ self::addNotice(__("Your host does not support CURL",'tweet-old-post'),'error');
836
+ $ch = curl_init();
837
+ curl_setopt($ch, CURLOPT_URL,$url);
838
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
839
+ curl_setopt($ch, CURLOPT_TIMEOUT, 10);
840
+ curl_setopt($ch, CURLOPT_POST, true);
841
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
842
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
843
+
844
+ $data = curl_exec($ch);
845
+
846
+
847
+ if(curl_errno($ch))
848
+ {
849
+
850
+ self::addNotice("Curl error: ". curl_error($ch),'error');
851
+ }
852
+ else{
853
+ self::addNotice("Post ". $post->post_title." has been successfully sent to LinkedIN.",'notice');
854
+ curl_close($ch);
855
+ }
856
+ break;
857
+ default:
858
+ if(CWP_TOP_PRO){
859
+ global $CWP_TOP_Core_PRO;
860
+ if(method_exists($CWP_TOP_Core_PRO,"tweetPostPro")){
861
+ $CWP_TOP_Core_PRO->tweetPostPro($finalTweet,$network ,$post,$user);
862
+ }
863
+
864
+ }
865
+
866
+ break;
867
+
868
+
869
+
870
+ }
871
+
872
+ }
873
+
874
+ }
875
+ }
876
+ public function getRestrictedShowFields(){
877
+
878
+ global $cwp_rop_restricted_show;
879
+ return $cwp_rop_restricted_show;
880
+ }
881
+ public function system_info(){
882
+
883
+ global $wpdb;
884
+ $restricted = $this->getRestrictedShowFields();
885
+
886
+ if(CWP_TOP_PRO){
887
+
888
+ $pro = get_plugin_data(ROPPROPLUGINPATH."/tweet-old-post-pro.php");
889
+ }
890
+ $lite = get_plugin_data(ROPPLUGINPATH."/tweet-old-post.php");
891
+ if ( get_bloginfo( 'version' ) < '3.4' ) {
892
+ $theme_data = get_theme_data( get_stylesheet_directory() . '/style.css' );
893
+ $theme = $theme_data['Name'] . ' ' . $theme_data['Version'];
894
+ } else {
895
+ $theme_data = wp_get_theme();
896
+ $theme = $theme_data->Name . ' ' . $theme_data->Version;
897
+ }
898
+
899
+ // Try to identifty the hosting provider
900
+ $host = false;
901
+ if( defined( 'WPE_APIKEY' ) ) {
902
+ $host = 'WP Engine';
903
+ } elseif( defined( 'PAGELYBIN' ) ) {
904
+ $host = 'Pagely';
905
+ }
906
+
907
+ ?>
908
+ <div class="wrap">
909
+ <h2><?php _e( 'System Information', 'tweet-old-post'); ?></h2><br/>
910
+ <form action="" method="post" dir="ltr">
911
+ <textarea readonly="readonly" onclick="this.focus();this.select()" cols="100" id="system-info-textarea" name="cwp-top-sysinfo" rows="20" title="<?php _e( 'To copy the system info, click below then press Ctrl + C (PC) or Cmd + C (Mac).', 'tweet-old-post' ); ?>">
912
+
913
+ ## Please include this information when posting support requests ##
914
+
915
+ ## BEGIN ROP CONFIGS ##
916
+
917
+ <?php
918
+ $options = $this->getPostFormatValues();
919
+ $cwp_top_global_schedule = $this->getSchedule();
920
+ $cwp_rop_all_networks = $this->getFormatFields();
921
+ echo "## ROP POST FORMAT";
922
+ foreach($cwp_rop_all_networks as $n=>$d){
923
+ echo "\n \n \n ##".$n." \n \n \n";
924
+
925
+
926
+
927
+
928
+ foreach($d as $fname => $f){
929
+ if(!in_array($fname,$restricted))
930
+ echo $f['name']. " : ". $options[$n."_".$f['option']]." \n";
931
+ }
932
+
933
+ }
934
+ ?>
935
+
936
+ ## END ROP CONFIGS ##
937
+
938
+
939
+ ## Begin Remote Data
940
+
941
+ Beta User: <?php echo $this->getBetaUserStatus(); ?><?php echo "\n"; ?>
942
+ Remote Check: <?php echo $this->getRemoteCheck(); ?><?php echo "\n"; ?>
943
+
944
+ ## End Remote Data
945
+
946
+
947
+
948
+ ## Begin CRON Info
949
+
950
+ CRON Active: <?php echo (defined("DISABLE_WP_CRON") ? ((DISABLE_WP_CRON) ? "no" : "yes") : "yes" ); ?><?php echo "\n"; ?>
951
+ Alternate WP Cron: <?php echo defined("ALTERNATE_WP_CRON") ? ((ALTERNATE_WP_CRON) ? "yes" : "no" ) : "no"; ?><?php echo "\n";
952
+
953
+ ?>
954
+ Time now: <?php echo date ( 'M j, Y @ G:i',time()); ?> <?php echo "\n"; ?>
955
+ ROP Crons:
956
+ <?php
957
+ $all = $this->getAllNetworks();
958
+ foreach($all as $nn ){
959
+ if(wp_next_scheduled($nn.'roptweetcron',array($nn)) === false) continue;
960
+ echo date ( 'M j, Y @ G:i', wp_next_scheduled($nn.'roptweetcron',array($nn)) );
961
+ }
962
+
963
+ ?>
964
+
965
+ ## End Cron Info
966
+
967
+ ##Begin General Settings:
968
+
969
+ <?php
970
+ $cwp_top_fields = $this->getGeneralFields();
971
+ foreach($cwp_top_fields as $general_field){
972
+ echo $general_field['name']. " : ";
973
+ if(is_array(get_option($general_field['option'])))
974
+ echo implode(",",get_option($general_field['option']))." \n" ;
975
+ else
976
+ echo get_option($general_field['option'])." \n";
977
+ }
978
+ ?>
979
+
980
+ ##End General Settings
981
+
982
+
983
+ <?php
984
+ if(CWP_TOP_PRO):?>
985
+ ##Begin Custom schedule settings:
986
+
987
+ <?php foreach($all as $a) {
988
+
989
+ if( $cwp_top_global_schedule[$a.'_schedule_type_selected'] == 'each')
990
+ {
991
+ echo strtoupper($a)." post on every ".$cwp_top_global_schedule[$a.'_top_opt_interval']." hours"." \n" ;
992
+ }else{
993
+ echo strtoupper($a)." post each ".$cwp_top_global_schedule[$a.'_top_opt_interval']['days']." days of the week at: "." \n" ;
994
+ foreach($cwp_top_global_schedule[$a.'_top_opt_interval']['times'] as $time){
995
+ echo ''.$time['hour']." : ".$time['minute']." \n " ;
996
+
997
+
998
+ }
999
+ }
1000
+ ?>
1001
+ <?php } ?>
1002
+
1003
+ ##End Custom schedule settings
1004
+ <?php endif;
1005
+ ?>
1006
+
1007
+ ### Begin System Info ###
1008
+
1009
+
1010
+ Multisite: <?php echo is_multisite() ? 'Yes' . "\n" : 'No' . "\n" ?>
1011
+
1012
+ SITE_URL: <?php echo site_url() . "\n"; ?>
1013
+ HOME_URL: <?php echo home_url() . "\n"; ?>
1014
+ <?php if(CWP_TOP_PRO): ?>
1015
+ ROP PRO Version: <?php echo $pro['Version'] . "\n"; ?>
1016
+ <?php endif; ?>
1017
+ ROP Lite Version: <?php echo $lite['Version'] . "\n"; ?>
1018
+ WordPress Version: <?php echo get_bloginfo( 'version' ) . "\n"; ?>
1019
+ Permalink Structure: <?php echo get_option( 'permalink_structure' ) . "\n"; ?>
1020
+ Active Theme: <?php echo $theme . "\n"; ?>
1021
+ <?php if( $host ) : ?>
1022
+ Host: <?php echo $host . "\n"; ?>
1023
+ <?php endif; ?>
1024
+ PHP Version: <?php echo PHP_VERSION . "\n"; ?>
1025
+ MySQL Version: <?php echo mysqli_get_client_info() . "\n"; ?>
1026
+ Web Server Info: <?php echo $_SERVER['SERVER_SOFTWARE'] . "\n"; ?>
1027
+ WordPress Memory Limit: <?php echo WP_MEMORY_LIMIT ; ?><?php echo "\n"; ?>
1028
+ PHP Safe Mode: <?php echo ini_get( 'safe_mode' ) ? "Yes" : "No\n"; ?>
1029
+ PHP Memory Limit: <?php echo ini_get( 'memory_limit' ) . "\n"; ?>
1030
+ PHP Upload Max Size: <?php echo ini_get( 'upload_max_filesize' ) . "\n"; ?>
1031
+ PHP Post Max Size: <?php echo ini_get( 'post_max_size' ) . "\n"; ?>
1032
+ PHP Upload Max Filesize: <?php echo ini_get( 'upload_max_filesize' ) . "\n"; ?>
1033
+ PHP Time Limit: <?php echo ini_get( 'max_execution_time' ) . "\n"; ?>
1034
+ PHP Max Input Vars: <?php echo ini_get( 'max_input_vars' ) . "\n"; ?>
1035
+ PHP Arg Separator: <?php echo ini_get( 'arg_separator.output' ) . "\n"; ?>
1036
+ PHP Allow URL File Open: <?php echo (ini_get( 'allow_url_fopen' ) ? "Yes" : "No" ). "\n"; ?>
1037
+ WP_DEBUG: <?php echo defined( 'WP_DEBUG' ) ? WP_DEBUG ? 'Enabled' . "\n" : 'Disabled' . "\n" : 'Not set' . "\n" ?>
1038
+ WP Table Prefix: <?php echo "Length: ". strlen( $wpdb->prefix ); echo " Status:"; if ( strlen( $wpdb->prefix )>16 ) {echo " ERROR: Too Long";} else {echo " Acceptable";} echo "\n"; ?>
1039
+ Show On Front: <?php echo get_option( 'show_on_front' ) . "\n" ?>
1040
+ Page On Front: <?php $id = get_option( 'page_on_front' ); echo get_the_title( $id ) . ' (#' . $id . ')' . "\n" ?>
1041
+ Page For Posts: <?php $id = get_option( 'page_for_posts' ); echo get_the_title( $id ) . ' (#' . $id . ')' . "\n" ?>
1042
+ Session: <?php echo isset( $_SESSION ) ? 'Enabled' : 'Disabled'; ?><?php echo "\n"; ?>
1043
+ Session Name: <?php echo esc_html( ini_get( 'session.name' ) ); ?><?php echo "\n"; ?>
1044
+ Cookie Path: <?php echo esc_html( ini_get( 'session.cookie_path' ) ); ?><?php echo "\n"; ?>
1045
+ Save Path: <?php echo esc_html( ini_get( 'session.save_path' ) ); ?><?php echo "\n"; ?>
1046
+ Use Cookies: <?php echo ini_get( 'session.use_cookies' ) ? 'On' : 'Off'; ?><?php echo "\n"; ?>
1047
+ Use Only Cookies: <?php echo ini_get( 'session.use_only_cookies' ) ? 'On' : 'Off'; ?><?php echo "\n"; ?>
1048
+ DISPLAY ERRORS: <?php echo ( ini_get( 'display_errors' ) ) ? 'On (' . ini_get( 'display_errors' ) . ')' : 'N/A'; ?><?php echo "\n"; ?>
1049
+ FSOCKOPEN: <?php echo ( function_exists( 'fsockopen' ) ) ? 'Your server supports fsockopen.' : 'Your server does not support fsockopen.'; ?><?php echo "\n"; ?>
1050
+ cURL: <?php echo ( function_exists( 'curl_init' ) ) ? 'Your server supports cURL.' : 'Your server does not support cURL.'; ?><?php echo "\n"; ?>
1051
+ SOAP Client: <?php echo ( class_exists( 'SoapClient' ) ) ? 'Your server has the SOAP Client enabled.' : 'Your server does not have the SOAP Client enabled.'; ?><?php echo "\n"; ?>
1052
+
1053
+ ACTIVE PLUGINS:
1054
+
1055
+
1056
+ <?php
1057
+ $plugins = get_plugins();
1058
+ $active_plugins = get_option( 'active_plugins', array() );
1059
+
1060
+ foreach ( $plugins as $plugin_path => $plugin ) {
1061
+ // If the plugin isn't active, don't show it.
1062
+ if ( ! in_array( $plugin_path, $active_plugins ) )
1063
+ continue;
1064
+
1065
+ echo $plugin['Name'] . ': ' . $plugin['Version'] ."\n";
1066
+ }
1067
+
1068
+ if ( is_multisite() ) :
1069
+ ?>
1070
+
1071
+ NETWORK ACTIVE PLUGINS:
1072
+
1073
+ <?php
1074
+ $plugins = wp_get_active_network_plugins();
1075
+ $active_plugins = get_site_option( 'active_sitewide_plugins', array() );
1076
+
1077
+ foreach ( $plugins as $plugin_path ) {
1078
+ $plugin_base = plugin_basename( $plugin_path );
1079
+
1080
+ // If the plugin isn't active, don't show it.
1081
+ if ( ! array_key_exists( $plugin_base, $active_plugins ) )
1082
+ continue;
1083
+
1084
+ $plugin = get_plugin_data( $plugin_path );
1085
+
1086
+ echo "\t"."\t"."\t"."\t".$plugin['Name'] . ' :' . $plugin['Version'] ."\n";
1087
+ }
1088
+
1089
+ endif;
1090
+ ?>
1091
+
1092
+
1093
+
1094
+ ### End System Info ###
1095
+
1096
+ ##Begin Log info
1097
+
1098
+ <?php $logs = get_option('rop_notice_active');
1099
+ if(!is_array($logs)) $logs = array();
1100
+ foreach($logs as $log){
1101
+ echo strtoupper($log['type']). " @ ".$log['time']. ' - '. $log['message']." \n ";
1102
+ }
1103
+ ?>
1104
+ <?php ?>
1105
+
1106
+ #End log info
1107
+
1108
+ ##Begin user info
1109
+
1110
+ <?php
1111
+ $users = $this->getUsers();
1112
+ foreach($all as $a ){
1113
+ if(!isset($$a)) $$a = 0;
1114
+ foreach($users as $us){
1115
+ if($us['service'] == $a) $$a ++;
1116
+
1117
+ }
1118
+
1119
+ }
1120
+ foreach($all as $a){
1121
+ echo strtoupper($a)." accounts - ".$$a." \n";
1122
+
1123
+ }
1124
+
1125
+ ?>
1126
+
1127
+ ##End user info
1128
+
1129
+ </textarea>
1130
+ <p class="submit">
1131
+ <input type="hidden" name="cwp-action" value="download_sysinfo" />
1132
+ <?php submit_button( __('Download System Info File','tweet-old-post'), 'primary', 'cwp-download-sysinfo', false ); ?>
1133
+ </p>
1134
+ </form>
1135
+ </div>
1136
+ </div>
1137
+ <?php
1138
+ }
1139
+ /*public function tweetPostwithImage($finalTweet, $id,$ntk = 'twitter')
1140
+ {
1141
+
1142
+ $k=1;
1143
+ $tw=0;
1144
+ $nrOfUsers = count($this->users);
1145
+ $time = get_option("top_last_tweets");
1146
+
1147
+ foreach ($this->users as $user) {
1148
+
1149
+ if($ntk == $user['service'] ){
1150
+ if(isset($time[$ntk])){
1151
+ if(time() - $time[$ntk] < 60)
1152
+ return false;
1153
+
1154
+ }
1155
+
1156
+ $time[$ntk] = time();
1157
+ update_option("top_last_tweets",$time);
1158
+ switch ($user['service']) {
1159
+ case 'twitter':
1160
+ // Create a new twitter connection using the stored user credentials.
1161
+ $connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
1162
+ // Post the new tweet
1163
+ if (CWP_TOP_PRO){
1164
+ global $CWP_TOP_Core_PRO;
1165
+ $status = $CWP_TOP_Core_PRO->topProImage($connection, $finalTweet['message'], $id);
1166
+ }
1167
+ //var_dump($status);
1168
+ //$tw++;
1169
+ //} else {
1170
+ /// //$connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
1171
+ //$status = $connection->post('statuses/update', array('status' => "acesta e un tweet"));
1172
+ //$tw++;
1173
+ //}
1174
+
1175
+ if ($nrOfUsers == $k)
1176
+ return $status;
1177
+ else
1178
+ $k++;
1179
+
1180
+ case 'facebook':
1181
+ $args = array(
1182
+
1183
+ 'body' => array( 'message' => $finalTweet['message'],'link' => $finalTweet['link']),
1184
+
1185
+ );
1186
+
1187
+ $pp=wp_remote_post("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/$user[id]/feed?access_token=$user[oauth_token]",$args);
1188
+ if ($nrOfUsers == $k)
1189
+ return $pp['response']['message'];
1190
+ else
1191
+ $k++;
1192
+
1193
+ break;
1194
+
1195
+ case 'linkedin':
1196
+
1197
+ $lk_message = str_replace("&", "&amp;",$finalTweet['message']);
1198
+ $sharedLink = str_replace("&", "&amp;",$finalTweet['link']);
1199
+ $content_xml = "";
1200
+ $visibility="anyone";
1201
+ $content_xml.="<content><title>".$lk_message."</title><submitted-url>".$sharedLink."</submitted-url></content>";
1202
+ $url = 'https://api.linkedin.com/v1/people/~/shares?oauth2_access_token='.$user["oauth_token"];
1203
+
1204
+
1205
+ $xml = '<?xml version="1.0" encoding="UTF-8"?><share>
1206
+ ' . $content_xml . '
1207
+ <visibility>
1208
+ <code>' . $visibility . '</code>
1209
+ </visibility>
1210
+ </share>';
1211
+ $headers = array(
1212
+ "Content-type: text/xml",
1213
+ "Content-length: " . strlen($xml),
1214
+ "Connection: close",
1215
+ );
1216
+ if (!function_exists('curl_version'))
1217
+ update_option('cwp_topnew_notice',"You host does not support CURL");
1218
+ $ch = curl_init();
1219
+ curl_setopt($ch, CURLOPT_URL,$url);
1220
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1221
+ curl_setopt($ch, CURLOPT_TIMEOUT, 10);
1222
+ curl_setopt($ch, CURLOPT_POST, true);
1223
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
1224
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
1225
+
1226
+ $data = curl_exec($ch);
1227
+
1228
+ if ($nrOfUsers == $k)
1229
+ return $data;
1230
+ else
1231
+ $k++;
1232
+
1233
+ if(curl_errno($ch))
1234
+ print curl_error($ch);
1235
+ else
1236
+ curl_close($ch);
1237
+
1238
+ break;
1239
+ default:
1240
+ $connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
1241
+ // Post the new tweet
1242
+ if (CWP_TOP_PRO) {
1243
+ global $$CWP_TOP_Core_PRO;
1244
+ $status = $CWP_TOP_Core_PRO->topProImage( $connection, $finalTweet['message'], $id );
1245
+ }
1246
+ if ($nrOfUsers == $k)
1247
+ return $status;
1248
+ else
1249
+ $k++;
1250
+
1251
+
1252
+ }
1253
+ }
1254
+ //sleep(100);
1255
+ }
1256
+ }*/
1257
+
1258
+ // Generates the tweet date range based on the user input.
1259
+ public function getTweetPostDateRange()
1260
+ {
1261
+ if (get_option('top_opt_max_age_limit')==0 )
1262
+ $limit = 9999;
1263
+ else
1264
+ $limit = intval(get_option('top_opt_max_age_limit'));
1265
+
1266
+ if( !is_int($limit) ) {
1267
+ self::addNotice(__("Incorect value for Maximum age of post to be eligible for sharing. Please check the value to be a number greater or equal than 0 ",'tweet-old-post'),'error');
1268
+ return false;
1269
+ }
1270
+
1271
+ $min = intval(get_option('top_opt_age_limit'));
1272
+
1273
+ if(!is_int($min) ){
1274
+ self::addNotice(__("Incorect value for Minimum age of post to be eligible for sharing. Please check the value to be a number greater or equal than 0 ",'tweet-old-post'),'error');
1275
+ return false;
1276
+
1277
+ }
1278
+ if($limit == 0 ){
1279
+ $limit = 10*365;
1280
+ }
1281
+ if($limit < $min){
1282
+ self::addNotice(__("Maximum age of post to be eligible for sharing must be greater than Minimum age of post to be eligible for sharing. Please check the value to be a number greater or equal than 0 ",'tweet-old-post'),'error');
1283
+ return false;
1284
+
1285
+ }
1286
+
1287
+
1288
+
1289
+ $minLimit = time() - $min*24*60*60;
1290
+ $maxLimit = time() - $limit*24*60*60;
1291
+
1292
+ $minAgeLimit = date("Y-m-d H:i:s", $minLimit);
1293
+ $maxAgeLimit = date("Y-m-d H:i:s", $maxLimit);
1294
+ $dateQuery = array();
1295
+ $dateQuery['before'] = $maxAgeLimit;
1296
+ $dateQuery['after'] = $minAgeLimit;
1297
+ $dateQuery['inclusive'] = true;
1298
+ return $dateQuery;
1299
+
1300
+
1301
+ }
1302
+
1303
+ // Gets the omited tweet categories
1304
+
1305
+ public function getExcludedCategories()
1306
+ {
1307
+ $postQueryCategories = "";
1308
+ $postCategories = get_option('top_opt_omit_cats');
1309
+
1310
+ if(!empty($postCategories) && is_array($postCategories)) {
1311
+ $postQueryCategories = implode(',',$postCategories);
1312
+ }
1313
+ else
1314
+ $postQueryCategories = get_option('top_opt_omit_cats');
1315
+
1316
+ return $postQueryCategories;
1317
+ }
1318
+
1319
+ // Gets the tweet post type.
1320
+ public function getTweetPostType()
1321
+ {
1322
+ $postQueryPostTypes = "";
1323
+ $top_opt_post_type = get_option('top_opt_post_type');
1324
+
1325
+ if(!empty($top_opt_post_type) && is_array($top_opt_post_type)) {
1326
+ $postQueryPostTypes = implode(',',$top_opt_post_type);
1327
+ }
1328
+ else
1329
+ $postQueryPostTypes = get_option('top_opt_post_type');
1330
+
1331
+ return $postQueryPostTypes;
1332
+
1333
+ }
1334
+
1335
+
1336
+ // Creates a custom Tweet Old Post schedule
1337
+ public function createCustomSchedule($schedules)
1338
+ {
1339
+ $schedules['cwp_top_schedule'] = array(
1340
+ 'interval' => floatval($this->intervalSet) * 60 * 60,
1341
+ 'display' => __("Custom Tweet User Interval", 'tweet-old-post')
1342
+ );
1343
+
1344
+ return $schedules;
1345
+ }
1346
+
1347
+ // Clears the custom Tweet Old Post cron job.
1348
+ public function clearScheduledTweets()
1349
+ {
1350
+ $all = $this->getAllNetworks();
1351
+ foreach($all as $n){
1352
+ wp_clear_scheduled_hook($n.'roptweetcron',array($n));
1353
+ }
1354
+ }
1355
+
1356
+ // Deactivation hook
1357
+ public function deactivationHook()
1358
+ {
1359
+ $this->clearScheduledTweets();
1360
+ $this->deleteAllOptions();
1361
+ $this->remoteTrigger("off");
1362
+ }
1363
+
1364
+ // Sets all authentication settings
1365
+ public function setAlloAuthSettings()
1366
+ {
1367
+ global $cwp_top_settings;
1368
+
1369
+ $this->consumer = $cwp_top_settings['oAuth_settings']['consumer_key'];
1370
+ $this->consumerSecret = $cwp_top_settings['oAuth_settings']['consumer_secret'];
1371
+ $this->oAuthCallback = CURRENTURL;
1372
+
1373
+ $this->cwp_top_access_token = get_option('cwp_top_access_token');
1374
+ $this->cwp_top_oauth_token = get_option('cwp_top_oauth_token');
1375
+ $this->cwp_top_oauth_token_secret = get_option('cwp_top_oauth_token_secret');
1376
+
1377
+ $this->user_info = get_option('cwp_top_oauth_user_details');
1378
+ $this->users = apply_filters("rop_users_filter",get_option('cwp_top_logged_in_users'));
1379
+
1380
+ $this->pluginStatus = get_option('cwp_topnew_active_status');
1381
+ $this->intervalSet = get_option('top_opt_interval');
1382
+
1383
+ self::$date_format = 'M j, Y @ G:i';
1384
+ //update_option('cwp_top_logged_in_users', '');
1385
+ }
1386
+
1387
+ // Checks if twitter returned any temporary credentials to log in the user.
1388
+ public function afterAddAccountCheck()
1389
+ {
1390
+ if( time() - get_option("top_reauthorize") > 2592000 )
1391
+ $this->reAuthorize();
1392
+ global $cwp_top_settings;
1393
+ $code="";
1394
+ if(isset($_REQUEST['code']))
1395
+ $code = $_REQUEST["code"];
1396
+ $cnetwork = self::getCurrentNetwork();
1397
+ if(isset($_REQUEST['oauth_token']) && $cnetwork == 'twitter') {
1398
+
1399
+ if($_REQUEST['oauth_token'] == $this->cwp_top_oauth_token) {
1400
+
1401
+ $twitter = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $this->cwp_top_oauth_token, $this->cwp_top_oauth_token_secret );
1402
+ $access_token = $twitter->getAccessToken($_REQUEST['oauth_verifier']);
1403
+ $user_details = $twitter->get('account/verify_credentials');
1404
+ $user_details->status = array();
1405
+
1406
+ $newUser = array(
1407
+ 'user_id' => $user_details->id,
1408
+ 'oauth_token' => $access_token['oauth_token'],
1409
+ 'oauth_token_secret' => $access_token['oauth_token_secret'],
1410
+ 'oauth_user_details' => $user_details,
1411
+ 'service' => 'twitter'
1412
+ );
1413
+
1414
+ $loggedInUsers = get_option('cwp_top_logged_in_users');
1415
+ if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1416
+
1417
+
1418
+ if(in_array($newUser, $loggedInUsers)) {
1419
+ echo "You already added that user! no can do !";
1420
+ } else {
1421
+ array_push($loggedInUsers, $newUser);
1422
+ update_option('cwp_top_logged_in_users', $loggedInUsers);
1423
+ }
1424
+
1425
+ header("Location: " . top_settings_url());
1426
+ exit;
1427
+ }
1428
+ }
1429
+ if(isset($_REQUEST['state']) && (get_option('top_fb_session_state') === $_REQUEST['state'])) {
1430
+
1431
+ $token_url = "https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/oauth/access_token?"
1432
+ . "client_id=" . get_option('cwp_top_app_id') . "&redirect_uri=" . top_settings_url()
1433
+ . "&client_secret=" . get_option('cwp_top_app_secret') . "&code=" . $code;
1434
+
1435
+ $params = null;$access_token="";
1436
+ $response = wp_remote_get($token_url);
1437
+
1438
+ if(is_array($response))
1439
+ {
1440
+ if(isset($response['body']))
1441
+ {
1442
+ parse_str($response['body'], $params);
1443
+ if(isset($params['access_token']))
1444
+ $access_token = $params['access_token'];
1445
+ }
1446
+ }
1447
+
1448
+ if($access_token!="")
1449
+ {
1450
+ update_option('top_fb_token',$access_token);
1451
+
1452
+ }
1453
+ header("Location: " . top_settings_url().'&fbadd');
1454
+ }
1455
+
1456
+ if (isset($_GET['code'])&&isset($_GET['state'])&&get_option('top_lk_session_state') == $_GET['state']) {
1457
+
1458
+ $lk_auth_token = get_option('cwp_top_lk_app_id');
1459
+ $lk_auth_secret = get_option('cwp_top_lk_app_secret');
1460
+ $params = array('grant_type' => 'authorization_code',
1461
+ 'client_id' => $lk_auth_token,
1462
+ 'client_secret' => $lk_auth_secret,
1463
+ 'code' => $_GET['code'],
1464
+ 'redirect_uri' => top_settings_url(),
1465
+ );
1466
+
1467
+ $url = 'https://www.linkedin.com/uas/oauth2/accessToken?' . http_build_query($params);
1468
+ //echo $url;
1469
+ $response = wp_remote_post($url);
1470
+ $token = json_decode($response['body']);
1471
+ //print_r($response);
1472
+ //print_r($token);
1473
+ if($token->access_token) {
1474
+ // the request went through without an error, gather user's 'access' tokens
1475
+ //AQVBBQ6_ggJaUVFYmJ5oVF_kSH-wn6VNREGgC_sYPWp0YV0U4r2CFwptnLXUbJra5Glp0ZMax96CrD2azzf_HkJ2UdLp5q5zoiT_rbl5bmTMf50XnDfRcdm8Vl2k2XoYhGQ-LkYTnddFz1K-OBcW0CWsapzgZH2hepMVMhc1Lw7bhwTab04"
1476
+ update_option('top_linkedin_token',$token->access_token);
1477
+ update_option('top_linkedin_token_expires',$token->expires_in);
1478
+ }
1479
+
1480
+ $url = 'https://api.linkedin.com/v1/people/~:(id,picture-url,first_name,last_name)?oauth2_access_token='.$token->access_token;
1481
+ //echo $url;
1482
+ $response = wp_remote_get($url);
1483
+ $response = wp_remote_retrieve_body($response);
1484
+ //print_r($response);
1485
+ $person = simplexml_load_string($response);
1486
+
1487
+ if (isset($person->id)) {
1488
+ $user_details = array('profile_image_url' => (string)$person->{'picture-url'},'name'=> (string)$person->{'first-name'} );
1489
+
1490
+ $newUser = array(
1491
+ 'user_id' => (string)$person->id,
1492
+ 'oauth_token' => $token->access_token,
1493
+ 'oauth_token_secret' => '',
1494
+ 'oauth_user_details' => (object)$user_details,
1495
+ 'service' => 'linkedin'
1496
+ );
1497
+
1498
+ $loggedInUsers = get_option('cwp_top_logged_in_users');
1499
+ if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1500
+
1501
+ foreach ($loggedInUsers as $key=>$user) {
1502
+ if ($user['user_id'] == $person->id)
1503
+ unset($loggedInUsers[$key]);
1504
+ }
1505
+
1506
+ if(in_array($newUser, $loggedInUsers)) {
1507
+ echo "You already added that user! no can do !";
1508
+ } else {
1509
+ array_push($loggedInUsers, $newUser);
1510
+ update_option('cwp_top_logged_in_users', $loggedInUsers);
1511
+ }
1512
+ }
1513
+
1514
+
1515
+
1516
+ header("Location: " . top_settings_url());
1517
+ }
1518
+
1519
+ if(CWP_TOP_PRO){
1520
+ global $CWP_TOP_Core_PRO;
1521
+ if(method_exists($CWP_TOP_Core_PRO,"afterCheckPro")){
1522
+ $CWP_TOP_Core_PRO->afterCheckPro();
1523
+ }
1524
+
1525
+ }
1526
+ }
1527
+
1528
+ // Used to display the login buttons
1529
+ public function displayLoginButton($social_network)
1530
+ {
1531
+ // display the twitter login button
1532
+ if($this->userIsLoggedIn($social_network)) {
1533
+ $this->setAlloAuthSettings($social_network);
1534
+ return true;
1535
+ } else {
1536
+ return false;
1537
+ }
1538
+ }
1539
+
1540
+ public function reAuthorize() {
1541
+ $top_session_state = uniqid('', true);
1542
+ update_option('top_reauthorize',time());
1543
+ $loggedInUsers = get_option('cwp_top_logged_in_users');
1544
+ if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1545
+ $lk = 0;
1546
+ $fb = 0;
1547
+
1548
+ foreach ($loggedInUsers as $key=>$user) {
1549
+ if ($user['service'] === "linkedin"&&$lk===0) {
1550
+ $lk++;
1551
+ $url = 'https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id='.get_option("cwp_top_lk_app_id").'&scope=w_share&state='.$top_session_state.'&redirect_uri='.top_settings_url();
1552
+ header("Location: " . $url);
1553
+
1554
+ update_option('top_lk_session_state',$top_session_state);
1555
+
1556
+ }
1557
+
1558
+ if ($user['service'] === "facebook"&&$fb===0) {
1559
+ $top_session_state_fb = md5(uniqid(rand(), TRUE));
1560
+ $fb++;
1561
+ update_option('top_fb_session_state',$top_session_state_fb);
1562
+ $dialog_url = "https://www.facebook.com/".ROP_TOP_FB_API_VERSION."/dialog/oauth?client_id="
1563
+ . get_option("cwp_top_app_id") . "&redirect_uri=" . top_settings_url() . "&state="
1564
+ . $top_session_state_fb . "&scope=publish_actions,manage_pages,publish_pages,user_posts,user_photos";
1565
+
1566
+ header("Location: " . $dialog_url);
1567
+ }
1568
+ }
1569
+
1570
+ }
1571
+
1572
+ // Adds pages
1573
+ public function displayPages()
1574
+ {
1575
+
1576
+ if(!is_admin()) return false;
1577
+ $social_network = $_POST['social_network'];
1578
+ $access_token = get_option('top_fb_token');
1579
+
1580
+ switch ($social_network) {
1581
+ case 'facebook':
1582
+ $result1="";$pagearray1="";
1583
+ $pp=wp_remote_get("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/me/accounts?access_token=$access_token&limit=100&offset=0");
1584
+ //print_r($pp);
1585
+ $me=wp_remote_get("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/me/?access_token=$access_token&limit=100&offset=0");
1586
+ if(is_array($pp))
1587
+ {
1588
+ $result1=$pp['body'];
1589
+ $result2 = $me['body'];
1590
+ $pagearray2 = json_decode($result2);
1591
+ //print_r($pagearray2);
1592
+ $pagearray1 = json_decode($result1);
1593
+ $profile['name'] = $pagearray2->first_name.' '.$pagearray2->last_name;
1594
+ $profile['id'] = $pagearray2->id;
1595
+ $profile['category'] ='profile';
1596
+ $profile['access_token'] = $access_token;
1597
+ if(is_array($pagearray1->data))
1598
+ array_unshift($pagearray1->data, $profile);
1599
+ //$pagearray1->data[count($pagearray1->data)] = $profile;
1600
+ $result1 = json_encode($pagearray1);
1601
+ //print_r($results1);
1602
+ echo $result1;
1603
+
1604
+ }
1605
+ break;
1606
+ }
1607
+ die(); // Required
1608
+ }
1609
+ public function adminNotice(){
1610
+ if(is_array($this->notices)){
1611
+
1612
+ foreach($this->notices as $n){
1613
+ ?>
1614
+ <div class="error">
1615
+ <p><?php _e( $n, 'tweet-old-post' ); ?></p>
1616
+ </div>
1617
+ <?php
1618
+ }
1619
+ }
1620
+
1621
+ }
1622
+ public function checkVersion(){
1623
+ if(!defined("ROP_PRO_VERSION") && CWP_TOP_PRO) echo 'rop-not-version';
1624
+
1625
+ }
1626
+ public function addPages()
1627
+ {
1628
+
1629
+ if(!is_admin()) return false;
1630
+ $social_network = $_POST['social_network'];
1631
+ $access_token = $_POST['page_token'];
1632
+ $page_id= $_POST['page_id'];
1633
+
1634
+ switch ($social_network) {
1635
+ case 'facebook':
1636
+ $user_details['profile_image_url'] = $_POST['picture_url'];
1637
+ $user_details['name'] = $_POST['page_name'];
1638
+ $user_details = (object) $user_details;
1639
+ $newUser = array(
1640
+ 'user_id' => $page_id,
1641
+ 'oauth_token' => $access_token,
1642
+ 'oauth_token_secret' => "",
1643
+ 'oauth_user_details' => $user_details,
1644
+ 'service' => 'facebook'
1645
+ );
1646
+
1647
+ $loggedInUsers = get_option('cwp_top_logged_in_users');
1648
+ if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1649
+
1650
+ foreach ($loggedInUsers as $key=>$user) {
1651
+ if ($user['user_id'] == $page_id)
1652
+ unset($loggedInUsers[$key]);
1653
+ }
1654
+
1655
+ if(in_array($newUser, $loggedInUsers)) {
1656
+ echo "You already added that user! no can do !";
1657
+ } else {
1658
+ array_push($loggedInUsers, $newUser);
1659
+ update_option('cwp_top_logged_in_users', $loggedInUsers);
1660
+ echo top_settings_url();
1661
+ }
1662
+
1663
+
1664
+ break;
1665
+ }
1666
+ die(); // Required
1667
+ }
1668
+ public static function setCurrentNetwork($network){
1669
+ update_option("rop_current_network_oauth",$network);
1670
+
1671
+ }
1672
+ public static function getCurrentNetwork(){
1673
+ $network = get_option("rop_current_network_oauth");
1674
+ if($network == false) return '';
1675
+ return $network;
1676
+ }
1677
+ // Adds new account
1678
+ public function addNewAccount()
1679
+ {
1680
+
1681
+ if(!is_admin()) return false;
1682
+ if(!function_exists('curl_version')){
1683
+
1684
+ self::addNotice(__("You need to have cURL library enabled in order to use our plugin! Please check it with your hosting company to enable this."),'tweet-old-post');
1685
+ return false;
1686
+ }
1687
+ global $cwp_top_settings;
1688
+ $social_network = $_POST['social_network'];
1689
+ self::setCurrentNetwork($social_network);
1690
+ $networks = $this->getAvailableNetworks();
1691
+ $allnetworks = $this->getAllNetworks(true);
1692
+ $response = array();
1693
+
1694
+ if($allnetworks[$social_network] && !CWP_TOP_PRO){
1695
+ self::addNotice("You need to <a target='_blank' href='https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=topplusacc&utm_medium=announce&utm_campaign=top&upgrade=true'>upgrade to the PRO version</a> in order to add a ".ucwords($social_network)." account, fellow pirate!",'error');
1696
+
1697
+ }else if(in_array($social_network,$networks) && !CWP_TOP_PRO) {
1698
+ self::addNotice("You need to <a target='_blank' href='https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=topplusacc&utm_medium=announce&utm_campaign=top&upgrade=true'>upgrade to the PRO version</a> in order to add more accounts, fellow pirate!",'error');
1699
+
1700
+
1701
+ }else{
1702
+ switch ($social_network) {
1703
+ case 'twitter':
1704
+ $this->oAuthCallback = $_POST['currentURL'];
1705
+ $twitter = new RopTwitterOAuth($this->consumer, $this->consumerSecret);
1706
+ $requestToken = $twitter->getRequestToken($this->oAuthCallback);
1707
+
1708
+ update_option('cwp_top_oauth_token', $requestToken['oauth_token']);
1709
+ update_option('cwp_top_oauth_token_secret', $requestToken['oauth_token_secret']);
1710
+
1711
+ switch ($twitter->http_code) {
1712
+ case 200:
1713
+ $url = $twitter->getAuthorizeURL($requestToken['oauth_token']);
1714
+ $response['url'] = $url;
1715
+ break;
1716
+
1717
+ default:
1718
+ self::addNotice(__("Could not connect to Twitter!"),'tweet-old-post');
1719
+
1720
+ break;
1721
+ }
1722
+ break;
1723
+ case 'facebook':
1724
+ if (empty($_POST['extra']['app_id'])){
1725
+ self::addNotice(__("Could not connect to Facebook! You need to add the App ID",'tweet-old-post'),'error');
1726
+ }else
1727
+ if (empty($_POST['extra']['app_secret'])){
1728
+ self::addNotice(__("Could not connect to Facebook! You need to add the App Secret",'tweet-old-post'),'error');
1729
+
1730
+ }else{
1731
+ update_option('cwp_top_app_id', $_POST['extra']['app_id']);
1732
+ update_option('cwp_top_app_secret', $_POST['extra']['app_secret']);
1733
+
1734
+ $top_session_state = md5(uniqid(rand(), TRUE));
1735
+
1736
+ update_option('top_fb_session_state',$top_session_state);
1737
+ $dialog_url = "https://www.facebook.com/".ROP_TOP_FB_API_VERSION."/dialog/oauth?client_id="
1738
+ . $_POST['extra']['app_id'] . "&redirect_uri=" . top_settings_url() . "&state="
1739
+ . $top_session_state . "&scope=publish_actions,manage_pages,publish_pages,user_posts,user_photos";
1740
+
1741
+ $response['url'] = $dialog_url;
1742
+
1743
+ }
1744
+
1745
+ break;
1746
+ default:
1747
+ if(CWP_TOP_PRO){
1748
+ global $CWP_TOP_Core_PRO;
1749
+ $CWP_TOP_Core_PRO->topProAddNewAccount();
1750
+ }
1751
+ }
1752
+
1753
+ }
1754
+
1755
+ echo json_encode($response);
1756
+
1757
+ die(); // Required
1758
+ }
1759
+
1760
+ // Adds more than one account
1761
+ public function addNewAccountPro()
1762
+ {
1763
+
1764
+ if(!is_admin()) return false;
1765
+ if (CWP_TOP_PRO) {
1766
+ global $CWP_TOP_Core_PRO;
1767
+ $CWP_TOP_Core_PRO->topProAddNewAccount($_POST['social_network']);
1768
+ }
1769
+ else{
1770
+ update_option('cwp_topnew_notice',"You need to <a target='_blank' href='https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=topplusacc&utm_medium=announce&utm_campaign=top&upgrade=true'>upgrade to the PRO version</a> in order to add more accounts, fellow pirate!");
1771
+ echo "You need to <a target='_blank' href='https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=topplusacc&utm_medium=announce&utm_campaign=top&upgrade=true'>upgrade to the PRO version</a> in order to add more accounts, fellow pirate!";
1772
+
1773
+ }
1774
+ die(); // Required
1775
+ }
1776
+
1777
+ // Gets the next tweet interval.
1778
+ public function getNextTweetInterval()
1779
+ {
1780
+ $timestamp = wp_next_scheduled( 'cwptoptweetcronnew' );
1781
+
1782
+ //echo $timestamp;
1783
+ //$timestamp = date("Y-m-d H:i:s", $timestamp);
1784
+ //$timeLeft = get_date_from_gmt($timestamp);
1785
+ //$timeLeft = strtotime($timeLeft);
1786
+ echo $timestamp;
1787
+ }
1788
+
1789
+ // Checks if the user is logged in/
1790
+ public function userIsLoggedIn()
1791
+ {
1792
+ if(!empty($this->cwp_top_oauth_token) && !empty($this->cwp_top_oauth_token_secret)) {
1793
+ return true;
1794
+ } else {
1795
+ return false;
1796
+ }
1797
+ }
1798
+
1799
+ // Clears all Twitter user credentials.
1800
+ public function logOutUser()
1801
+ {
1802
+ if(!is_admin()) return false;
1803
+ $userID = $_POST['user_id'];
1804
+
1805
+ $users = get_option('cwp_top_logged_in_users');
1806
+
1807
+ foreach ($users as $id => $user) {
1808
+ foreach ($user as $key => $value) {
1809
+ if($userID == $value) {
1810
+ $user_id = array_search($user, $users);
1811
+ unset($users[$user_id]);
1812
+ }
1813
+ }
1814
+ }
1815
+
1816
+ update_option('cwp_top_logged_in_users', $users);
1817
+
1818
+ $this->setAlloAuthSettings();
1819
+ die();
1820
+ }
1821
+
1822
+ function getUpperDays($day,$days){
1823
+ $tmp = array();
1824
+ foreach($days as $d){
1825
+ if($day <= $d){
1826
+ $tmp[] = $d;
1827
+ }
1828
+ }
1829
+ return $tmp;
1830
+ }
1831
+ public function getSchedule(){
1832
+ $db = get_option("cwp_top_global_schedule" ) ;
1833
+ if(!is_array($db)) $db = array();
1834
+ $networks = $this->getAllNetworks();
1835
+ foreach($networks as $network){
1836
+ if(!isset($db[$network.'_schedule_type_selected'])) $db[$network.'_schedule_type_selected'] = "each";
1837
+ if(!isset($db[$network.'_top_opt_interval'])) $db[$network.'_top_opt_interval'] = 8;
1838
+
1839
+ }
1840
+ return $db;
1841
+ }
1842
+ function getNextTweetTime($network){
1843
+ $time = 0;
1844
+ if(!CWP_TOP_PRO){
1845
+ $time = $this->getTime() + ( floatval(get_option('top_opt_interval')) * 3600 ) ;
1846
+ if($time > $this->getTime()) {
1847
+ return $time;
1848
+ }else{
1849
+ return 0;
1850
+ }
1851
+ }
1852
+ $cwp_top_global_schedule = $this->getSchedule();
1853
+ $type = $cwp_top_global_schedule[$network.'_schedule_type_selected'];
1854
+ if($type == 'each'){
1855
+ $time = $this->getTime() + floatval($cwp_top_global_schedule[$network.'_top_opt_interval']) * 3600;
1856
+ if($time > $this->getTime()) {
1857
+ return $time;
1858
+ }else{
1859
+ return 0;
1860
+ }
1861
+ }else{
1862
+ if (date('N', $this->getTime()) == 1){
1863
+ $start = strtotime("monday this week",$this->getTime()) ;
1864
+ }else{
1865
+ $start = strtotime("last Monday",$this->getTime()) ;
1866
+ }
1867
+
1868
+ $days = explode(",",$cwp_top_global_schedule[$network.'_top_opt_interval']['days']);
1869
+
1870
+ $times = $cwp_top_global_schedule[$network.'_top_opt_interval']['times'];
1871
+ $schedules_days = array();
1872
+ if(count($times) == 0 ) return false;
1873
+ if(count($days) == 0 ) return false;
1874
+ foreach($days as $rday){
1875
+ $schedules_days[] = $start + ($rday-1) * 3600 * 24;
1876
+
1877
+ }
1878
+ $schedules = array();
1879
+ foreach($schedules_days as $schedule){
1880
+
1881
+ foreach($times as $time){
1882
+
1883
+ $schedules[] = $schedule + floatval($time['hour']) * 3600 + floatval($time['minute']) * 60;
1884
+
1885
+ }
1886
+
1887
+ }
1888
+ sort($schedules,SORT_REGULAR);
1889
+ $ctime = $this->getTime();
1890
+
1891
+ foreach($schedules as $s ){
1892
+ if($s > $ctime ) {
1893
+ return $s;
1894
+ }
1895
+
1896
+ }
1897
+ foreach($schedules as $s){
1898
+ $s += 7 * 24 * 3600;
1899
+ if($s > $ctime) return $s;
1900
+
1901
+ }
1902
+ return 0;
1903
+ }
1904
+ return 0;
1905
+ }
1906
+ public function getAllOptions(){
1907
+ $options = array();
1908
+
1909
+ $format_fields = $this->getFormatFields();
1910
+ $all = $this->getAllNetworks();
1911
+ foreach($format_fields as $n=>$detail){
1912
+ foreach($detail as $df){
1913
+
1914
+ $options[] = $n."_".$df['option'];
1915
+
1916
+ }
1917
+ }
1918
+ foreach($all as $a){
1919
+
1920
+ $options[] = $a."_schedule_type_selected";
1921
+ $options[] = $a."_top_schedule_days";
1922
+ $options[] = $a."_time_choice_hour";
1923
+ $options[] = $a."_top_opt_interval";
1924
+ $options[] = $a."_time_choice_min";
1925
+ }
1926
+ $cwp_top_fields = $this->getGeneralFields();
1927
+ foreach ($cwp_top_fields as $field)
1928
+ {
1929
+ $options[] = $field['option'];
1930
+ }
1931
+ return $options;
1932
+ }
1933
+ public function sanitizeRequest(){
1934
+
1935
+ $dataSent = $_POST['dataSent']['dataSent'];
1936
+ $valid = array();
1937
+ parse_str($dataSent, $options);
1938
+ $all_options = $this->getAllOptions();
1939
+ $invalid = array();
1940
+ foreach($options as $k => $option ){
1941
+ if(in_array($k,$all_options)){
1942
+ $valid[$k] = $option;
1943
+
1944
+ }else{
1945
+ $invalid[] = $k;
1946
+ }
1947
+
1948
+ }
1949
+ $_POST['dataSent']['dataSent'] = http_build_query($valid);
1950
+ }
1951
+ // Updates all options.
1952
+ public function updateAllOptions()
1953
+ {
1954
+ if(!is_admin()) return false;
1955
+ $dataSent = $_POST['dataSent']['dataSent'];
1956
+ $this->sanitizeRequest();
1957
+ $options = array();
1958
+
1959
+ parse_str($dataSent, $options);
1960
+ foreach ($options as $option => $newValue) {
1961
+ //$newValue = sanitize_text_field($newValue);
1962
+ update_option($option, $newValue);
1963
+ }
1964
+
1965
+ //update_option('top_opt_post_type', 'post');
1966
+
1967
+ if(!array_key_exists('top_opt_custom_url_option', $options)) {
1968
+ update_option('top_opt_custom_url_option', 'off');
1969
+ }
1970
+
1971
+ if(!array_key_exists('top_opt_use_url_shortner', $options)) {
1972
+ update_option('top_opt_use_url_shortner', 'off');
1973
+ }
1974
+
1975
+ if(!array_key_exists('top_opt_post_with_image', $options)) {
1976
+ update_option('top_opt_post_with_image', 'off');
1977
+ }
1978
+
1979
+ if(!array_key_exists('top_opt_tweet_multiple_times', $options)) {
1980
+ update_option('top_opt_tweet_multiple_times', 'off');
1981
+ }
1982
+
1983
+ if(!array_key_exists('top_opt_ga_tracking', $options)) {
1984
+ update_option('top_opt_ga_tracking', 'off');
1985
+ }
1986
+
1987
+ //if(!array_key_exists('top_opt_tweet_specific_category', $options)) {
1988
+ // update_option('top_opt_tweet_specific_category', '');
1989
+ //}
1990
+
1991
+ if(!array_key_exists('top_opt_omit_cats', $options)) {
1992
+ update_option('top_opt_omit_cats', '');
1993
+ }
1994
+
1995
+ if(!array_key_exists('top_opt_post_type', $options)) {
1996
+ update_option('top_opt_post_type', 'post');
1997
+ }
1998
+
1999
+ //update_option("top_opt_already_tweeted_posts", array());
2000
+ $this->updateAllPostFormat();
2001
+ if(CWP_TOP_PRO){
2002
+
2003
+ global $CWP_TOP_Core_PRO;
2004
+ $CWP_TOP_Core_PRO->updateTopProAjax();
2005
+ }
2006
+ die();
2007
+ }
2008
+
2009
+ public function updateAllPostFormat()
2010
+ {
2011
+ $all = $this->getAllNetworks();
2012
+ $dataSent = $_POST['dataSent']['dataSent'];
2013
+
2014
+ $options = array();
2015
+ parse_str($dataSent, $options);
2016
+
2017
+ //print_r($options);
2018
+ foreach($all as $n){
2019
+
2020
+ if(!array_key_exists($n.'_top_opt_custom_url_option', $options)) {
2021
+ $options[$n.'_top_opt_custom_url_option'] = 'off';
2022
+ }
2023
+
2024
+ if(!array_key_exists($n.'_top_opt_use_url_shortner', $options)) {
2025
+ $options[$n.'_top_opt_use_url_shortner'] = 'off';
2026
+ }
2027
+
2028
+ if(!array_key_exists($n.'_top_opt_post_with_image', $options)) {
2029
+ $options[$n.'_top_opt_post_with_image'] = 'off';
2030
+ }
2031
+
2032
+ if(!array_key_exists($n.'_top_opt_tweet_multiple_times', $options)) {
2033
+ $options[$n.'_top_opt_tweet_multiple_times'] = 'off';
2034
+ }
2035
+
2036
+ if(!array_key_exists($n.'_top_opt_ga_tracking', $options)) {
2037
+ $options[$n.'_top_opt_ga_tracking'] = 'off';
2038
+ }
2039
+
2040
+ //if(!array_key_exists('top_opt_tweet_specific_category', $options)) {
2041
+ // update_option('top_opt_tweet_specific_category', '');
2042
+ //}
2043
+
2044
+ if(!array_key_exists($n.'_top_opt_omit_cats', $options)) {
2045
+ $options[$n.'_top_opt_omit_cats'] = '';
2046
+ }
2047
+
2048
+ if(!array_key_exists($n.'_top_opt_post_type', $options)) {
2049
+ $options[$n.'_top_opt_post_type'] = 'post';
2050
+ }
2051
+
2052
+ }
2053
+
2054
+ update_option('top_opt_post_formats', $options);
2055
+
2056
+ }
2057
+
2058
+ public function top_admin_notice() {
2059
+ global $current_user ;
2060
+ $user_id = $current_user->ID;
2061
+ /* Check that the user hasn't already clicked to ignore the message */
2062
+ if ( ! get_user_meta($user_id, 'top_ignore_notice3') ) {
2063
+ // echo '<div class="error"><p>';
2064
+ // printf(__(' We just fixed the interrupted posting issue and scheduling issue, if you don\'t see any tweets you need to re-authentificate your twitter accounts. | <a href="'.SETTINGSURL.'&top_nag_ignore=0">Hide Notice</a>'));
2065
+ // echo "</p></div>";
2066
+ }
2067
+ }
2068
+ public function top_nag_ignore() {
2069
+
2070
+ global $current_user;
2071
+ $user_id = $current_user->ID;
2072
+ /* If user clicks to ignore the notice, add that to their user meta */
2073
+ if ( isset($_GET['top_nag_ignore']) && '0' == $_GET['top_nag_ignore'] ) {
2074
+ add_user_meta($user_id, 'top_ignore_notice3', 'true', true);
2075
+ }
2076
+ }
2077
+
2078
+ public function resetAllOptions()
2079
+ {
2080
+
2081
+ if(!is_admin()) return false;
2082
+
2083
+ $defaultOptions = array(
2084
+ 'top_opt_tweet_type' => 'title',
2085
+ 'top_opt_post_with_image' => 'off',
2086
+ 'top_opt_bitly_user' =>'',
2087
+ 'top_opt_bitly_key' =>'',
2088
+ 'top_opt_post_type_custom_field' => '',
2089
+ 'top_opt_add_text' => '',
2090
+ 'top_opt_add_text_at' => 'beginning',
2091
+ 'top_opt_include_link' => 'true',
2092
+ 'top_opt_custom_url_option' => 'off',
2093
+ 'top_opt_use_url_shortner' => 'off',
2094
+ 'top_opt_ga_tracking' => 'on',
2095
+ 'top_opt_url_shortner' => 'is.gd',
2096
+ 'top_opt_custom_hashtag_option' => 'nohashtag',
2097
+ 'top_opt_hashtags' => '',
2098
+ 'top_opt_hashtag_length' => '0',
2099
+ 'top_opt_custom_hashtag_field' => '',
2100
+ 'top_opt_interval' => '8',
2101
+ 'top_opt_age_limit' => '30',
2102
+ 'top_opt_max_age_limit' => '0',
2103
+ 'top_opt_no_of_tweet' => '1',
2104
+ 'top_opt_post_type' => 'post',
2105
+ 'top_opt_post_type_value' => 'post',
2106
+ 'top_opt_custom_url_field' => '',
2107
+ 'top_opt_omit_cats' => '',
2108
+ 'cwp_topnew_active_status' => 'false',
2109
+ 'cwp_topnew_notice' => '',
2110
+ 'top_opt_excluded_post' => '',
2111
+ 'top_opt_tweet-multiple-times' => 'off',
2112
+ 'cwp_top_logged_in_users' => '',
2113
+ 'top_fb_token' =>'',
2114
+ 'top_opt_post_formats' =>''
2115
+ );
2116
+
2117
+ foreach ($defaultOptions as $option => $defaultValue) {
2118
+ update_option($option, $defaultValue);
2119
+ }
2120
+
2121
+
2122
+ update_option("top_opt_post_formats",array());
2123
+ update_option("cwp_top_global_schedule",array());
2124
+ $this->clearScheduledTweets();
2125
+ //die();
2126
+ }
2127
+ public function getPostFormatValues(){
2128
+ $cwp_rop_all_networks = $this->getFormatFields();
2129
+ $options = get_option("top_opt_post_formats");
2130
+ $return = array();
2131
+ foreach($cwp_rop_all_networks as $n=>$d){
2132
+
2133
+ foreach($d as $fname => $f){
2134
+
2135
+ if(!isset($options[$n."_".$f['option']])){
2136
+ $return[$n."_".$f['option']] = $f['default_value'];
2137
+
2138
+ }else{
2139
+ $return[$n."_".$f['option']] = $options[$n."_".$f['option']];
2140
+
2141
+ }
2142
+
2143
+ }
2144
+
2145
+ }
2146
+
2147
+ return $return;
2148
+
2149
+
2150
+ }
2151
+ public function deleteAllOptions()
2152
+ {
2153
+ global $defaultOptions;
2154
+ foreach ($defaultOptions as $option => $defaultValue) {
2155
+ delete_option($option);
2156
+ }
2157
+ }
2158
+
2159
+ // Generate all fields based on settings
2160
+ public static function generateFieldType($field)
2161
+ {
2162
+ $disabled = "";
2163
+ $pro = "";
2164
+
2165
+ switch ($field['type']) {
2166
+ case 'image-list':
2167
+ $pro = "";
2168
+ $disabled = "";
2169
+ if (isset($field['available_pro'])) {
2170
+
2171
+
2172
+ if(!CWP_TOP_PRO){
2173
+ $pro = CWP_TOP_PRO_STRING;
2174
+ $disabled = "disabled='disabled'";
2175
+ }
2176
+ }
2177
+ $images = array();
2178
+ $images[] = "full";
2179
+ $images = array_merge($images,get_intermediate_image_sizes());
2180
+
2181
+ echo "<select name='".$field['option']."' id='".$field['option']."' ".$disabled ." >";
2182
+ foreach($images as $image){
2183
+ echo "<option ".(($field["option_value"] == $image) ? "selected" : "")." value='".$image."'>".$image."</option>";
2184
+ }
2185
+
2186
+ echo "</select><br/>".$pro;
2187
+ break;
2188
+ case 'text':
2189
+ if (isset($field['available_pro'])) {
2190
+
2191
+
2192
+ if(!CWP_TOP_PRO && $field['available_pro'] == 'yes') {
2193
+ if ( isset( $field["pro_text"] ) ) {
2194
+ $pro = __($field["pro_text"],'tweet-old-post');
2195
+ } else {
2196
+ $pro = CWP_TOP_PRO_STRING;
2197
+ }
2198
+ $disabled = "disabled='disabled'";
2199
+ }
2200
+ }
2201
+ echo "<input type='text' placeholder='".__($field['description'],'tweet-old-post')."' ".$disabled." value='".$field['option_value']."' name='".$field['option']."' id='".$field['option']."'><br/>".$pro;
2202
+ break;
2203
+
2204
+ case 'number':
2205
+ if (isset($field['available_pro'])) {
2206
+
2207
+
2208
+ if(!CWP_TOP_PRO){
2209
+ $pro = CWP_TOP_PRO_STRING;
2210
+ $disabled = "disabled='disabled'";
2211
+ }
2212
+ }
2213
+ echo "<input type='number' placeholder='".__($field['description'],'tweet-old-post')."' ".$disabled." value='".$field['option_value']."' max='".$field['max-length']."' name='".$field['option']."' id='".$field['option']."'><br/>".$pro;
2214
+ break;
2215
+
2216
+ case 'select':
2217
+ $noFieldOptions = intval(count($field['options']));
2218
+ $fieldOptions = array_keys($field['options']);
2219
+ if (isset($field['available_pro'])) {
2220
+
2221
+
2222
+ if(!CWP_TOP_PRO && $field['available_pro'] == 'yes'){
2223
+ $pro = CWP_TOP_PRO_STRING;
2224
+ $disabled = "disabled='disabled'";
2225
+ }
2226
+ }
2227
+ //if ($field['option']=='top_opt_post_type') $disabled = "disabled";
2228
+ print "<select id='".$field['option']."' name='".$field['option']."'".$disabled.">";
2229
+ for ($i=0; $i < $noFieldOptions; $i++) {
2230
+ print "<option value=".$fieldOptions[$i];
2231
+ if($field['option_value'] == $fieldOptions[$i]) { echo " selected='selected'"; }
2232
+ print ">".__($field['options'][$fieldOptions[$i]],'tweet-old-post')."</option>";
2233
+ }
2234
+ print "</select>".$pro;
2235
+ break;
2236
+
2237
+ case 'checkbox':
2238
+
2239
+ if (isset($field['available_pro'])) {
2240
+
2241
+ if(!CWP_TOP_PRO){
2242
+ $pro = CWP_TOP_PRO_STRING;
2243
+ $disabled = "disabled='disabled'";
2244
+ }
2245
+ }
2246
+ print "<input id='".$field['option']."' type='checkbox' ".$disabled." name='".$field['option']."'";
2247
+ if($field['option_value'] == 'on') { echo "checked=checked"; }
2248
+ print " />".$pro;
2249
+
2250
+
2251
+ break;
2252
+
2253
+ case 'categories-list':
2254
+
2255
+ $taxs = get_taxonomies(array(
2256
+ 'public' => true
2257
+ ),"object","and");
2258
+
2259
+ $post_types = get_post_types( array(
2260
+ 'public' => true,
2261
+ ), "object","and");
2262
+ $post_types["post"] = get_post_type_object( 'post' );
2263
+ $post_types["page"] = get_post_type_object( 'page' );
2264
+
2265
+ foreach($post_types as $pt=>$pd){
2266
+ foreach($taxs as $tx){
2267
+
2268
+ if(in_array($pt,$tx->object_type)){
2269
+
2270
+ $terms = get_terms($tx->name, array(
2271
+ 'hide_empty' => true,
2272
+ 'number' =>400
2273
+
2274
+ ) );
2275
+ if(!empty($terms)){
2276
+ print "<div class='categories-list cwp-hidden cwp-tax-".$pt."'><p class='rop-category-header'>".$tx->labels->name." </p>";
2277
+ foreach ($terms as $t) {
2278
+
2279
+ if (!is_array(get_option('top_opt_omit_cats')))
2280
+ $top_opt_omit_specific_cats = explode(',',get_option('top_opt_omit_cats'));
2281
+ else
2282
+ $top_opt_omit_specific_cats = get_option('top_opt_omit_cats');
2283
+
2284
+ print "<div class='cwp-cat'>";
2285
+ print "<input type='checkbox' data-posttype='".$pt."' name='".$field['option']."[]' value='".$t->term_id."' id='".$field['option']."_cat_".$t->term_id."'";
2286
+
2287
+ if($field['option'] == 'top_opt_omit_cats') {
2288
+ if(is_array($top_opt_omit_specific_cats)) {
2289
+ if(in_array($t->term_id, $top_opt_omit_specific_cats)) {
2290
+ print "checked=checked";
2291
+ }
2292
+ }
2293
+ }
2294
+
2295
+
2296
+ print ">";
2297
+ print "<label for='".$field['option']."_cat_".$t->term_id."'>".$t->name."</label>";
2298
+ print "</div>";
2299
+ }
2300
+ print "<div class='clear'></div></div>";
2301
+ }
2302
+
2303
+ }
2304
+
2305
+ }
2306
+
2307
+ }
2308
+
2309
+
2310
+ break;
2311
+
2312
+ case 'custom-post-type':
2313
+ print "<div class='post-type-list clearfix'>";
2314
+ $args = array(
2315
+ 'public' => true,
2316
+ '_builtin' => false
2317
+ );
2318
+
2319
+ $output = 'names'; // names or objects, note names is the default
2320
+ $operator = 'and'; // 'and' or 'or'
2321
+ if (isset($field['available_pro'])) {
2322
+ if(!CWP_TOP_PRO){
2323
+ $pro = CWP_TOP_PRO_STRING;
2324
+ $disabled = "disabled='disabled'";
2325
+ }
2326
+ }
2327
+ $post_types = get_post_types( $args, $output, $operator );
2328
+ array_push($post_types,"post","page");
2329
+ foreach ($post_types as $post_type) {
2330
+
2331
+ //$top_opt_tweet_specific_category = get_option('top_opt_tweet_specific_category');
2332
+
2333
+ if (!is_array(get_option('top_opt_post_type')))
2334
+ $top_opt_post_types = explode(',',get_option('top_opt_post_type'));
2335
+ else
2336
+ $top_opt_post_types = get_option('top_opt_post_type');
2337
+
2338
+ print "<div class='cwp-cat '>";
2339
+ print "<input ".$disabled." type='checkbox' class='cwp-cpt-checkbox' name='".$field['option']."[]' value='".$post_type."' id='".$field['option']."_cat_".$post_type."'";
2340
+
2341
+ if($field['option'] == 'top_opt_post_type') {
2342
+ if(is_array($top_opt_post_types)) {
2343
+ if(in_array($post_type, $top_opt_post_types)) {
2344
+ print "checked=checked";
2345
+ }
2346
+ }
2347
+ }
2348
+
2349
+
2350
+ print ">";
2351
+ print "<label for='".$field['option']."_cat_".$post_type."'>".$post_type."</label>";
2352
+ print "</div>";
2353
+
2354
+ }
2355
+ print "</div> ".$pro;
2356
+ break;
2357
+
2358
+ }
2359
+
2360
+ }
2361
+
2362
+
2363
+ public function echoTime() {
2364
+
2365
+ echo $this->getTime();
2366
+
2367
+ die();
2368
+ }
2369
+ public function getTime() {
2370
+
2371
+ return time() ;
2372
+
2373
+ //return time() - 253214 + 2 * 3600 + 24 * 3600;
2374
+ }
2375
+
2376
+ function top_plugin_action_links($links, $file) {
2377
+
2378
+ if ($file == ROPPLUGINBASENAME) {
2379
+ // The "page" query string value must be equal to the slug
2380
+ // of the Settings admin page we defined earlier, which in
2381
+ // this case equals "myplugin-settings".
2382
+ $settings_link = '<a href="' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=TweetOldPost">Settings</a>';
2383
+ array_unshift($links, $settings_link);
2384
+ }
2385
+
2386
+ return $links;
2387
+ }
2388
+ public function getRemoteCheck(){
2389
+ $remote_check = get_option("cwp_rop_remote_trigger");
2390
+ if($remote_check === false) $remote_check = "off";
2391
+ return $remote_check;
2392
+ }
2393
+ public function getBetaUserStatus(){
2394
+ $beta_user = get_option("cwp_rop_beta_user");
2395
+ if($beta_user === false) $beta_user = "off";
2396
+ return $beta_user;
2397
+ }
2398
+ public function fixCron() {
2399
+ update_option('cwp_topnew_notice','');
2400
+
2401
+ if ( defined( 'ALTERNATE_WP_CRON' ) ) {
2402
+
2403
+ //delete_option( 'hmbkp_wp_cron_test_failed' );
2404
+
2405
+ //echo 1;
2406
+
2407
+ return 0;
2408
+
2409
+ }
2410
+ else {
2411
+
2412
+ $response = wp_remote_head( site_url( 'wp-cron.php' ), array( 'timeout' => 30 ) );
2413
+
2414
+ if ( is_wp_error( $response ) ) {
2415
+
2416
+ update_option('cwp_topnew_notice', "Looks like there is an issue with your WP Cron and Tweet Old Post relies on wp-cron to schedule tweets, see the <a href='http://wordpress.org/plugins/tweet-old-post/faq/'>FAQ</a> for more details!");
2417
+
2418
+ } elseif ( wp_remote_retrieve_response_code( $response ) != 200 ) {
2419
+
2420
+ update_option('cwp_topnew_notice', "Looks like there is an issue with your WP Cron and Tweet Old Post relies on wp-cron to schedule tweets, see the <a href='http://wordpress.org/plugins/tweet-old-post/faq/'>FAQ</a> for more details!");
2421
+
2422
+ }
2423
+
2424
+
2425
+
2426
+ }
2427
+ }
2428
+ public function clearOldCron(){
2429
+ if(isset($_POST['cwp-action'])){
2430
+ if($_POST['cwp-action'] == 'download_sysinfo'){
2431
+ header('Content-Disposition: attachment; filename="report.txt"');
2432
+ header('Content-type: text/plain');
2433
+ echo $_POST['cwp-top-sysinfo'];
2434
+ die();
2435
+
2436
+ }
2437
+
2438
+ }
2439
+ if ( false === ( $remote_calls = get_transient( 'rop_remote_calls' ) ) ) {
2440
+ $beta_user = $this->getBetaUserStatus();
2441
+ if($beta_user == "on" ) {
2442
+ $this->sendBetaUserTrigger($beta_user);
2443
+ }
2444
+ $remote_call = $this->getRemoteCheck();
2445
+ if($remote_call == "on" ) {
2446
+ $this->sendBetaUserTrigger($remote_call);
2447
+ }
2448
+
2449
+ $this->sendRemoteTrigger($this->getRemoteCheck());
2450
+ set_transient( 'rop_remote_calls', "done", 24 * HOUR_IN_SECONDS );
2451
+ }
2452
+ if(!defined("VERSION_CHECK") && function_exists('topProImage')){
2453
+ $this->notices[] = "You need to have the latest version of the Revive Old Post Pro addon in order to use it. Please download it from the themeisle.com account";
2454
+
2455
+ }
2456
+ $all = $this->getAllNetworks();
2457
+
2458
+ if($this->pluginStatus !== 'true'){
2459
+
2460
+ foreach($all as $a){
2461
+
2462
+ wp_clear_scheduled_hook($a.'roptweetcron',array($a));
2463
+
2464
+
2465
+ }
2466
+ return false;
2467
+ }
2468
+
2469
+
2470
+ $networks = $this->getAvailableNetworks();
2471
+ if(wp_next_scheduled( 'cwp_top_tweet_cron' ) !== false) {
2472
+
2473
+ $timestamp = wp_next_scheduled( 'cwp_top_tweet_cron' );
2474
+ wp_clear_scheduled_hook('cwp_top_tweet_cron');
2475
+ foreach($networks as $network){
2476
+ wp_schedule_single_event($timestamp,$network.'roptweetcron',array($network));
2477
+ }
2478
+
2479
+ }else{
2480
+
2481
+ if(wp_next_scheduled( 'cwptoptweetcronnew' ) !== false) {
2482
+ $timestamp = wp_next_scheduled( 'cwptoptweetcronnew' );
2483
+ wp_clear_scheduled_hook('cwptoptweetcronnew');
2484
+ foreach($networks as $network){
2485
+ wp_schedule_single_event($timestamp,$network.'roptweetcron',array($network));
2486
+ }
2487
+ }
2488
+ else{
2489
+
2490
+ foreach($all as $a){
2491
+ if(wp_next_scheduled( $a.'cwptoptweetcron',array($a) ) !== false) {
2492
+
2493
+ $timestamp = wp_next_scheduled($a.'cwptoptweetcron',array($a) );
2494
+ wp_clear_scheduled_hook($a.'cwptoptweetcron',array($a));
2495
+ wp_schedule_single_event($timestamp,$a.'roptweetcron',array($a));
2496
+ }
2497
+ }
2498
+ foreach($all as $a){
2499
+ if(!in_array($a,$networks)){
2500
+ wp_clear_scheduled_hook($a.'roptweetcron',array($a));
2501
+ }
2502
+
2503
+ }
2504
+
2505
+ }
2506
+
2507
+ }
2508
+
2509
+ if($this->pluginStatus === 'true'){
2510
+ foreach($networks as $avn){
2511
+ if(wp_next_scheduled( $avn.'roptweetcron',array($avn) ) === false) {
2512
+ $this->scheduleTweet($avn);
2513
+ }
2514
+ }
2515
+ }
2516
+ }
2517
+ public function loadAllHooks()
2518
+ {
2519
+
2520
+ // loading all actions and filters
2521
+ add_action('admin_menu', array($this, 'addAdminMenuPage'));
2522
+
2523
+ add_action('admin_enqueue_scripts', array($this, 'loadAllScriptsAndStyles'));
2524
+
2525
+ add_action( 'admin_notices', array($this, 'adminNotice') );
2526
+
2527
+ add_filter('plugin_action_links',array($this,'top_plugin_action_links'), 10, 2);
2528
+
2529
+ add_action( 'plugins_loaded', array($this, 'addLocalization') );
2530
+
2531
+ //ajax actions
2532
+
2533
+ // Update all options ajax action.
2534
+ add_action('wp_ajax_update_response', array($this, 'updateAllOptions'));
2535
+
2536
+ // Reset all options ajax action.
2537
+ add_action('wp_ajax_reset_options', array($this, 'resetAllOptions'));
2538
+
2539
+ // Add new twitter account ajax action
2540
+ add_action('wp_ajax_add_new_account', array($this, 'addNewAccount'));
2541
+
2542
+ // Display managed pages ajax action
2543
+ add_action('wp_ajax_display_pages', array($this, 'displayPages'));
2544
+
2545
+ // Add new account managed pages ajax action
2546
+ add_action('wp_ajax_add_pages', array($this, 'addPages'));
2547
+
2548
+ // Add more than one twitter account ajax action
2549
+ add_action('wp_ajax_add_new_account_pro', array($this, 'addNewAccountPro'));
2550
+
2551
+ // Log Out Twitter user ajax action
2552
+ add_action('wp_ajax_log_out_user', array($this, 'logOutUser'));
2553
+
2554
+ //start ROP
2555
+ add_action('wp_ajax_tweet_old_post_action', array($this, 'startTweetOldPost'));
2556
+
2557
+ //clear Log messages
2558
+ add_action('wp_ajax_rop_clear_log', array($this, 'clearLog'));
2559
+
2560
+ //remote trigger cron
2561
+ add_action('wp_ajax_remote_trigger', array($this, 'remoteTrigger'));
2562
+ add_action('wp_ajax_beta_user_trigger', array($this, 'betaUserTrigger'));
2563
+
2564
+ //sample tweet messages
2565
+ add_action('wp_ajax_view_sample_tweet_action', array($this, 'viewSampleTweet'));
2566
+
2567
+ // Tweet Old Post tweet now action.
2568
+ add_action('wp_ajax_tweet_now_action', array($this, 'tweetNow'));
2569
+
2570
+ add_action('wp_ajax_gettime_action', array($this, 'echoTime'));
2571
+
2572
+ //get notice
2573
+ add_action('wp_ajax_getNotice_action', array($this, 'getNotice'));
2574
+
2575
+ //stop ROP
2576
+ add_action('wp_ajax_stop_tweet_old_post', array($this, 'stopTweetOldPost'));
2577
+
2578
+ //custom actions
2579
+
2580
+ add_action("rop_start_posting",array($this,"startPosting"));
2581
+ add_action("rop_stop_posting",array($this,"stopPosting"));
2582
+ $networks = $this->getAllNetworks();
2583
+
2584
+ foreach($networks as $network){
2585
+ add_action($network.'roptweetcron',array($this,"tweetOldPost"));
2586
+
2587
+ }
2588
+
2589
+ //admin_init actions
2590
+
2591
+ add_action('admin_init', array($this,'top_nag_ignore'));
2592
+ add_action('admin_init', array($this,'clearOldCron'));
2593
+
2594
+ //filters
2595
+
2596
+ add_filter("rop_users_filter",array($this,"rop_users_filter_free"),1,1);
2597
+
2598
+ if(isset($_GET['debug']) ) {
2599
+ //$this->getNextTweetTime('twitter');
2600
+ //$this->tweetOldPost("twitter"); global $CWP_TOP_Core_PRO;
2601
+ $this->tweetOldPost("twitter");
2602
+
2603
+ die();
2604
+ }
2605
+
2606
+ }
2607
+
2608
+ public function rop_users_filter_free($users){
2609
+
2610
+ if(!is_array($users)) $users = array();
2611
+ foreach($users as $k=>$user){
2612
+ if(!isset($user['service'])) {
2613
+ if ( strpos( $user['oauth_user_details']->profile_image_url, 'twimg' ) ) {
2614
+
2615
+ $users[ $k ]['service'] = 'twitter';
2616
+ }
2617
+ if ( strpos( $user['oauth_user_details']->profile_image_url, 'facebook' ) ) {
2618
+
2619
+ $users[ $k ]['service'] = 'facebook';
2620
+ }
2621
+ }
2622
+ }
2623
+
2624
+ return $users;
2625
+ }
2626
+
2627
+ public function remoteTrigger($status = ""){
2628
+ if(!is_admin()) return false;
2629
+ $state = isset($_POST["state"]) ? $_POST["state"] : "";
2630
+
2631
+ if(!empty($status)) $state = $status;
2632
+
2633
+ if(!empty($state) &&( $state == "on" || $state == "off")){
2634
+
2635
+ update_option("cwp_rop_remote_trigger",$state);
2636
+ $this->sendRemoteTrigger($state);
2637
+
2638
+ }
2639
+
2640
+ if(empty($status)) die();
2641
+ }
2642
+
2643
+ public function sendRemoteTrigger($state){
2644
+
2645
+ global $cwp_rop_remote_trigger_url;
2646
+ $state = ($state == "on") ? "yes" : "no";
2647
+
2648
+ wp_remote_post( $cwp_rop_remote_trigger_url, array(
2649
+ 'method' => 'POST',
2650
+ 'timeout' => 1,
2651
+ 'redirection' => 5,
2652
+ 'httpversion' => '1.0',
2653
+ 'blocking' => true,
2654
+ 'headers' => array(),
2655
+ 'body' => array( 'url' => get_site_url(), 'status' => $state ),
2656
+ 'cookies' => array()
2657
+ )
2658
+ );
2659
+
2660
+ }
2661
+
2662
+ public function betaUserTrigger($status = ""){
2663
+ if(!is_admin()) return false;
2664
+ $state = $_POST["state"];
2665
+ if(!empty($status)) $state = $status;
2666
+
2667
+ if(!empty($state) &&( $state == "on" || $state == "off")){
2668
+
2669
+ update_option("cwp_rop_beta_user",$state);
2670
+ $this->sendBetaUserTrigger($state);
2671
+
2672
+ }
2673
+
2674
+ die();
2675
+ }
2676
+
2677
+
2678
+ public function sendBetaUserTrigger($state){
2679
+
2680
+ global $cwp_rop_beta_trigger_url;
2681
+ $state = ($state == "on") ? "yes" : "no";
2682
+
2683
+ wp_remote_post( $cwp_rop_beta_trigger_url, array(
2684
+ 'method' => 'POST',
2685
+ 'timeout' => 1,
2686
+ 'redirection' => 5,
2687
+ 'httpversion' => '1.0',
2688
+ 'blocking' => true,
2689
+ 'headers' => array(),
2690
+ 'body' => array( 'email' => get_bloginfo('admin_email'), 'status' => $state ),
2691
+ 'cookies' => array()
2692
+ )
2693
+ );
2694
+
2695
+ }
2696
+ public function loadAllScriptsAndStyles()
2697
+ {
2698
+ global $cwp_top_settings; // Global Tweet Old Post Settings
2699
+
2700
+ // Enqueue and register all scripts on plugin's page
2701
+ if(isset($_GET['page'])) {
2702
+ if ($_GET['page'] == $cwp_top_settings['slug'] || $_GET['page'] == "ExcludePosts") {
2703
+
2704
+ // Enqueue and Register Main CSS File
2705
+ wp_register_style( 'cwp_top_stylesheet', ROPCSSFILE, false, time() );
2706
+ wp_enqueue_style( 'cwp_top_stylesheet' );
2707
+
2708
+ // Register Main JS File
2709
+ wp_enqueue_script( 'cwp_top_js_countdown', ROPJSCOUNTDOWN, array(), time(), true );
2710
+ wp_enqueue_script( 'cwp_top_javascript', ROPJSFILE, array(), time(), true );
2711
+ wp_localize_script( 'cwp_top_javascript', 'cwp_top_ajaxload', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
2712
+ }
2713
+ }
2714
+
2715
+ }
2716
+
2717
+ function top_check_user_role( $role, $user_id = null ) {
2718
+
2719
+ if ( is_numeric( $user_id ) )
2720
+ $user = get_userdata( $user_id );
2721
+ else
2722
+ $user = wp_get_current_user();
2723
+
2724
+ if ( empty( $user ) )
2725
+ return false;
2726
+
2727
+ return in_array( $role, (array) $user->roles );
2728
+ }
2729
+
2730
+ public function addAdminMenuPage()
2731
+ {
2732
+ global $cwp_top_settings; // Global Tweet Old Post Settings
2733
+ if (!current_user_can('manage_options') && $this->top_check_user_role( 'Administrator' ))
2734
+ $cap = 1;
2735
+ else
2736
+ $cap='manage_options';
2737
+ add_menu_page($cwp_top_settings['name'], $cwp_top_settings['name'], $cap, $cwp_top_settings['slug'], array($this, 'loadMainView'), '','99.87514');
2738
+ add_submenu_page($cwp_top_settings['slug'], __('Exclude Posts','tweet-old-post'), __('Exclude Posts','tweet-old-post'), 'manage_options', 'ExcludePosts', 'rop_exclude_posts');
2739
+
2740
+ add_submenu_page($cwp_top_settings['slug'], __('System Info','tweet-old-post'), __('System Info','tweet-old-post'), 'manage_options', 'SystemInfo', array($this,'system_info'));
2741
+
2742
+ }
2743
+
2744
+ public function getFormatFields(){
2745
+
2746
+ $all = $this->getAllNetworks(true);
2747
+ global $cwp_format_fields;
2748
+ $networks_fields = array();
2749
+
2750
+ foreach($all as $network=>$pro){
2751
+ if(CWP_TOP_PRO == $pro) {
2752
+ $networks_fields[ $network ] = $cwp_format_fields;
2753
+ }else{
2754
+ foreach($cwp_format_fields as $k=>$v){
2755
+ $v[ "available_pro"] = "yes";
2756
+ $networks_fields[ $network][$k] = $v;
2757
+ }
2758
+
2759
+ }
2760
+ }
2761
+ return $networks_fields;
2762
+ }
2763
+ public function getGeneralFields(){
2764
+ global $cwp_top_fields;
2765
+
2766
+ return $cwp_top_fields;
2767
+
2768
+ }
2769
+ public function loadMainView()
2770
+ {
2771
+ $cwp_top_fields = $this->getGeneralFields();
2772
+ foreach ($cwp_top_fields as $field => $value) {
2773
+ $cwp_top_fields[$field]['option_value'] = get_option($cwp_top_fields[$field]['option']);
2774
+ }
2775
+ $all_networks = $this->getAllNetworks();
2776
+ $format_fields = $this->getFormatFields();
2777
+ $options = get_option("top_opt_post_formats");
2778
+ global $cwp_top_global_schedule;
2779
+ $cwp_top_global_schedule = $this->getSchedule();
2780
+ if($options === false ) $options = array();
2781
+ if($cwp_top_global_schedule === false ) $cwp_top_global_schedule = array();
2782
+
2783
+ $schedule = $cwp_top_fields["interval"]['option_value'];
2784
+ foreach ($format_fields as $network_name => $network_details) {
2785
+ foreach ($network_details as $field => $vvalue) {
2786
+ $value = isset($options[$network_name."_".$format_fields[$network_name][$field]['option']]) ? $options[$network_name."_".$format_fields[$network_name][$field]['option']] : false ;
2787
+ if($value === false) {
2788
+ $value = get_option($format_fields[$network_name][$field]['option']);
2789
+ if($value === false) {
2790
+ if(isset($vvalue['default_value']))
2791
+ $value = $vvalue['default_value'];
2792
+ }
2793
+ }
2794
+ $format_fields[$network_name][$field]['option_value'] = $value;
2795
+ }
2796
+ if(!isset($cwp_top_global_schedule[$network_name."_schedule_type_selected"])){
2797
+ $cwp_top_global_schedule[$network_name."_schedule_type_selected"] = "each";
2798
+ $cwp_top_global_schedule[$network_name."_top_opt_interval"] = $schedule;
2799
+ }
2800
+ }
2801
+ require_once(plugin_dir_path( __FILE__ )."view.php");
2802
+ }
2803
+
2804
+ // Sends a request to the passed URL
2805
+ public function sendRequest($url, $method='GET', $data='', $auth_user='', $auth_pass='') {
2806
+
2807
+ $ch = curl_init($url);
2808
+
2809
+ if (strtoupper($method) == "POST") {
2810
+ curl_setopt($ch, CURLOPT_POST, 1);
2811
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
2812
+ }
2813
+
2814
+ if (ini_get('open_basedir') == '' && ini_get('safe_mode') == 'Off') {
2815
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
2816
+ }
2817
+
2818
+ curl_setopt($ch, CURLOPT_HEADER, 0);
2819
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
2820
+
2821
+ if ($auth_user != '' && $auth_pass != '') {
2822
+ curl_setopt($ch, CURLOPT_USERPWD, "{$auth_user}:{$auth_pass}");
2823
+ }
2824
+
2825
+ $response = curl_exec($ch);
2826
+
2827
+ $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
2828
+
2829
+ curl_close($ch);
2830
+
2831
+ if ($httpcode != 200) {
2832
+ self::addNotice("Error for request: " . $url . " : ". $response,'error');
2833
+ return $httpcode;
2834
+ }
2835
+
2836
+ return $response;
2837
+ }
2838
+
2839
+ // Shortens the url.
2840
+ public function shortenURL($url, $service, $id, $bitly_key, $bitly_user) {
2841
+ $url = urlencode($url);
2842
+ if ($service == "bit.ly") {
2843
+
2844
+ //$shortURL = $url;
2845
+ $url = trim($url);
2846
+ $bitly_key = trim($bitly_key);
2847
+ $bitly_user = trim($bitly_user);
2848
+ $shortURL = "http://api.bit.ly/v3/shorten?format=txt&login=".$bitly_user."&apiKey=".$bitly_key."&longUrl={$url}";
2849
+ $shortURL = $this->sendRequest($shortURL, 'GET');
2850
+
2851
+ } elseif ($service == "tr.im") {
2852
+ $shortURL = "http://api.tr.im/api/trim_simple?url={$url}";
2853
+ $shortURL = $this->sendRequest($shortURL, 'GET');
2854
+ } elseif ($service == "3.ly") {
2855
+ $shortURL = "http://3.ly/?api=em5893833&u={$url}";
2856
+ $shortURL = $this->sendRequest($shortURL, 'GET');
2857
+ } elseif ($service == "tinyurl") {
2858
+ $shortURL = "http://tinyurl.com/api-create.php?url=" . $url;
2859
+ $shortURL = $this->sendRequest($shortURL, 'GET');
2860
+ } elseif ($service == "u.nu") {
2861
+ $shortURL = "http://u.nu/unu-api-simple?url={$url}";
2862
+ $shortURL = $this->sendRequest($shortURL, 'GET');
2863
+ } elseif ($service == "1click.at") {
2864
+ $shortURL = "http://1click.at/api.php?action=shorturl&url={$url}&format=simple";
2865
+ $shortURL = $this->sendRequest($shortURL, 'GET');
2866
+ } elseif ($service == "is.gd") {
2867
+
2868
+ $shortURL = "http://is.gd/api.php?longurl={$url}";
2869
+
2870
+ $shortURL = $this->sendRequest($shortURL, 'GET');
2871
+ } elseif ($service == "t.co") {
2872
+ $shortURL = "http://twitter.com/share?url={$url}";
2873
+ $shortURL = $this->sendRequest($shortURL, 'GET');
2874
+ } else {
2875
+ $shortURL = wp_get_shortlink($id);
2876
+ }
2877
+ if($shortURL != ' 400 '&& $shortURL!="500" && $shortURL!="0") {
2878
+ return $shortURL;
2879
+ }
2880
+ else
2881
+ update_option('cwp_topnew_notice','Looks like is an error with your url shortner');
2882
+ }
2883
+
2884
+ public function rop_load_dashboard_icon()
2885
+ {
2886
+ wp_register_style( 'rop_custom_dashboard_icon', ROPCUSTOMDASHBOARDICON, false, time() );
2887
+ $screen = get_current_screen();
2888
+ if($screen->base == "toplevel_page_TweetOldPost"){
2889
+ wp_enqueue_style( 'rop_custom_dashboard_icon' );
2890
+ }
2891
+ }
2892
+
2893
+ }
2894
+ }
2895
+
2896
+ if(class_exists('CWP_TOP_Core')) {
2897
+ $CWP_TOP_Core = new CWP_TOP_Core;
2898
+ }
inc/exclude-posts.php CHANGED
@@ -1,341 +1,347 @@
1
- <?php
2
-
3
- require_once(ROPPLUGINPATH.'/tweet-old-post.php');
4
- require_once(ROPPLUGINPATH.'/inc/xml.php');
5
-
6
- function rop_exclude_posts() {
7
-
8
- if (current_user_can('manage_options'))
9
- {
10
-
11
- global $wpdb;
12
- $message_updated = __("Tweet Old Post Options Updated.", 'TweetOldPost');
13
- $records_per_page = 20;
14
- $twp_obj = new CWP_TOP_Core;
15
- $paged = isset($_GET['paged']) ? $_GET['paged'] : 1;
16
- $postTypes = $twp_obj->getTweetPostType();
17
- $postTypes = explode(',',$postTypes);
18
- $selected_post_type = isset($_POST['rop_select_post_type']) ? $_POST['rop_select_post_type'] : $postTypes[0];
19
- $selected_tax = isset($_POST['rop_select_category']) ? $_POST['rop_select_category'] : "none";
20
- $displayed_posts = array();
21
- $exclude_search = isset($_POST['s']) ? $_POST['s'] : "";
22
- $excluded_cats=get_option('top_opt_omit_cats');
23
- if(is_array($excluded_cats)) $excluded_cats = implode(",",$excluded_cats);
24
- if(empty($excluded_cats)) $excluded_cats = '';
25
- if(!is_string($excluded_cats)) $excluded_cats = '';
26
- $excluded_cats = trim($excluded_cats);
27
- $excluded_display_option = array("all"=>"All","excluded"=>"Excluded","unexcluded"=>"Unexcluded");
28
- $excluded_display_selected = isset($_POST['rop_display_selection']) ? $_POST['rop_display_selection'] : key($excluded_display_option);
29
- $taxs = get_taxonomies(array(
30
- 'public' => true,
31
- 'hierarchical' => true
32
- ),"object","and");
33
- $available_taxonomy = array();
34
- foreach($postTypes as $pt){
35
- foreach($taxs as $kt=>$tx){
36
-
37
- if(in_array($pt,$tx->object_type)){
38
- if(!isset($available_taxonomy[$kt])){
39
- $available_taxonomy[$kt] = array("label"=>$tx->label);
40
- }
41
- if(!isset($available_taxonomy[$kt]['post_types'])){
42
- $available_taxonomy[$kt]['post_types'] = array();
43
-
44
- }
45
- $available_taxonomy[$kt]['post_types'] = array_merge( $available_taxonomy[$kt]['post_types'],$tx->object_type);
46
- if(!isset($available_taxonomy[$kt]['taxs'])){
47
- $available_taxonomy[$kt]['taxs'] = array();
48
-
49
- }
50
- $terms = get_terms($tx->name, array(
51
- 'hide_empty' => false,
52
- 'exclude' =>$excluded_cats
53
- ));
54
- foreach ($terms as $t) {
55
- $available_taxonomy[$kt]['taxs'][$t->term_id] = $t->name;
56
- }
57
- }
58
- }
59
-
60
- }
61
- $excluded_ids = get_option('top_opt_excluded_post');
62
- $excluded_ids = array_filter(explode(',',$excluded_ids));
63
- if(isset($_POST['exclude']) ){
64
- if(!isset($_POST['rop_post_id'])) $_POST['rop_post_id'] =array();
65
- $show_items = explode(',',$_POST['rop_show_posts']);
66
- $dif = array_diff($show_items,$_POST['rop_post_id']);
67
- $com = array_intersect($dif,$excluded_ids);
68
- $excluded_ids = array_diff($excluded_ids,$com);
69
- $excluded_ids = array_merge ($excluded_ids,$_POST['rop_post_id']);
70
- $excluded_ids = array_unique($excluded_ids);
71
- update_option('top_opt_excluded_post',implode(',',$excluded_ids));
72
- }
73
-
74
- if(isset($_POST['exclude']) ) {
75
- print( '
76
- <div id="message" style="margin-top:30px" class="updated fade">
77
- <p>' . __( 'Posts excluded successfully.', 'TweetOldPost' ) . '</p>
78
- </div>' );
79
- }
80
-
81
- require_once(plugin_dir_path( __FILE__ )."view-exclude.php");
82
-
83
-
84
- $sql = "SELECT p.ID,p.post_title,p.post_date,u.user_nicename,p.guid,p.post_type FROM $wpdb->posts p join $wpdb->users u on p.post_author=u.ID WHERE (post_type = '{$selected_post_type}')
85
- AND post_status = 'publish'";
86
- if($selected_tax != 'none'){
87
- $sql = $sql . " and p.ID IN ( SELECT tr.object_id FROM ".$wpdb->prefix."term_relationships AS tr INNER JOIN ".$wpdb->prefix."term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.term_id=" . $selected_tax . " ";
88
- if(!empty($excluded_cats)){
89
- $sql .= " and tr.object_id NOT IN ( SELECT tr.object_id FROM ".$wpdb->prefix."term_relationships AS tr INNER JOIN ".$wpdb->prefix."term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.term_id IN (" . $excluded_cats . ")) ) ";
90
-
91
- }else{
92
- $sql .= ")";
93
-
94
- }
95
- }
96
- else
97
- {
98
-
99
- if(!empty($excluded_cats)){
100
- $sql = $sql . " and p.ID NOT IN ( SELECT tr.object_id FROM ".$wpdb->prefix."term_relationships AS tr INNER JOIN ".$wpdb->prefix."term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.term_id IN (" . $excluded_cats . "))";
101
-
102
- }
103
- }
104
- if($excluded_display_selected == "excluded" )
105
- {
106
-
107
- $sql = $sql . " and p.ID IN (".implode(",",$excluded_ids).")";
108
- }
109
- if($excluded_display_selected == "unexcluded" && !empty($excluded_ids))
110
- {
111
-
112
- $sql = $sql . " and p.ID NOT in (".implode(",",$excluded_ids).")";
113
- }
114
- if(!empty($exclude_search))
115
- $sql = $sql . " and post_title like '%" . trim($exclude_search ) . "%'";
116
- $sql = $sql . " order by post_date desc";
117
- $posts = $wpdb->get_results($sql);
118
-
119
-
120
-
121
- $from = $paged * $records_per_page - $records_per_page;
122
- $to = min($paged * $records_per_page, count($posts));
123
- $post_count =count($posts);
124
-
125
- print('<form id="top_TweetOldPost" name="top_TweetOldPost" action="' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=ExcludePosts" method="post">');
126
- print('
127
- <script language="javascript">
128
-
129
- function ROPshowCorectTax(){
130
- var post_type = jQuery("#rop_select_post_type").val();
131
- jQuery("#rop_select_category optgroup").each(function(){
132
- var pt = jQuery(this).attr("data-post-type").split(",");
133
- var th = jQuery(this);
134
- if(jQuery.inArray(post_type,pt) > -1){
135
- th.show();
136
- }else{
137
- th.hide();
138
- }
139
-
140
-
141
- });
142
-
143
- }
144
- jQuery(function() {
145
- jQuery("#rop_select_post_type").on("change",function(){
146
- ROPshowCorectTax();
147
-
148
- });
149
- ROPshowCorectTax();
150
-
151
-
152
-
153
-
154
-
155
-
156
-
157
- });
158
- function checkedAll() {
159
- if(jQuery("rop-header-check").is("checked")){
160
- jQuery(".rop_post_id").attr("checked","checked");
161
-
162
- }else{
163
-
164
- jQuery(".rop_post_id").removeAttr("checked" );
165
-
166
- }
167
- }
168
- </script>
169
- ');
170
- print('<div class="tablenav"><div class="alignleft actions">');
171
- ?> <p class="rop-exclude-filter">
172
- <label>View: </label>
173
- <select name="rop_display_selection" id="selFilter" style="width:100px">
174
- <?php foreach($excluded_display_option as $value=>$name): ?>
175
- <option value="<?php echo $value; ?>" <?php selected($value,$excluded_display_selected); ?> > <?php echo $name; ?></option>
176
- <?php endforeach; ?>
177
- </select>
178
- </p>
179
- <p class="rop-exclude-filter">
180
- <label>Post type</label>
181
- <select name="rop_select_post_type" id="rop_select_post_type">
182
- <?php
183
- foreach($postTypes as $pt):
184
- ?>
185
- <option value="<?php echo $pt ?>" <?php selected($pt,$selected_post_type); ?>><?php echo $pt?></option>
186
- <?php
187
- endforeach;
188
- ?>
189
-
190
- </select>
191
- </p>
192
-
193
- <p class="rop-exclude-filter">
194
- <label>Category</label>
195
- <select name="rop_select_category" id="rop_select_category">
196
- <option value="none"> All </option>
197
- <?php
198
- foreach($available_taxonomy as $at):
199
- ?>
200
- <optgroup label="<?php echo $at['label']; ?>" data-post-type="<?php echo implode(',',$at['post_types']);?>">
201
- <?php
202
- foreach($at['taxs'] as $id=>$tax): ?>
203
- <option value="<?php echo $id ?>" <?php selected($id,$selected_tax); ?>><?php echo $tax; ?></option>
204
- <?php
205
- endforeach;
206
- ?>
207
- </optgroup>
208
-
209
- <?php
210
- endforeach;
211
- ?>
212
-
213
- </select>
214
- </p>
215
- <?php
216
-
217
- print('<p class="search-box" style="margin:0px">
218
- <input type="text" id="post-search-input" name="s" value="'.$exclude_search.'" />
219
- <input type="submit" value="Search Posts" name="search" class="button" />
220
- <input type="submit" value="Exclude selected" name="exclude" class="button" />
221
- </p>');
222
- print('</div>');
223
-
224
- $page_links = paginate_links(array(
225
- 'base' => add_query_arg('paged', '%#%'),
226
- 'format' => '',
227
- 'prev_text' => __('&laquo;'),
228
- 'next_text' => __('&raquo;'),
229
- 'total' => ceil(count($posts) / $records_per_page),
230
- 'current' => $paged
231
- ));
232
-
233
- if ($page_links) {
234
-
235
- print('<div class="tablenav-pages">');
236
- $page_links_text = sprintf('<span class="displaying-num">' . __('Displaying %s&#8211;%s of %s') . '</span>%s',
237
- number_format_i18n(( $paged - 1 ) * $records_per_page + 1),
238
- number_format_i18n(min($paged * $records_per_page, count($posts))),
239
- number_format_i18n(count($posts)),
240
- $page_links
241
- );
242
- echo $page_links_text;
243
- print('</div>');
244
- }
245
- print('</div>');//tablenav div
246
- if (count($posts) > 0) {
247
- print(' <div class="wrap">
248
- <table class="widefat fixed">
249
- <thead>
250
- <tr>
251
- <th class="manage-column column-cb check-column"><input name="headchkbx" id="rop-header-check" onchange="javascript:checkedAll();" type="checkbox" value="checkall"/></th>
252
- <th>No.</th>
253
- <th>Id</th>
254
- <th>Post Title</th>
255
- <th>Author</th>
256
- <th>Post Date</th>
257
- </tr>
258
- </thead>
259
- <tbody>
260
- ');
261
-
262
-
263
-
264
- for ($i = $from; $i < $to; $i++) {
265
-
266
- $displayed_posts[] = $posts[$i]->ID;
267
- if (in_array($posts[$i]->ID, $excluded_ids)) {
268
- $checked = "Checked";
269
- $bgcolor="#FFCC99";
270
- } else {
271
- $checked = "";
272
- $bgcolor="#FFF";
273
- }
274
- $displayed_posts[] = $posts[$i]->ID;
275
- print('
276
-
277
- <tr style="background-color:'.$bgcolor.';">
278
- <th class="check-column">
279
- <input type="checkbox" name="rop_post_id[]" class="rop_post_id" id="del' . $posts[$i]->ID . '" value="' . $posts[$i]->ID . '" ' . $checked . '/>
280
- </th>
281
- <td>
282
- ' . ($i + 1) . '
283
- </td>
284
- <td>
285
- ' . $posts[$i]->ID . '
286
- </td>
287
- <td>
288
- <a href=' . get_permalink($posts[$i]->ID) . ' target="_blank">' . $posts[$i]->post_title . '</a>
289
- </td>
290
- <td>
291
- ' . $posts[$i]->user_nicename . '
292
- </td>
293
- <td>
294
- ' . $posts[$i]->post_date . '
295
- </td>
296
- </tr>
297
-
298
- ');
299
- }
300
- print('
301
- </tbody>
302
- </table>
303
- </div>
304
- ');
305
- ?>
306
- <input type="hidden" name="rop_show_posts" value="<?php echo implode(',',$displayed_posts); ?>"/>
307
- <?php
308
-
309
- if ($page_links) {
310
-
311
- print('<div class="tablenav"> <div class="tablenav-pages">');
312
- $page_links_text = sprintf('<span class="displaying-num">' . __('Displaying %s&#8211;%s of %s') . '</span>%s',
313
- number_format_i18n(( $paged - 1 ) * $records_per_page + 1),
314
- number_format_i18n(min($paged * $records_per_page, count($posts))),
315
- number_format_i18n(count($posts)),
316
- $page_links
317
- );
318
- echo $page_links_text;
319
- print('</div></div> ');
320
- }
321
-
322
-
323
-
324
-
325
- }
326
- else
327
- {
328
- print('<div class="wrap">
329
- <div id="message" style="margin-top:30px" class="updated fade">
330
- <p>' . __('No Posts found. Review your search or filter criteria/term.', 'TweetOldPost') . '</p>
331
- </div></div>');
332
- }
333
- print('</form></section>');
334
- } else {
335
- print('
336
- <div id="message" class="updated fade">
337
- <p>' . __('You do not have enough permission to set the option. Please contact your admin.', 'TweetOldPost') . '</p>
338
- </div>');
339
- }
340
- }
 
 
 
 
 
 
341
  ?>
1
+ <?php
2
+
3
+ require_once(ROPPLUGINPATH.'/tweet-old-post.php');
4
+ require_once(ROPPLUGINPATH.'/inc/xml.php');
5
+
6
+ function rop_exclude_posts() {
7
+
8
+ if (current_user_can('manage_options'))
9
+ {
10
+
11
+ global $wpdb;
12
+ $message_updated = __("Tweet Old Post Options Updated.", 'TweetOldPost');
13
+ $records_per_page = 20;
14
+ $twp_obj = new CWP_TOP_Core;
15
+ $paged = isset($_POST['paged']) ? $_POST['paged'] : 1;
16
+ $postTypes = $twp_obj->getTweetPostType();
17
+ $postTypes = explode(',',$postTypes);
18
+ $selected_post_type = isset($_POST['rop_select_post_type']) ? $_POST['rop_select_post_type'] : $postTypes[0];
19
+ $selected_tax = isset($_POST['rop_select_category']) ? $_POST['rop_select_category'] : "none";
20
+ $displayed_posts = array();
21
+ $exclude_search = isset($_POST['s']) ? $_POST['s'] : "";
22
+ $excluded_cats=get_option('top_opt_omit_cats');
23
+ if(is_array($excluded_cats)) $excluded_cats = implode(",",$excluded_cats);
24
+ if(empty($excluded_cats)) $excluded_cats = '';
25
+ if(!is_string($excluded_cats)) $excluded_cats = '';
26
+ $excluded_cats = trim($excluded_cats);
27
+ $excluded_display_option = array("all"=>"All","excluded"=>"Excluded","unexcluded"=>"Unexcluded");
28
+ $excluded_display_selected = isset($_POST['rop_display_selection']) ? $_POST['rop_display_selection'] : key($excluded_display_option);
29
+ $taxs = get_taxonomies(array(
30
+ 'public' => true,
31
+ 'hierarchical' => true
32
+ ),"object","and");
33
+ $available_taxonomy = array();
34
+ foreach($postTypes as $pt){
35
+ foreach($taxs as $kt=>$tx){
36
+
37
+ if(in_array($pt,$tx->object_type)){
38
+ if(!isset($available_taxonomy[$kt])){
39
+ $available_taxonomy[$kt] = array("label"=>$tx->label);
40
+ }
41
+ if(!isset($available_taxonomy[$kt]['post_types'])){
42
+ $available_taxonomy[$kt]['post_types'] = array();
43
+
44
+ }
45
+ $available_taxonomy[$kt]['post_types'] = array_merge( $available_taxonomy[$kt]['post_types'],$tx->object_type);
46
+ if(!isset($available_taxonomy[$kt]['taxs'])){
47
+ $available_taxonomy[$kt]['taxs'] = array();
48
+
49
+ }
50
+ $terms = get_terms($tx->name, array(
51
+ 'hide_empty' => false,
52
+ 'exclude' =>$excluded_cats
53
+ ));
54
+ foreach ($terms as $t) {
55
+ $available_taxonomy[$kt]['taxs'][$t->term_id] = $t->name;
56
+ }
57
+ }
58
+ }
59
+
60
+ }
61
+ $excluded_ids = get_option('top_opt_excluded_post');
62
+ $excluded_ids = array_filter(explode(',',$excluded_ids));
63
+ if(isset($_POST['exclude']) ){
64
+ if(!isset($_POST['rop_post_id'])) $_POST['rop_post_id'] =array();
65
+ $show_items = explode(',',$_POST['rop_show_posts']);
66
+ $dif = array_diff($show_items,$_POST['rop_post_id']);
67
+ $com = array_intersect($dif,$excluded_ids);
68
+ $excluded_ids = array_diff($excluded_ids,$com);
69
+ $excluded_ids = array_merge ($excluded_ids,$_POST['rop_post_id']);
70
+ $excluded_ids = array_unique($excluded_ids);
71
+ update_option('top_opt_excluded_post',implode(',',$excluded_ids));
72
+ }
73
+ if(isset($_POST['exclude']) || isset($_POST['search'])){
74
+ $paged = 1;
75
+
76
+ }
77
+ if(isset($_POST['exclude']) ) {
78
+ print( '
79
+ <div id="message" style="margin-top:30px" class="updated fade">
80
+ <p>' . __( 'Posts excluded successfully.', 'TweetOldPost' ) . '</p>
81
+ </div>' );
82
+ }
83
+
84
+ require_once(plugin_dir_path( __FILE__ )."view-exclude.php");
85
+
86
+
87
+ $sql = "SELECT p.ID,p.post_title,p.post_date,u.user_nicename,p.guid,p.post_type FROM $wpdb->posts p join $wpdb->users u on p.post_author=u.ID WHERE (post_type = '{$selected_post_type}')
88
+ AND post_status = 'publish'";
89
+ if($selected_tax != 'none'){
90
+ $sql = $sql . " and p.ID IN ( SELECT tr.object_id FROM ".$wpdb->prefix."term_relationships AS tr INNER JOIN ".$wpdb->prefix."term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.term_id=" . $selected_tax . " ";
91
+ if(!empty($excluded_cats)){
92
+ $sql .= " and tr.object_id NOT IN ( SELECT tr.object_id FROM ".$wpdb->prefix."term_relationships AS tr INNER JOIN ".$wpdb->prefix."term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.term_id IN (" . $excluded_cats . ")) ) ";
93
+
94
+ }else{
95
+ $sql .= ")";
96
+
97
+ }
98
+ }
99
+ else
100
+ {
101
+
102
+ if(!empty($excluded_cats)){
103
+ $sql = $sql . " and p.ID NOT IN ( SELECT tr.object_id FROM ".$wpdb->prefix."term_relationships AS tr INNER JOIN ".$wpdb->prefix."term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.term_id IN (" . $excluded_cats . "))";
104
+
105
+ }
106
+ }
107
+ if($excluded_display_selected == "excluded" )
108
+ {
109
+
110
+ $sql = $sql . " and p.ID IN (".implode(",",$excluded_ids).")";
111
+ }
112
+ if($excluded_display_selected == "unexcluded" && !empty($excluded_ids))
113
+ {
114
+
115
+ $sql = $sql . " and p.ID NOT in (".implode(",",$excluded_ids).")";
116
+ }
117
+ if(!empty($exclude_search))
118
+ $sql = $sql . " and post_title like '%" . trim($exclude_search ) . "%'";
119
+ $sql = $sql . " order by post_date desc";
120
+ $posts = $wpdb->get_results($sql);
121
+
122
+
123
+
124
+ $from = $paged * $records_per_page - $records_per_page;
125
+ $to = min($paged * $records_per_page, count($posts));
126
+ $post_count =count($posts);
127
+
128
+ print('<form id="top_TweetOldPost" name="top_TweetOldPost" action="' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=ExcludePosts" method="post">');
129
+ print('
130
+ <script language="javascript">
131
+
132
+ function ROPshowCorectTax(){
133
+ var post_type = jQuery("#rop_select_post_type").val();
134
+ jQuery("#rop_select_category optgroup").each(function(){
135
+ var pt = jQuery(this).attr("data-post-type").split(",");
136
+ var th = jQuery(this);
137
+ if(jQuery.inArray(post_type,pt) > -1){
138
+ th.show();
139
+ }else{
140
+ th.hide();
141
+ }
142
+
143
+
144
+ });
145
+
146
+ }
147
+ jQuery(function() {
148
+ jQuery("#rop_select_post_type").on("change",function(){
149
+ ROPshowCorectTax();
150
+
151
+ });
152
+ ROPshowCorectTax();
153
+ });
154
+ function checkedAll() {
155
+ if(jQuery("rop-header-check").is("checked")){
156
+ jQuery(".rop_post_id").attr("checked","checked");
157
+
158
+ }else{
159
+
160
+ jQuery(".rop_post_id").removeAttr("checked" );
161
+
162
+ }
163
+ }
164
+ jQuery(document).ready(function(){
165
+ jQuery("#top_TweetOldPost").on("click",".page-numbers",function(){
166
+ var paged = jQuery(this).text();
167
+ jQuery("#post-search-page").val(paged);
168
+ jQuery("#top_TweetOldPost").submit();
169
+ return false;
170
+ })
171
+ })
172
+
173
+ </script>
174
+ ');
175
+ print('<div class="tablenav"><div class="alignleft actions">');
176
+ ?> <p class="rop-exclude-filter">
177
+ <label>View: </label>
178
+ <select name="rop_display_selection" id="selFilter" style="width:100px">
179
+ <?php foreach($excluded_display_option as $value=>$name): ?>
180
+ <option value="<?php echo $value; ?>" <?php selected($value,$excluded_display_selected); ?> > <?php echo $name; ?></option>
181
+ <?php endforeach; ?>
182
+ </select>
183
+ </p>
184
+ <p class="rop-exclude-filter">
185
+ <label>Post type</label>
186
+ <select name="rop_select_post_type" id="rop_select_post_type">
187
+ <?php
188
+ foreach($postTypes as $pt):
189
+ ?>
190
+ <option value="<?php echo $pt ?>" <?php selected($pt,$selected_post_type); ?>><?php echo $pt?></option>
191
+ <?php
192
+ endforeach;
193
+ ?>
194
+
195
+ </select>
196
+ </p>
197
+
198
+ <p class="rop-exclude-filter">
199
+ <label>Category</label>
200
+ <select name="rop_select_category" id="rop_select_category">
201
+ <option value="none"> All </option>
202
+ <?php
203
+ foreach($available_taxonomy as $at):
204
+ ?>
205
+ <optgroup label="<?php echo $at['label']; ?>" data-post-type="<?php echo implode(',',$at['post_types']);?>">
206
+ <?php
207
+ foreach($at['taxs'] as $id=>$tax): ?>
208
+ <option value="<?php echo $id ?>" <?php selected($id,$selected_tax); ?>><?php echo $tax; ?></option>
209
+ <?php
210
+ endforeach;
211
+ ?>
212
+ </optgroup>
213
+
214
+ <?php
215
+ endforeach;
216
+ ?>
217
+
218
+ </select>
219
+ </p>
220
+ <?php
221
+
222
+ print('<p class="search-box" style="margin:0px">
223
+ <input type="text" id="post-search-input" name="s" value="'.$exclude_search.'" />
224
+ <input type="hidden" id="post-search-page" name="paged" value="'.$paged.'" />
225
+ <input type="submit" value="Search Posts" name="search" class="button" />
226
+ <input type="submit" value="Exclude selected" name="exclude" class="button" />
227
+ </p>');
228
+ print('</div>');
229
+
230
+ $page_links = paginate_links(array(
231
+ 'base' => add_query_arg('paged', '%#%'),
232
+ 'format' => '',
233
+ 'prev_text' => __('&laquo;'),
234
+ 'next_text' => __('&raquo;'),
235
+ 'total' => ceil(count($posts) / $records_per_page),
236
+ 'current' => $paged
237
+ ));
238
+
239
+ if ($page_links) {
240
+
241
+ print('<div class="tablenav-pages">');
242
+ $page_links_text = sprintf('<span class="displaying-num">' . __('Displaying %s&#8211;%s of %s') . '</span>%s',
243
+ number_format_i18n(( $paged - 1 ) * $records_per_page + 1),
244
+ number_format_i18n(min($paged * $records_per_page, count($posts))),
245
+ number_format_i18n(count($posts)),
246
+ $page_links
247
+ );
248
+ echo $page_links_text;
249
+ print('</div>');
250
+ }
251
+ print('</div>');//tablenav div
252
+ if (count($posts) > 0) {
253
+ print(' <div class="wrap">
254
+ <table class="widefat fixed">
255
+ <thead>
256
+ <tr>
257
+ <th class="manage-column column-cb check-column"><input name="headchkbx" id="rop-header-check" onchange="javascript:checkedAll();" type="checkbox" value="checkall"/></th>
258
+ <th>No.</th>
259
+ <th>Id</th>
260
+ <th>Post Title</th>
261
+ <th>Author</th>
262
+ <th>Post Date</th>
263
+ </tr>
264
+ </thead>
265
+ <tbody>
266
+ ');
267
+
268
+
269
+
270
+ for ($i = $from; $i < $to; $i++) {
271
+
272
+ $displayed_posts[] = $posts[$i]->ID;
273
+ if (in_array($posts[$i]->ID, $excluded_ids)) {
274
+ $checked = "Checked";
275
+ $bgcolor="#FFCC99";
276
+ } else {
277
+ $checked = "";
278
+ $bgcolor="#FFF";
279
+ }
280
+ $displayed_posts[] = $posts[$i]->ID;
281
+ print('
282
+
283
+ <tr style="background-color:'.$bgcolor.';">
284
+ <th class="check-column">
285
+ <input type="checkbox" name="rop_post_id[]" class="rop_post_id" id="del' . $posts[$i]->ID . '" value="' . $posts[$i]->ID . '" ' . $checked . '/>
286
+ </th>
287
+ <td>
288
+ ' . ($i + 1) . '
289
+ </td>
290
+ <td>
291
+ ' . $posts[$i]->ID . '
292
+ </td>
293
+ <td>
294
+ <a href=' . get_permalink($posts[$i]->ID) . ' target="_blank">' . $posts[$i]->post_title . '</a>
295
+ </td>
296
+ <td>
297
+ ' . $posts[$i]->user_nicename . '
298
+ </td>
299
+ <td>
300
+ ' . $posts[$i]->post_date . '
301
+ </td>
302
+ </tr>
303
+
304
+ ');
305
+ }
306
+ print('
307
+ </tbody>
308
+ </table>
309
+ </div>
310
+ ');
311
+ ?>
312
+ <input type="hidden" name="rop_show_posts" value="<?php echo implode(',',$displayed_posts); ?>"/>
313
+ <?php
314
+
315
+ if ($page_links) {
316
+
317
+ print('<div class="tablenav"> <div class="tablenav-pages">');
318
+ $page_links_text = sprintf('<span class="displaying-num">' . __('Displaying %s&#8211;%s of %s') . '</span>%s',
319
+ number_format_i18n(( $paged - 1 ) * $records_per_page + 1),
320
+ number_format_i18n(min($paged * $records_per_page, count($posts))),
321
+ number_format_i18n(count($posts)),
322
+ $page_links
323
+ );
324
+ echo $page_links_text;
325
+ print('</div></div> ');
326
+ }
327
+
328
+
329
+
330
+
331
+ }
332
+ else
333
+ {
334
+ print('<div class="wrap">
335
+ <div id="message" style="margin-top:30px" class="updated fade">
336
+ <p>' . __('No Posts found. Review your search or filter criteria/term.', 'TweetOldPost') . '</p>
337
+ </div></div>');
338
+ }
339
+ print('</form></section>');
340
+ } else {
341
+ print('
342
+ <div id="message" class="updated fade">
343
+ <p>' . __('You do not have enough permission to set the option. Please contact your admin.', 'TweetOldPost') . '</p>
344
+ </div>');
345
+ }
346
+ }
347
  ?>
inc/oAuth/OAuth.php CHANGED
@@ -1,930 +1,937 @@
1
- <?php
2
- // vim: foldmethod=marker
3
-
4
- /* Generic exception class
5
- */
6
- if (!class_exists('RopOAuthException')) {
7
- class RopOAuthException extends Exception {
8
- // pass
9
- }
10
- }
11
- if (!class_exists('RopOAuthConsumer')) {
12
- class RopOAuthConsumer {
13
- public $key;
14
- public $secret;
15
-
16
- function __construct($key, $secret, $callback_url=NULL) {
17
- $this->key = $key;
18
- $this->secret = $secret;
19
- $this->callback_url = $callback_url;
20
- }
21
-
22
- function __toString() {
23
- return "RopOAuthConsumer[key=$this->key,secret=$this->secret]";
24
- }
25
- }
26
- }
27
- if (!class_exists('RopOAuthToken')) {
28
- class RopOAuthToken {
29
- // access tokens and request tokens
30
- public $key;
31
- public $secret;
32
-
33
- /**
34
- * key = the token
35
- * secret = the token secret
36
- */
37
- function __construct($key, $secret) {
38
- $this->key = $key;
39
- $this->secret = $secret;
40
- }
41
-
42
- /**
43
- * generates the basic string serialization of a token that a server
44
- * would respond to request_token and access_token calls with
45
- */
46
- function to_string() {
47
- return "oauth_token=" .
48
- RopOAuthUtil::urlencode_rfc3986($this->key) .
49
- "&oauth_token_secret=" .
50
- RopOAuthUtil::urlencode_rfc3986($this->secret);
51
- }
52
-
53
- function __toString() {
54
- return $this->to_string();
55
- }
56
- }
57
- }
58
- /**
59
- * A class for implementing a Signature Method
60
- * See section 9 ("Signing Requests") in the spec
61
- */
62
- if (!class_exists('RopOAuthSignatureMethod')) {
63
- abstract class RopOAuthSignatureMethod {
64
- /**
65
- * Needs to return the name of the Signature Method (ie HMAC-SHA1)
66
- * @return string
67
- */
68
- abstract public function get_name();
69
-
70
- /**
71
- * Build up the signature
72
- * NOTE: The output of this function MUST NOT be urlencoded.
73
- * the encoding is handled in RopOAuthRequest when the final
74
- * request is serialized
75
- * @param RopOAuthRequest $request
76
- * @param RopOAuthConsumer $consumer
77
- * @param RopOAuthToken $token
78
- * @return string
79
- */
80
- abstract public function build_signature($request, $consumer, $token);
81
-
82
- /**
83
- * Verifies that a given signature is correct
84
- * @param RopOAuthRequest $request
85
- * @param RopOAuthConsumer $consumer
86
- * @param RopOAuthToken $token
87
- * @param string $signature
88
- * @return bool
89
- */
90
- public function check_signature($request, $consumer, $token, $signature) {
91
- $built = $this->build_signature($request, $consumer, $token);
92
- return $built == $signature;
93
- }
94
- }
95
- }
96
- /**
97
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
98
- * where the Signature Base String is the text and the key is the concatenated values (each first
99
- * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
100
- * character (ASCII code 38) even if empty.
101
- * - Chapter 9.2 ("HMAC-SHA1")
102
- */
103
- if (!class_exists('RopOAuthSignatureMethod_HMAC_SHA1')) {
104
- class RopOAuthSignatureMethod_HMAC_SHA1 extends RopOAuthSignatureMethod {
105
- function get_name() {
106
- return "HMAC-SHA1";
107
- }
108
-
109
-
110
- public function build_signature($request, $consumer, $token) {
111
- $base_string = $request->get_signature_base_string();
112
- $request->base_string = $base_string;
113
-
114
- $key_parts = array(
115
- $consumer->secret,
116
- ($token) ? $token->secret : ""
117
- );
118
-
119
- $key_parts = RopOAuthUtil::urlencode_rfc3986($key_parts);
120
- $key = implode('&', $key_parts);
121
-
122
- return base64_encode(hash_hmac('sha1', $base_string, $key, true));
123
- }
124
- }
125
- }
126
- /**
127
- * The PLAINTEXT method does not provide any security protection and SHOULD only be used
128
- * over a secure channel such as HTTPS. It does not use the Signature Base String.
129
- * - Chapter 9.4 ("PLAINTEXT")
130
- */
131
- if (!class_exists('RopOAuthSignatureMethod_PLAINTEXT')) {
132
- class RopOAuthSignatureMethod_PLAINTEXT extends RopOAuthSignatureMethod {
133
- public function get_name() {
134
- return "PLAINTEXT";
135
- }
136
-
137
- /**
138
- * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
139
- * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
140
- * empty. The result MUST be encoded again.
141
- * - Chapter 9.4.1 ("Generating Signatures")
142
- *
143
- * Please note that the second encoding MUST NOT happen in the SignatureMethod, as
144
- * RopOAuthRequest handles this!
145
- */
146
- public function build_signature($request, $consumer, $token) {
147
- $key_parts = array(
148
- $consumer->secret,
149
- ($token) ? $token->secret : ""
150
- );
151
-
152
- $key_parts = RopOAuthUtil::urlencode_rfc3986($key_parts);
153
- $key = implode('&', $key_parts);
154
- $request->base_string = $key;
155
-
156
- return $key;
157
- }
158
- }
159
- }
160
-
161
- /**
162
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
163
- * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
164
- * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
165
- * verified way to the Service Provider, in a manner which is beyond the scope of this
166
- * specification.
167
- * - Chapter 9.3 ("RSA-SHA1")
168
- */
169
- if (!class_exists('RopOAuthSignatureMethod_RSA_SHA1')) {
170
- abstract class RopOAuthSignatureMethod_RSA_SHA1 extends RopOAuthSignatureMethod {
171
- public function get_name() {
172
- return "RSA-SHA1";
173
- }
174
-
175
- // Up to the SP to implement this lookup of keys. Possible ideas are:
176
- // (1) do a lookup in a table of trusted certs keyed off of consumer
177
- // (2) fetch via http using a url provided by the requester
178
- // (3) some sort of specific discovery code based on request
179
- //
180
- // Either way should return a string representation of the certificate
181
- protected abstract function fetch_public_cert(&$request);
182
-
183
- // Up to the SP to implement this lookup of keys. Possible ideas are:
184
- // (1) do a lookup in a table of trusted certs keyed off of consumer
185
- //
186
- // Either way should return a string representation of the certificate
187
- protected abstract function fetch_private_cert(&$request);
188
-
189
- public function build_signature($request, $consumer, $token) {
190
- $base_string = $request->get_signature_base_string();
191
- $request->base_string = $base_string;
192
-
193
- // Fetch the private key cert based on the request
194
- $cert = $this->fetch_private_cert($request);
195
-
196
- // Pull the private key ID from the certificate
197
- $privatekeyid = openssl_get_privatekey($cert);
198
-
199
- // Sign using the key
200
- $ok = openssl_sign($base_string, $signature, $privatekeyid);
201
-
202
- // Release the key resource
203
- openssl_free_key($privatekeyid);
204
-
205
- return base64_encode($signature);
206
- }
207
-
208
- public function check_signature($request, $consumer, $token, $signature) {
209
- $decoded_sig = base64_decode($signature);
210
-
211
- $base_string = $request->get_signature_base_string();
212
-
213
- // Fetch the public key cert based on the request
214
- $cert = $this->fetch_public_cert($request);
215
-
216
- // Pull the public key ID from the certificate
217
- $publickeyid = openssl_get_publickey($cert);
218
-
219
- // Check the computed signature against the one passed in the query
220
- $ok = openssl_verify($base_string, $decoded_sig, $publickeyid);
221
-
222
- // Release the key resource
223
- openssl_free_key($publickeyid);
224
-
225
- return $ok == 1;
226
- }
227
- }
228
- }
229
- if (!class_exists('RopOAuthRequest')) {
230
- class RopOAuthRequest {
231
- private $parameters;
232
- private $http_method;
233
- private $http_url;
234
- // for debug purposes
235
- public $base_string;
236
- public static $version = '1.0';
237
- public static $POST_INPUT = 'php://input';
238
-
239
- function __construct($http_method, $http_url, $parameters=NULL) {
240
- @$parameters or $parameters = array();
241
- $parameters = array_merge( RopOAuthUtil::parse_parameters(parse_url($http_url, PHP_URL_QUERY)), $parameters);
242
- $this->parameters = $parameters;
243
- $this->http_method = $http_method;
244
- $this->http_url = $http_url;
245
- }
246
-
247
-
248
- /**
249
- * attempt to build up a request from what was passed to the server
250
- */
251
- public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) {
252
- $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on")
253
- ? 'http'
254
- : 'https';
255
- @$http_url or $http_url = $scheme .
256
- '://' . $_SERVER['HTTP_HOST'] .
257
- ':' .
258
- $_SERVER['SERVER_PORT'] .
259
- $_SERVER['REQUEST_URI'];
260
- @$http_method or $http_method = $_SERVER['REQUEST_METHOD'];
261
-
262
- // We weren't handed any parameters, so let's find the ones relevant to
263
- // this request.
264
- // If you run XML-RPC or similar you should use this to provide your own
265
- // parsed parameter-list
266
- if (!$parameters) {
267
- // Find request headers
268
- $request_headers = RopOAuthUtil::get_headers();
269
-
270
- // Parse the query-string to find GET parameters
271
- $parameters = RopOAuthUtil::parse_parameters($_SERVER['QUERY_STRING']);
272
-
273
- // It's a POST request of the proper content-type, so parse POST
274
- // parameters and add those overriding any duplicates from GET
275
- if ($http_method == "POST"
276
- && @strstr($request_headers["Content-Type"],
277
- "application/x-www-form-urlencoded")
278
- ) {
279
- $post_data = RopOAuthUtil::parse_parameters(
280
- file_get_contents(self::$POST_INPUT)
281
- );
282
- $parameters = array_merge($parameters, $post_data);
283
- }
284
-
285
- // We have a Authorization-header with OAuth data. Parse the header
286
- // and add those overriding any duplicates from GET or POST
287
- if (@substr($request_headers['Authorization'], 0, 6) == "OAuth ") {
288
- $header_parameters = RopOAuthUtil::split_header(
289
- $request_headers['Authorization']
290
- );
291
- $parameters = array_merge($parameters, $header_parameters);
292
- }
293
-
294
- }
295
-
296
- return new RopOAuthRequest($http_method, $http_url, $parameters);
297
- }
298
-
299
- /**
300
- * pretty much a helper function to set up the request
301
- */
302
- public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) {
303
- @$parameters or $parameters = array();
304
- $defaults = array("oauth_version" => RopOAuthRequest::$version,
305
- "oauth_nonce" => RopOAuthRequest::generate_nonce(),
306
- "oauth_timestamp" => RopOAuthRequest::generate_timestamp(),
307
- "oauth_consumer_key" => $consumer->key);
308
- if ($token)
309
- $defaults['oauth_token'] = $token->key;
310
-
311
- $parameters = array_merge($defaults, $parameters);
312
-
313
- return new RopOAuthRequest($http_method, $http_url, $parameters);
314
- }
315
-
316
- public function set_parameter($name, $value, $allow_duplicates = true) {
317
- if ($allow_duplicates && isset($this->parameters[$name])) {
318
- // We have already added parameter(s) with this name, so add to the list
319
- if (is_scalar($this->parameters[$name])) {
320
- // This is the first duplicate, so transform scalar (string)
321
- // into an array so we can add the duplicates
322
- $this->parameters[$name] = array($this->parameters[$name]);
323
- }
324
-
325
- $this->parameters[$name][] = $value;
326
- } else {
327
- $this->parameters[$name] = $value;
328
- }
329
- }
330
- public function set_parameters($parameters) {
331
- // keep the oauth parameters
332
- $oauth_parameters = Array();
333
- foreach ($this->parameters as $k=>&$v)
334
- if (substr($k, 0, 6) == "oauth_")
335
- $oauth_parameters[$k] = $v;
336
- $this->parameters = array_merge($parameters, $oauth_parameters);
337
- }
338
- public function get_parameter($name) {
339
- return isset($this->parameters[$name]) ? $this->parameters[$name] : null;
340
- }
341
-
342
- public function get_parameters() {
343
- return $this->parameters;
344
- }
345
-
346
- public function unset_parameter($name) {
347
- unset($this->parameters[$name]);
348
- }
349
-
350
- /**
351
- * The request parameters, sorted and concatenated into a normalized string.
352
- * @return string
353
- */
354
- public function get_signable_parameters() {
355
- // Grab all parameters
356
- $params = $this->parameters;
357
-
358
- // Remove oauth_signature if present
359
- // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.")
360
- if (isset($params['oauth_signature'])) {
361
- unset($params['oauth_signature']);
362
- }
363
-
364
- return RopOAuthUtil::build_http_query($params);
365
- }
366
-
367
- /**
368
- * Returns the base string of this request
369
- *
370
- * The base string defined as the method, the url
371
- * and the parameters (normalized), each urlencoded
372
- * and the concated with &.
373
- */
374
- public function get_signature_base_string() {
375
- $parts = array(
376
- $this->get_normalized_http_method(),
377
- $this->get_normalized_http_url(),
378
- $this->get_signable_parameters()
379
- );
380
-
381
- $parts = RopOAuthUtil::urlencode_rfc3986($parts);
382
-
383
- return implode('&', $parts);
384
- }
385
-
386
- /**
387
- * just uppercases the http method
388
- */
389
- public function get_normalized_http_method() {
390
- return strtoupper($this->http_method);
391
- }
392
-
393
- /**
394
- * parses the url and rebuilds it to be
395
- * scheme://host/path
396
- */
397
- public function get_normalized_http_url() {
398
- $parts = parse_url($this->http_url);
399
-
400
- $port = @$parts['port'];
401
- $scheme = $parts['scheme'];
402
- $host = $parts['host'];
403
- $path = @$parts['path'];
404
-
405
- $port or $port = ($scheme == 'https') ? '443' : '80';
406
-
407
- if (($scheme == 'https' && $port != '443')
408
- || ($scheme == 'http' && $port != '80')) {
409
- $host = "$host:$port";
410
- }
411
- return "$scheme://$host$path";
412
- }
413
-
414
- /**
415
- * builds a url usable for a GET request
416
- */
417
- public function to_url() {
418
- $post_data = $this->to_postdata();
419
- $out = $this->get_normalized_http_url();
420
- if ($post_data) {
421
- $out .= '?'.$post_data;
422
- }
423
- return $out;
424
- }
425
-
426
- /**
427
- * builds the data one would send in a POST request
428
- */
429
- public function to_postdata() {
430
- return RopOAuthUtil::build_http_query($this->parameters);
431
- }
432
-
433
- /**
434
- * builds the Authorization: header
435
- */
436
- public function to_header($realm=null) {
437
- $first = true;
438
- if($realm) {
439
- $out = 'Authorization: OAuth realm="' . RopOAuthUtil::urlencode_rfc3986($realm) . '"';
440
- $first = false;
441
- } else
442
- $out = 'Authorization: OAuth';
443
-
444
- $total = array();
445
- foreach ($this->parameters as $k => $v) {
446
- if (substr($k, 0, 5) != "oauth") continue;
447
- if (is_array($v)) {
448
- throw new RopOAuthException('Arrays not supported in headers');
449
- }
450
- $out .= ($first) ? ' ' : ',';
451
- $out .= RopOAuthUtil::urlencode_rfc3986($k) .
452
- '="' .
453
- RopOAuthUtil::urlencode_rfc3986($v) .
454
- '"';
455
- $first = false;
456
- }
457
- return $out;
458
- }
459
-
460
- public function __toString() {
461
- return $this->to_url();
462
- }
463
-
464
-
465
- public function sign_request($signature_method, $consumer, $token) {
466
- $this->set_parameter(
467
- "oauth_signature_method",
468
- $signature_method->get_name(),
469
- false
470
- );
471
- $signature = $this->build_signature($signature_method, $consumer, $token);
472
- $this->set_parameter("oauth_signature", $signature, false);
473
- }
474
-
475
- public function build_signature($signature_method, $consumer, $token) {
476
- $signature = $signature_method->build_signature($this, $consumer, $token);
477
- return $signature;
478
- }
479
-
480
- /**
481
- * util function: current timestamp
482
- */
483
- private static function generate_timestamp() {
484
-
485
- $ci = curl_init();
486
-
487
- curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
488
- curl_setopt($ci, CURLOPT_HEADER, TRUE);
489
-
490
- curl_setopt($ci, CURLOPT_URL, "http://api.twitter.com/1.1/");
491
-
492
- $response = curl_exec($ci);
493
- $header_size = curl_getinfo($ci, CURLINFO_HEADER_SIZE);
494
- $header = substr($response, 0, $header_size);
495
- $headers = self::get_headers_from_curl_response($header);
496
- return strtotime($headers[0]['date']);
497
- }
498
- static function get_headers_from_curl_response($headerContent)
499
- {
500
-
501
- $headers = array();
502
-
503
- // Split the string on every "double" new line.
504
- $arrRequests = explode("\r\n\r\n", $headerContent);
505
-
506
- // Loop of response headers. The "count() -1" is to
507
- //avoid an empty row for the extra line break before the body of the response.
508
- for ($index = 0; $index < count($arrRequests) -1; $index++) {
509
-
510
- foreach (explode("\r\n", $arrRequests[$index]) as $i => $line)
511
- {
512
- if ($i === 0)
513
- $headers[$index]['http_code'] = $line;
514
- else
515
- {
516
- list ($key, $value) = explode(': ', $line);
517
- $headers[$index][$key] = $value;
518
- }
519
- }
520
- }
521
-
522
- return $headers;
523
- }
524
- /**
525
- * util function: current nonce
526
- */
527
- private static function generate_nonce() {
528
- $mt = microtime();
529
- $rand = mt_rand();
530
-
531
- return md5($mt . $rand); // md5s look nicer than numbers
532
- }
533
- }
534
- }
535
- if (!class_exists('RopOAuthServer')) {
536
- class RopOAuthServer {
537
- protected $timestamp_threshold = 300; // in seconds, five minutes
538
- protected $version = '1.0'; // hi blaine
539
- protected $signature_methods = array();
540
-
541
- protected $data_store;
542
-
543
- function __construct($data_store) {
544
- $this->data_store = $data_store;
545
- }
546
-
547
- public function add_signature_method($signature_method) {
548
- $this->signature_methods[$signature_method->get_name()] =
549
- $signature_method;
550
- }
551
-
552
- // high level functions
553
-
554
- /**
555
- * process a request_token request
556
- * returns the request token on success
557
- */
558
- public function fetch_request_token(&$request) {
559
- $this->get_version($request);
560
-
561
- $consumer = $this->get_consumer($request);
562
-
563
- // no token required for the initial token request
564
- $token = NULL;
565
-
566
- $this->check_signature($request, $consumer, $token);
567
-
568
- // Rev A change
569
- $callback = $request->get_parameter('oauth_callback');
570
- $new_token = $this->data_store->new_request_token($consumer, $callback);
571
-
572
- return $new_token;
573
- }
574
-
575
- /**
576
- * process an access_token request
577
- * returns the access token on success
578
- */
579
- public function fetch_access_token(&$request) {
580
- $this->get_version($request);
581
-
582
- $consumer = $this->get_consumer($request);
583
-
584
- // requires authorized request token
585
- $token = $this->get_token($request, $consumer, "request");
586
-
587
- $this->check_signature($request, $consumer, $token);
588
-
589
- // Rev A change
590
- $verifier = $request->get_parameter('oauth_verifier');
591
- $new_token = $this->data_store->new_access_token($token, $consumer, $verifier);
592
-
593
- return $new_token;
594
- }
595
-
596
- /**
597
- * verify an api call, checks all the parameters
598
- */
599
- public function verify_request(&$request) {
600
- $this->get_version($request);
601
- $consumer = $this->get_consumer($request);
602
- $token = $this->get_token($request, $consumer, "access");
603
- $this->check_signature($request, $consumer, $token);
604
- return array($consumer, $token);
605
- }
606
-
607
- // Internals from here
608
- /**
609
- * version 1
610
- */
611
- private function get_version(&$request) {
612
- $version = $request->get_parameter("oauth_version");
613
- if (!$version) {
614
- // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
615
- // Chapter 7.0 ("Accessing Protected Ressources")
616
- $version = '1.0';
617
- }
618
- if ($version !== $this->version) {
619
- throw new RopOAuthException("OAuth version '$version' not supported");
620
- }
621
- return $version;
622
- }
623
-
624
- /**
625
- * figure out the signature with some defaults
626
- */
627
- private function get_signature_method(&$request) {
628
- $signature_method =
629
- @$request->get_parameter("oauth_signature_method");
630
-
631
- if (!$signature_method) {
632
- // According to chapter 7 ("Accessing Protected Ressources") the signature-method
633
- // parameter is required, and we can't just fallback to PLAINTEXT
634
- throw new RopOAuthException('No signature method parameter. This parameter is required');
635
- }
636
-
637
- if (!in_array($signature_method,
638
- array_keys($this->signature_methods))) {
639
- throw new RopOAuthException(
640
- "Signature method '$signature_method' not supported " .
641
- "try one of the following: " .
642
- implode(", ", array_keys($this->signature_methods))
643
- );
644
- }
645
- return $this->signature_methods[$signature_method];
646
- }
647
-
648
- /**
649
- * try to find the consumer for the provided request's consumer key
650
- */
651
- private function get_consumer(&$request) {
652
- $consumer_key = @$request->get_parameter("oauth_consumer_key");
653
- if (!$consumer_key) {
654
- throw new RopOAuthException("Invalid consumer key");
655
- }
656
-
657
- $consumer = $this->data_store->lookup_consumer($consumer_key);
658
- if (!$consumer) {
659
- throw new RopOAuthException("Invalid consumer");
660
- }
661
-
662
- return $consumer;
663
- }
664
-
665
- /**
666
- * try to find the token for the provided request's token key
667
- */
668
- private function get_token(&$request, $consumer, $token_type="access") {
669
- $token_field = @$request->get_parameter('oauth_token');
670
- $token = $this->data_store->lookup_token(
671
- $consumer, $token_type, $token_field
672
- );
673
- if (!$token) {
674
- throw new RopOAuthException("Invalid $token_type token: $token_field");
675
- }
676
- return $token;
677
- }
678
-
679
- /**
680
- * all-in-one function to check the signature on a request
681
- * should guess the signature method appropriately
682
- */
683
- private function check_signature(&$request, $consumer, $token) {
684
- // this should probably be in a different method
685
- $timestamp = @$request->get_parameter('oauth_timestamp');
686
- $nonce = @$request->get_parameter('oauth_nonce');
687
-
688
- $this->check_timestamp($timestamp);
689
- $this->check_nonce($consumer, $token, $nonce, $timestamp);
690
-
691
- $signature_method = $this->get_signature_method($request);
692
-
693
- $signature = $request->get_parameter('oauth_signature');
694
- $valid_sig = $signature_method->check_signature(
695
- $request,
696
- $consumer,
697
- $token,
698
- $signature
699
- );
700
-
701
- if (!$valid_sig) {
702
- throw new RopOAuthException("Invalid signature");
703
- }
704
- }
705
-
706
- /**
707
- * check that the timestamp is new enough
708
- */
709
- private function check_timestamp($timestamp) {
710
- if( ! $timestamp )
711
- throw new RopOAuthException(
712
- 'Missing timestamp parameter. The parameter is required'
713
- );
714
-
715
- // verify that timestamp is recentish
716
- $now = time();
717
- if (abs($now - $timestamp) > $this->timestamp_threshold) {
718
- throw new RopOAuthException(
719
- "Expired timestamp, yours $timestamp, ours $now"
720
- );
721
- }
722
- }
723
-
724
- /**
725
- * check that the nonce is not repeated
726
- */
727
- private function check_nonce($consumer, $token, $nonce, $timestamp) {
728
- if( ! $nonce )
729
- throw new RopOAuthException(
730
- 'Missing nonce parameter. The parameter is required'
731
- );
732
-
733
- // verify that the nonce is uniqueish
734
- $found = $this->data_store->lookup_nonce(
735
- $consumer,
736
- $token,
737
- $nonce,
738
- $timestamp
739
- );
740
- if ($found) {
741
- throw new RopOAuthException("Nonce already used: $nonce");
742
- }
743
- }
744
-
745
- }
746
- }
747
- if (!class_exists('RopOAuthDataStore')) {
748
- class RopOAuthDataStore {
749
- function lookup_consumer($consumer_key) {
750
- // implement me
751
- }
752
-
753
- function lookup_token($consumer, $token_type, $token) {
754
- // implement me
755
- }
756
-
757
- function lookup_nonce($consumer, $token, $nonce, $timestamp) {
758
- // implement me
759
- }
760
-
761
- function new_request_token($consumer, $callback = null) {
762
- // return a new token attached to this consumer
763
- }
764
-
765
- function new_access_token($token, $consumer, $verifier = null) {
766
- // return a new access token attached to this consumer
767
- // for the user associated with this token if the request token
768
- // is authorized
769
- // should also invalidate the request token
770
- }
771
-
772
- }
773
- }
774
- if (!class_exists('RopOAuthUtil')) {
775
- class RopOAuthUtil {
776
- public static function urlencode_rfc3986($input) {
777
- if (is_array($input)) {
778
- return array_map(array('RopOAuthUtil', 'urlencode_rfc3986'), $input);
779
- } else if (is_scalar($input)) {
780
- return str_replace(
781
- '+',
782
- ' ',
783
- str_replace('%7E', '~', rawurlencode($input))
784
- );
785
- } else {
786
- return '';
787
- }
788
- }
789
-
790
-
791
- // This decode function isn't taking into consideration the above
792
- // modifications to the encoding process. However, this method doesn't
793
- // seem to be used anywhere so leaving it as is.
794
- public static function urldecode_rfc3986($string) {
795
- return urldecode($string);
796
- }
797
-
798
- // Utility function for turning the Authorization: header into
799
- // parameters, has to do some unescaping
800
- // Can filter out any non-oauth parameters if needed (default behaviour)
801
- public static function split_header($header, $only_allow_oauth_parameters = true) {
802
- $pattern = '/(([-_a-z]*)=("([^"]*)"|([^,]*)),?)/';
803
- $offset = 0;
804
- $params = array();
805
- while (preg_match($pattern, $header, $matches, PREG_OFFSET_CAPTURE, $offset) > 0) {
806
- $match = $matches[0];
807
- $header_name = $matches[2][0];
808
- $header_content = (isset($matches[5])) ? $matches[5][0] : $matches[4][0];
809
- if (preg_match('/^oauth_/', $header_name) || !$only_allow_oauth_parameters) {
810
- $params[$header_name] = RopOAuthUtil::urldecode_rfc3986($header_content);
811
- }
812
- $offset = $match[1] + strlen($match[0]);
813
- }
814
-
815
- if (isset($params['realm'])) {
816
- unset($params['realm']);
817
- }
818
-
819
- return $params;
820
- }
821
-
822
- // helper to try to sort out headers for people who aren't running apache
823
- public static function get_headers() {
824
- if (function_exists('apache_request_headers')) {
825
- // we need this to get the actual Authorization: header
826
- // because apache tends to tell us it doesn't exist
827
- $headers = apache_request_headers();
828
-
829
- // sanitize the output of apache_request_headers because
830
- // we always want the keys to be Cased-Like-This and arh()
831
- // returns the headers in the same case as they are in the
832
- // request
833
- $out = array();
834
- foreach( $headers AS $key => $value ) {
835
- $key = str_replace(
836
- " ",
837
- "-",
838
- ucwords(strtolower(str_replace("-", " ", $key)))
839
- );
840
- $out[$key] = $value;
841
- }
842
- } else {
843
- // otherwise we don't have apache and are just going to have to hope
844
- // that $_SERVER actually contains what we need
845
- $out = array();
846
- if( isset($_SERVER['CONTENT_TYPE']) )
847
- $out['Content-Type'] = $_SERVER['CONTENT_TYPE'];
848
- if( isset($_ENV['CONTENT_TYPE']) )
849
- $out['Content-Type'] = $_ENV['CONTENT_TYPE'];
850
-
851
- foreach ($_SERVER as $key => $value) {
852
- if (substr($key, 0, 5) == "HTTP_") {
853
- // this is chaos, basically it is just there to capitalize the first
854
- // letter of every word that is not an initial HTTP and strip HTTP
855
- // code from przemek
856
- $key = str_replace(
857
- " ",
858
- "-",
859
- ucwords(strtolower(str_replace("_", " ", substr($key, 5))))
860
- );
861
- $out[$key] = $value;
862
- }
863
- }
864
- }
865
- return $out;
866
- }
867
-
868
- // This function takes a input like a=b&a=c&d=e and returns the parsed
869
- // parameters like this
870
- // array('a' => array('b','c'), 'd' => 'e')
871
- public static function parse_parameters( $input ) {
872
- if (!isset($input) || !$input) return array();
873
-
874
- $pairs = explode('&', $input);
875
-
876
- $parsed_parameters = array();
877
- foreach ($pairs as $pair) {
878
- $split = explode('=', $pair, 2);
879
- $parameter = RopOAuthUtil::urldecode_rfc3986($split[0]);
880
- $value = isset($split[1]) ? RopOAuthUtil::urldecode_rfc3986($split[1]) : '';
881
-
882
- if (isset($parsed_parameters[$parameter])) {
883
- // We have already recieved parameter(s) with this name, so add to the list
884
- // of parameters with this name
885
-
886
- if (is_scalar($parsed_parameters[$parameter])) {
887
- // This is the first duplicate, so transform scalar (string) into an array
888
- // so we can add the duplicates
889
- $parsed_parameters[$parameter] = array($parsed_parameters[$parameter]);
890
- }
891
-
892
- $parsed_parameters[$parameter][] = $value;
893
- } else {
894
- $parsed_parameters[$parameter] = $value;
895
- }
896
- }
897
- return $parsed_parameters;
898
- }
899
-
900
- public static function build_http_query($params) {
901
- if (!$params) return '';
902
-
903
- // Urlencode both keys and values
904
- $keys = RopOAuthUtil::urlencode_rfc3986(array_keys($params));
905
- $values = RopOAuthUtil::urlencode_rfc3986(array_values($params));
906
- $params = array_combine($keys, $values);
907
-
908
- // Parameters are sorted by name, using lexicographical byte value ordering.
909
- // Ref: Spec: 9.1.1 (1)
910
- uksort($params, 'strcmp');
911
-
912
- $pairs = array();
913
- foreach ($params as $parameter => $value) {
914
- if (is_array($value)) {
915
- // If two or more parameters share the same name, they are sorted by their value
916
- // Ref: Spec: 9.1.1 (1)
917
- natsort($value);
918
- foreach ($value as $duplicate_value) {
919
- $pairs[] = $parameter . '=' . $duplicate_value;
920
- }
921
- } else {
922
- $pairs[] = $parameter . '=' . $value;
923
- }
924
- }
925
- // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61)
926
- // Each name-value pair is separated by an '&' character (ASCII code 38)
927
- return implode('&', $pairs);
928
- }
929
- }
930
- }
 
 
 
 
 
 
 
1
+ <?php
2
+ // vim: foldmethod=marker
3
+
4
+ /* Generic exception class
5
+ */
6
+ if (!class_exists('RopOAuthException')) {
7
+ class RopOAuthException extends Exception {
8
+ // pass
9
+ }
10
+ }
11
+ if (!class_exists('RopOAuthConsumer')) {
12
+ class RopOAuthConsumer {
13
+ public $key;
14
+ public $secret;
15
+
16
+ function __construct($key, $secret, $callback_url=NULL) {
17
+ $this->key = $key;
18
+ $this->secret = $secret;
19
+ $this->callback_url = $callback_url;
20
+ }
21
+
22
+ function __toString() {
23
+ return "RopOAuthConsumer[key=$this->key,secret=$this->secret]";
24
+ }
25
+ }
26
+ }
27
+ if (!class_exists('RopOAuthToken')) {
28
+ class RopOAuthToken {
29
+ // access tokens and request tokens
30
+ public $key;
31
+ public $secret;
32
+
33
+ /**
34
+ * key = the token
35
+ * secret = the token secret
36
+ */
37
+ function __construct($key, $secret) {
38
+ $this->key = $key;
39
+ $this->secret = $secret;
40
+ }
41
+
42
+ /**
43
+ * generates the basic string serialization of a token that a server
44
+ * would respond to request_token and access_token calls with
45
+ */
46
+ function to_string() {
47
+ return "oauth_token=" .
48
+ RopOAuthUtil::urlencode_rfc3986($this->key) .
49
+ "&oauth_token_secret=" .
50
+ RopOAuthUtil::urlencode_rfc3986($this->secret);
51
+ }
52
+
53
+ function __toString() {
54
+ return $this->to_string();
55
+ }
56
+ }
57
+ }
58
+ /**
59
+ * A class for implementing a Signature Method
60
+ * See section 9 ("Signing Requests") in the spec
61
+ */
62
+ if (!class_exists('RopOAuthSignatureMethod')) {
63
+ abstract class RopOAuthSignatureMethod {
64
+ /**
65
+ * Needs to return the name of the Signature Method (ie HMAC-SHA1)
66
+ * @return string
67
+ */
68
+ abstract public function get_name();
69
+
70
+ /**
71
+ * Build up the signature
72
+ * NOTE: The output of this function MUST NOT be urlencoded.
73
+ * the encoding is handled in RopOAuthRequest when the final
74
+ * request is serialized
75
+ * @param RopOAuthRequest $request
76
+ * @param RopOAuthConsumer $consumer
77
+ * @param RopOAuthToken $token
78
+ * @return string
79
+ */
80
+ abstract public function build_signature($request, $consumer, $token);
81
+
82
+ /**
83
+ * Verifies that a given signature is correct
84
+ * @param RopOAuthRequest $request
85
+ * @param RopOAuthConsumer $consumer
86
+ * @param RopOAuthToken $token
87
+ * @param string $signature
88
+ * @return bool
89
+ */
90
+ public function check_signature($request, $consumer, $token, $signature) {
91
+ $built = $this->build_signature($request, $consumer, $token);
92
+ return $built == $signature;
93
+ }
94
+ }
95
+ }
96
+ /**
97
+ * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
98
+ * where the Signature Base String is the text and the key is the concatenated values (each first
99
+ * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
100
+ * character (ASCII code 38) even if empty.
101
+ * - Chapter 9.2 ("HMAC-SHA1")
102
+ */
103
+ if (!class_exists('RopOAuthSignatureMethod_HMAC_SHA1')) {
104
+ class RopOAuthSignatureMethod_HMAC_SHA1 extends RopOAuthSignatureMethod {
105
+ function get_name() {
106
+ return "HMAC-SHA1";
107
+ }
108
+
109
+
110
+ public function build_signature($request, $consumer, $token) {
111
+ $base_string = $request->get_signature_base_string();
112
+ $request->base_string = $base_string;
113
+
114
+ $key_parts = array(
115
+ $consumer->secret,
116
+ ($token) ? $token->secret : ""
117
+ );
118
+
119
+ $key_parts = RopOAuthUtil::urlencode_rfc3986($key_parts);
120
+ $key = implode('&', $key_parts);
121
+
122
+ return base64_encode(hash_hmac('sha1', $base_string, $key, true));
123
+ }
124
+ }
125
+ }
126
+ /**
127
+ * The PLAINTEXT method does not provide any security protection and SHOULD only be used
128
+ * over a secure channel such as HTTPS. It does not use the Signature Base String.
129
+ * - Chapter 9.4 ("PLAINTEXT")
130
+ */
131
+ if (!class_exists('RopOAuthSignatureMethod_PLAINTEXT')) {
132
+ class RopOAuthSignatureMethod_PLAINTEXT extends RopOAuthSignatureMethod {
133
+ public function get_name() {
134
+ return "PLAINTEXT";
135
+ }
136
+
137
+ /**
138
+ * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
139
+ * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
140
+ * empty. The result MUST be encoded again.
141
+ * - Chapter 9.4.1 ("Generating Signatures")
142
+ *
143
+ * Please note that the second encoding MUST NOT happen in the SignatureMethod, as
144
+ * RopOAuthRequest handles this!
145
+ */
146
+ public function build_signature($request, $consumer, $token) {
147
+ $key_parts = array(
148
+ $consumer->secret,
149
+ ($token) ? $token->secret : ""
150
+ );
151
+
152
+ $key_parts = RopOAuthUtil::urlencode_rfc3986($key_parts);
153
+ $key = implode('&', $key_parts);
154
+ $request->base_string = $key;
155
+
156
+ return $key;
157
+ }
158
+ }
159
+ }
160
+
161
+ /**
162
+ * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
163
+ * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
164
+ * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
165
+ * verified way to the Service Provider, in a manner which is beyond the scope of this
166
+ * specification.
167
+ * - Chapter 9.3 ("RSA-SHA1")
168
+ */
169
+ if (!class_exists('RopOAuthSignatureMethod_RSA_SHA1')) {
170
+ abstract class RopOAuthSignatureMethod_RSA_SHA1 extends RopOAuthSignatureMethod {
171
+ public function get_name() {
172
+ return "RSA-SHA1";
173
+ }
174
+
175
+ // Up to the SP to implement this lookup of keys. Possible ideas are:
176
+ // (1) do a lookup in a table of trusted certs keyed off of consumer
177
+ // (2) fetch via http using a url provided by the requester
178
+ // (3) some sort of specific discovery code based on request
179
+ //
180
+ // Either way should return a string representation of the certificate
181
+ protected abstract function fetch_public_cert(&$request);
182
+
183
+ // Up to the SP to implement this lookup of keys. Possible ideas are:
184
+ // (1) do a lookup in a table of trusted certs keyed off of consumer
185
+ //
186
+ // Either way should return a string representation of the certificate
187
+ protected abstract function fetch_private_cert(&$request);
188
+
189
+ public function build_signature($request, $consumer, $token) {
190
+ $base_string = $request->get_signature_base_string();
191
+ $request->base_string = $base_string;
192
+
193
+ // Fetch the private key cert based on the request
194
+ $cert = $this->fetch_private_cert($request);
195
+
196
+ // Pull the private key ID from the certificate
197
+ $privatekeyid = openssl_get_privatekey($cert);
198
+
199
+ // Sign using the key
200
+ $ok = openssl_sign($base_string, $signature, $privatekeyid);
201
+
202
+ // Release the key resource
203
+ openssl_free_key($privatekeyid);
204
+
205
+ return base64_encode($signature);
206
+ }
207
+
208
+ public function check_signature($request, $consumer, $token, $signature) {
209
+ $decoded_sig = base64_decode($signature);
210
+
211
+ $base_string = $request->get_signature_base_string();
212
+
213
+ // Fetch the public key cert based on the request
214
+ $cert = $this->fetch_public_cert($request);
215
+
216
+ // Pull the public key ID from the certificate
217
+ $publickeyid = openssl_get_publickey($cert);
218
+
219
+ // Check the computed signature against the one passed in the query
220
+ $ok = openssl_verify($base_string, $decoded_sig, $publickeyid);
221
+
222
+ // Release the key resource
223
+ openssl_free_key($publickeyid);
224
+
225
+ return $ok == 1;
226
+ }
227
+ }
228
+ }
229
+ if (!class_exists('RopOAuthRequest')) {
230
+ class RopOAuthRequest {
231
+ private $parameters;
232
+ private $http_method;
233
+ private $http_url;
234
+ // for debug purposes
235
+ public $base_string;
236
+ public static $version = '1.0';
237
+ public static $POST_INPUT = 'php://input';
238
+
239
+ function __construct($http_method, $http_url, $parameters=NULL) {
240
+ @$parameters or $parameters = array();
241
+ $parameters = array_merge( RopOAuthUtil::parse_parameters(parse_url($http_url, PHP_URL_QUERY)), $parameters);
242
+ $this->parameters = $parameters;
243
+ $this->http_method = $http_method;
244
+ $this->http_url = $http_url;
245
+ }
246
+
247
+
248
+ /**
249
+ * attempt to build up a request from what was passed to the server
250
+ */
251
+ public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) {
252
+ $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on")
253
+ ? 'http'
254
+ : 'https';
255
+ @$http_url or $http_url = $scheme .
256
+ '://' . $_SERVER['HTTP_HOST'] .
257
+ ':' .
258
+ $_SERVER['SERVER_PORT'] .
259
+ $_SERVER['REQUEST_URI'];
260
+ @$http_method or $http_method = $_SERVER['REQUEST_METHOD'];
261
+
262
+ // We weren't handed any parameters, so let's find the ones relevant to
263
+ // this request.
264
+ // If you run XML-RPC or similar you should use this to provide your own
265
+ // parsed parameter-list
266
+ if (!$parameters) {
267
+ // Find request headers
268
+ $request_headers = RopOAuthUtil::get_headers();
269
+
270
+ // Parse the query-string to find GET parameters
271
+ $parameters = RopOAuthUtil::parse_parameters($_SERVER['QUERY_STRING']);
272
+
273
+ // It's a POST request of the proper content-type, so parse POST
274
+ // parameters and add those overriding any duplicates from GET
275
+ if ($http_method == "POST"
276
+ && @strstr($request_headers["Content-Type"],
277
+ "application/x-www-form-urlencoded")
278
+ ) {
279
+ $post_data = RopOAuthUtil::parse_parameters(
280
+ file_get_contents(self::$POST_INPUT)
281
+ );
282
+ $parameters = array_merge($parameters, $post_data);
283
+ }
284
+
285
+ // We have a Authorization-header with OAuth data. Parse the header
286
+ // and add those overriding any duplicates from GET or POST
287
+ if (@substr($request_headers['Authorization'], 0, 6) == "OAuth ") {
288
+ $header_parameters = RopOAuthUtil::split_header(
289
+ $request_headers['Authorization']
290
+ );
291
+ $parameters = array_merge($parameters, $header_parameters);
292
+ }
293
+
294
+ }
295
+
296
+ return new RopOAuthRequest($http_method, $http_url, $parameters);
297
+ }
298
+
299
+ /**
300
+ * pretty much a helper function to set up the request
301
+ */
302
+ public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) {
303
+ @$parameters or $parameters = array();
304
+ $defaults = array("oauth_version" => RopOAuthRequest::$version,
305
+ "oauth_nonce" => RopOAuthRequest::generate_nonce(),
306
+ "oauth_timestamp" => RopOAuthRequest::generate_timestamp(),
307
+ "oauth_consumer_key" => $consumer->key);
308
+ if ($token)
309
+ $defaults['oauth_token'] = $token->key;
310
+
311
+ $parameters = array_merge($defaults, $parameters);
312
+ // print_r($parameters);
313
+ return new RopOAuthRequest($http_method, $http_url, $parameters);
314
+ }
315
+
316
+ public function set_parameter($name, $value, $allow_duplicates = true) {
317
+ if ($allow_duplicates && isset($this->parameters[$name])) {
318
+ // We have already added parameter(s) with this name, so add to the list
319
+ if (is_scalar($this->parameters[$name])) {
320
+ // This is the first duplicate, so transform scalar (string)
321
+ // into an array so we can add the duplicates
322
+ $this->parameters[$name] = array($this->parameters[$name]);
323
+ }
324
+
325
+ $this->parameters[$name][] = $value;
326
+ } else {
327
+ $this->parameters[$name] = $value;
328
+ }
329
+ }
330
+ public function set_parameters($parameters) {
331
+ // keep the oauth parameters
332
+ $oauth_parameters = Array();
333
+ foreach ($this->parameters as $k=>&$v)
334
+ if (substr($k, 0, 6) == "oauth_")
335
+ $oauth_parameters[$k] = $v;
336
+ $this->parameters = array_merge($parameters, $oauth_parameters);
337
+ }
338
+ public function get_parameter($name) {
339
+ return isset($this->parameters[$name]) ? $this->parameters[$name] : null;
340
+ }
341
+
342
+ public function get_parameters() {
343
+ return $this->parameters;
344
+ }
345
+
346
+ public function unset_parameter($name) {
347
+ unset($this->parameters[$name]);
348
+ }
349
+
350
+ /**
351
+ * The request parameters, sorted and concatenated into a normalized string.
352
+ * @return string
353
+ */
354
+ public function get_signable_parameters() {
355
+ // Grab all parameters
356
+ $params = $this->parameters;
357
+
358
+ // Remove oauth_signature if present
359
+ // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.")
360
+ if (isset($params['oauth_signature'])) {
361
+ unset($params['oauth_signature']);
362
+ }
363
+
364
+ return RopOAuthUtil::build_http_query($params);
365
+ }
366
+
367
+ /**
368
+ * Returns the base string of this request
369
+ *
370
+ * The base string defined as the method, the url
371
+ * and the parameters (normalized), each urlencoded
372
+ * and the concated with &.
373
+ */
374
+ public function get_signature_base_string() {
375
+ $parts = array(
376
+ $this->get_normalized_http_method(),
377
+ $this->get_normalized_http_url(),
378
+ $this->get_signable_parameters()
379
+ );
380
+
381
+ $parts = RopOAuthUtil::urlencode_rfc3986($parts);
382
+
383
+ return implode('&', $parts);
384
+ }
385
+
386
+ /**
387
+ * just uppercases the http method
388
+ */
389
+ public function get_normalized_http_method() {
390
+ return strtoupper($this->http_method);
391
+ }
392
+
393
+ /**
394
+ * parses the url and rebuilds it to be
395
+ * scheme://host/path
396
+ */
397
+ public function get_normalized_http_url() {
398
+ $parts = parse_url($this->http_url);
399
+
400
+ $port = @$parts['port'];
401
+ $scheme = $parts['scheme'];
402
+ $host = $parts['host'];
403
+ $path = @$parts['path'];
404
+
405
+ $port or $port = ($scheme == 'https') ? '443' : '80';
406
+
407
+ if (($scheme == 'https' && $port != '443')
408
+ || ($scheme == 'http' && $port != '80')) {
409
+ $host = "$host:$port";
410
+ }
411
+ return "$scheme://$host$path";
412
+ }
413
+
414
+ /**
415
+ * builds a url usable for a GET request
416
+ */
417
+ public function to_url() {
418
+ $post_data = $this->to_postdata();
419
+ $out = $this->get_normalized_http_url();
420
+ if ($post_data) {
421
+ $out .= '?'.$post_data;
422
+ }
423
+ return $out;
424
+ }
425
+
426
+ /**
427
+ * builds the data one would send in a POST request
428
+ */
429
+ public function to_postdata() {
430
+ return RopOAuthUtil::build_http_query($this->parameters);
431
+ }
432
+
433
+ /**
434
+ * builds the Authorization: header
435
+ */
436
+ public function to_header($realm=null) {
437
+ $first = true;
438
+ if($realm) {
439
+ $out = 'Authorization: OAuth realm="' . RopOAuthUtil::urlencode_rfc3986($realm) . '"';
440
+ $first = false;
441
+ } else
442
+ $out = 'Authorization: OAuth';
443
+
444
+ $total = array();
445
+ foreach ($this->parameters as $k => $v) {
446
+ if (substr($k, 0, 5) != "oauth") continue;
447
+ if (is_array($v)) {
448
+ throw new RopOAuthException('Arrays not supported in headers');
449
+ }
450
+ $out .= ($first) ? ' ' : ',';
451
+ $out .= RopOAuthUtil::urlencode_rfc3986($k) .
452
+ '="' .
453
+ RopOAuthUtil::urlencode_rfc3986($v) .
454
+ '"';
455
+ $first = false;
456
+ }
457
+ return $out;
458
+ }
459
+
460
+ public function __toString() {
461
+ return $this->to_url();
462
+ }
463
+
464
+
465
+ public function sign_request($signature_method, $consumer, $token) {
466
+ $this->set_parameter(
467
+ "oauth_signature_method",
468
+ $signature_method->get_name(),
469
+ false
470
+ );
471
+ $signature = $this->build_signature($signature_method, $consumer, $token);
472
+ $this->set_parameter("oauth_signature", $signature, false);
473
+ }
474
+
475
+ public function build_signature($signature_method, $consumer, $token) {
476
+ $signature = $signature_method->build_signature($this, $consumer, $token);
477
+ return $signature;
478
+ }
479
+
480
+ /**
481
+ * util function: current timestamp
482
+ */
483
+ private static function generate_timestamp() {
484
+
485
+ $ci = curl_init();
486
+
487
+ curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
488
+ curl_setopt($ci, CURLOPT_HEADER, TRUE);
489
+
490
+ curl_setopt($ci, CURLOPT_URL, "http://api.twitter.com/1.1/");
491
+
492
+ $response = curl_exec($ci);
493
+
494
+ $header_size = curl_getinfo($ci, CURLINFO_HEADER_SIZE);
495
+ $header = substr($response, 0, $header_size);
496
+ $headers = self::get_headers_from_curl_response($header);
497
+ $date = time();
498
+ if(isset($headers[0]['date'])){
499
+ $date = strtotime($headers[0]['date']);
500
+ }else if($headers[0]['Date']){
501
+ $date = strtotime($headers[0]['Date']);
502
+ }
503
+ return $date;
504
+ }
505
+ static function get_headers_from_curl_response($headerContent)
506
+ {
507
+
508
+ $headers = array();
509
+
510
+ // Split the string on every "double" new line.
511
+ $arrRequests = explode("\r\n\r\n", $headerContent);
512
+
513
+ // Loop of response headers. The "count() -1" is to
514
+ //avoid an empty row for the extra line break before the body of the response.
515
+ for ($index = 0; $index < count($arrRequests) -1; $index++) {
516
+
517
+ foreach (explode("\r\n", $arrRequests[$index]) as $i => $line)
518
+ {
519
+ if ($i === 0)
520
+ $headers[$index]['http_code'] = $line;
521
+ else
522
+ {
523
+ list ($key, $value) = explode(': ', $line);
524
+ $headers[$index][$key] = $value;
525
+ }
526
+ }
527
+ }
528
+
529
+ return $headers;
530
+ }
531
+ /**
532
+ * util function: current nonce
533
+ */
534
+ public static function generate_nonce() {
535
+ $mt = microtime();
536
+ $rand = mt_rand();
537
+
538
+ return md5($mt . $rand); // md5s look nicer than numbers
539
+ }
540
+ }
541
+ }
542
+ if (!class_exists('RopOAuthServer')) {
543
+ class RopOAuthServer {
544
+ protected $timestamp_threshold = 300; // in seconds, five minutes
545
+ protected $version = '1.0'; // hi blaine
546
+ protected $signature_methods = array();
547
+
548
+ protected $data_store;
549
+
550
+ function __construct($data_store) {
551
+ $this->data_store = $data_store;
552
+ }
553
+
554
+ public function add_signature_method($signature_method) {
555
+ $this->signature_methods[$signature_method->get_name()] =
556
+ $signature_method;
557
+ }
558
+
559
+ // high level functions
560
+
561
+ /**
562
+ * process a request_token request
563
+ * returns the request token on success
564
+ */
565
+ public function fetch_request_token(&$request) {
566
+ $this->get_version($request);
567
+
568
+ $consumer = $this->get_consumer($request);
569
+
570
+ // no token required for the initial token request
571
+ $token = NULL;
572
+
573
+ $this->check_signature($request, $consumer, $token);
574
+
575
+ // Rev A change
576
+ $callback = $request->get_parameter('oauth_callback');
577
+ $new_token = $this->data_store->new_request_token($consumer, $callback);
578
+
579
+ return $new_token;
580
+ }
581
+
582
+ /**
583
+ * process an access_token request
584
+ * returns the access token on success
585
+ */
586
+ public function fetch_access_token(&$request) {
587
+ $this->get_version($request);
588
+
589
+ $consumer = $this->get_consumer($request);
590
+
591
+ // requires authorized request token
592
+ $token = $this->get_token($request, $consumer, "request");
593
+
594
+ $this->check_signature($request, $consumer, $token);
595
+
596
+ // Rev A change
597
+ $verifier = $request->get_parameter('oauth_verifier');
598
+ $new_token = $this->data_store->new_access_token($token, $consumer, $verifier);
599
+
600
+ return $new_token;
601
+ }
602
+
603
+ /**
604
+ * verify an api call, checks all the parameters
605
+ */
606
+ public function verify_request(&$request) {
607
+ $this->get_version($request);
608
+ $consumer = $this->get_consumer($request);
609
+ $token = $this->get_token($request, $consumer, "access");
610
+ $this->check_signature($request, $consumer, $token);
611
+ return array($consumer, $token);
612
+ }
613
+
614
+ // Internals from here
615
+ /**
616
+ * version 1
617
+ */
618
+ private function get_version(&$request) {
619
+ $version = $request->get_parameter("oauth_version");
620
+ if (!$version) {
621
+ // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
622
+ // Chapter 7.0 ("Accessing Protected Ressources")
623
+ $version = '1.0';
624
+ }
625
+ if ($version !== $this->version) {
626
+ throw new RopOAuthException("OAuth version '$version' not supported");
627
+ }
628
+ return $version;
629
+ }
630
+
631
+ /**
632
+ * figure out the signature with some defaults
633
+ */
634
+ private function get_signature_method(&$request) {
635
+ $signature_method =
636
+ @$request->get_parameter("oauth_signature_method");
637
+
638
+ if (!$signature_method) {
639
+ // According to chapter 7 ("Accessing Protected Ressources") the signature-method
640
+ // parameter is required, and we can't just fallback to PLAINTEXT
641
+ throw new RopOAuthException('No signature method parameter. This parameter is required');
642
+ }
643
+
644
+ if (!in_array($signature_method,
645
+ array_keys($this->signature_methods))) {
646
+ throw new RopOAuthException(
647
+ "Signature method '$signature_method' not supported " .
648
+ "try one of the following: " .
649
+ implode(", ", array_keys($this->signature_methods))
650
+ );
651
+ }
652
+ return $this->signature_methods[$signature_method];
653
+ }
654
+
655
+ /**
656
+ * try to find the consumer for the provided request's consumer key
657
+ */
658
+ private function get_consumer(&$request) {
659
+ $consumer_key = @$request->get_parameter("oauth_consumer_key");
660
+ if (!$consumer_key) {
661
+ throw new RopOAuthException("Invalid consumer key");
662
+ }
663
+
664
+ $consumer = $this->data_store->lookup_consumer($consumer_key);
665
+ if (!$consumer) {
666
+ throw new RopOAuthException("Invalid consumer");
667
+ }
668
+
669
+ return $consumer;
670
+ }
671
+
672
+ /**
673
+ * try to find the token for the provided request's token key
674
+ */
675
+ private function get_token(&$request, $consumer, $token_type="access") {
676
+ $token_field = @$request->get_parameter('oauth_token');
677
+ $token = $this->data_store->lookup_token(
678
+ $consumer, $token_type, $token_field
679
+ );
680
+ if (!$token) {
681
+ throw new RopOAuthException("Invalid $token_type token: $token_field");
682
+ }
683
+ return $token;
684
+ }
685
+
686
+ /**
687
+ * all-in-one function to check the signature on a request
688
+ * should guess the signature method appropriately
689
+ */
690
+ private function check_signature(&$request, $consumer, $token) {
691
+ // this should probably be in a different method
692
+ $timestamp = @$request->get_parameter('oauth_timestamp');
693
+ $nonce = @$request->get_parameter('oauth_nonce');
694
+
695
+ $this->check_timestamp($timestamp);
696
+ $this->check_nonce($consumer, $token, $nonce, $timestamp);
697
+
698
+ $signature_method = $this->get_signature_method($request);
699
+
700
+ $signature = $request->get_parameter('oauth_signature');
701
+ $valid_sig = $signature_method->check_signature(
702
+ $request,
703
+ $consumer,
704
+ $token,
705
+ $signature
706
+ );
707
+
708
+ if (!$valid_sig) {
709
+ throw new RopOAuthException("Invalid signature");
710
+ }
711
+ }
712
+
713
+ /**
714
+ * check that the timestamp is new enough
715
+ */
716
+ private function check_timestamp($timestamp) {
717
+ if( ! $timestamp )
718
+ throw new RopOAuthException(
719
+ 'Missing timestamp parameter. The parameter is required'
720
+ );
721
+
722
+ // verify that timestamp is recentish
723
+ $now = time();
724
+ if (abs($now - $timestamp) > $this->timestamp_threshold) {
725
+ throw new RopOAuthException(
726
+ "Expired timestamp, yours $timestamp, ours $now"
727
+ );
728
+ }
729
+ }
730
+
731
+ /**
732
+ * check that the nonce is not repeated
733
+ */
734
+ private function check_nonce($consumer, $token, $nonce, $timestamp) {
735
+ if( ! $nonce )
736
+ throw new RopOAuthException(
737
+ 'Missing nonce parameter. The parameter is required'
738
+ );
739
+
740
+ // verify that the nonce is uniqueish
741
+ $found = $this->data_store->lookup_nonce(
742
+ $consumer,
743
+ $token,
744
+ $nonce,
745
+ $timestamp
746
+ );
747
+ if ($found) {
748
+ throw new RopOAuthException("Nonce already used: $nonce");
749
+ }
750
+ }
751
+
752
+ }
753
+ }
754
+ if (!class_exists('RopOAuthDataStore')) {
755
+ class RopOAuthDataStore {
756
+ function lookup_consumer($consumer_key) {
757
+ // implement me
758
+ }
759
+
760
+ function lookup_token($consumer, $token_type, $token) {
761
+ // implement me
762
+ }
763
+
764
+ function lookup_nonce($consumer, $token, $nonce, $timestamp) {
765
+ // implement me
766
+ }
767
+
768
+ function new_request_token($consumer, $callback = null) {
769
+ // return a new token attached to this consumer
770
+ }
771
+
772
+ function new_access_token($token, $consumer, $verifier = null) {
773
+ // return a new access token attached to this consumer
774
+ // for the user associated with this token if the request token
775
+ // is authorized
776
+ // should also invalidate the request token
777
+ }
778
+
779
+ }
780
+ }
781
+ if (!class_exists('RopOAuthUtil')) {
782
+ class RopOAuthUtil {
783
+ public static function urlencode_rfc3986($input) {
784
+ if (is_array($input)) {
785
+ return array_map(array('RopOAuthUtil', 'urlencode_rfc3986'), $input);
786
+ } else if (is_scalar($input)) {
787
+ return str_replace(
788
+ '+',
789
+ ' ',
790
+ str_replace('%7E', '~', rawurlencode($input))
791
+ );
792
+ } else {
793
+ return '';
794
+ }
795
+ }
796
+
797
+
798
+ // This decode function isn't taking into consideration the above
799
+ // modifications to the encoding process. However, this method doesn't
800
+ // seem to be used anywhere so leaving it as is.
801
+ public static function urldecode_rfc3986($string) {
802
+ return urldecode($string);
803
+ }
804
+
805
+ // Utility function for turning the Authorization: header into
806
+ // parameters, has to do some unescaping
807
+ // Can filter out any non-oauth parameters if needed (default behaviour)
808
+ public static function split_header($header, $only_allow_oauth_parameters = true) {
809
+ $pattern = '/(([-_a-z]*)=("([^"]*)"|([^,]*)),?)/';
810
+ $offset = 0;
811
+ $params = array();
812
+ while (preg_match($pattern, $header, $matches, PREG_OFFSET_CAPTURE, $offset) > 0) {
813
+ $match = $matches[0];
814
+ $header_name = $matches[2][0];
815
+ $header_content = (isset($matches[5])) ? $matches[5][0] : $matches[4][0];
816
+ if (preg_match('/^oauth_/', $header_name) || !$only_allow_oauth_parameters) {
817
+ $params[$header_name] = RopOAuthUtil::urldecode_rfc3986($header_content);
818
+ }
819
+ $offset = $match[1] + strlen($match[0]);
820
+ }
821
+
822
+ if (isset($params['realm'])) {
823
+ unset($params['realm']);
824
+ }
825
+
826
+ return $params;
827
+ }
828
+
829
+ // helper to try to sort out headers for people who aren't running apache
830
+ public static function get_headers() {
831
+ if (function_exists('apache_request_headers')) {
832
+ // we need this to get the actual Authorization: header
833
+ // because apache tends to tell us it doesn't exist
834
+ $headers = apache_request_headers();
835
+
836
+ // sanitize the output of apache_request_headers because
837
+ // we always want the keys to be Cased-Like-This and arh()
838
+ // returns the headers in the same case as they are in the
839
+ // request
840
+ $out = array();
841
+ foreach( $headers AS $key => $value ) {
842
+ $key = str_replace(
843
+ " ",
844
+ "-",
845
+ ucwords(strtolower(str_replace("-", " ", $key)))
846
+ );
847
+ $out[$key] = $value;
848
+ }
849
+ } else {
850
+ // otherwise we don't have apache and are just going to have to hope
851
+ // that $_SERVER actually contains what we need
852
+ $out = array();
853
+ if( isset($_SERVER['CONTENT_TYPE']) )
854
+ $out['Content-Type'] = $_SERVER['CONTENT_TYPE'];
855
+ if( isset($_ENV['CONTENT_TYPE']) )
856
+ $out['Content-Type'] = $_ENV['CONTENT_TYPE'];
857
+
858
+ foreach ($_SERVER as $key => $value) {
859
+ if (substr($key, 0, 5) == "HTTP_") {
860
+ // this is chaos, basically it is just there to capitalize the first
861
+ // letter of every word that is not an initial HTTP and strip HTTP
862
+ // code from przemek
863
+ $key = str_replace(
864
+ " ",
865
+ "-",
866
+ ucwords(strtolower(str_replace("_", " ", substr($key, 5))))
867
+ );
868
+ $out[$key] = $value;
869
+ }
870
+ }
871
+ }
872
+ return $out;
873
+ }
874
+
875
+ // This function takes a input like a=b&a=c&d=e and returns the parsed
876
+ // parameters like this
877
+ // array('a' => array('b','c'), 'd' => 'e')
878
+ public static function parse_parameters( $input ) {
879
+ if (!isset($input) || !$input) return array();
880
+
881
+ $pairs = explode('&', $input);
882
+
883
+ $parsed_parameters = array();
884
+ foreach ($pairs as $pair) {
885
+ $split = explode('=', $pair, 2);
886
+ $parameter = RopOAuthUtil::urldecode_rfc3986($split[0]);
887
+ $value = isset($split[1]) ? RopOAuthUtil::urldecode_rfc3986($split[1]) : '';
888
+
889
+ if (isset($parsed_parameters[$parameter])) {
890
+ // We have already recieved parameter(s) with this name, so add to the list
891
+ // of parameters with this name
892
+
893
+ if (is_scalar($parsed_parameters[$parameter])) {
894
+ // This is the first duplicate, so transform scalar (string) into an array
895
+ // so we can add the duplicates
896
+ $parsed_parameters[$parameter] = array($parsed_parameters[$parameter]);
897
+ }
898
+
899
+ $parsed_parameters[$parameter][] = $value;
900
+ } else {
901
+ $parsed_parameters[$parameter] = $value;
902
+ }
903
+ }
904
+ return $parsed_parameters;
905
+ }
906
+
907
+ public static function build_http_query($params) {
908
+ if (!$params) return '';
909
+
910
+ // Urlencode both keys and values
911
+ $keys = RopOAuthUtil::urlencode_rfc3986(array_keys($params));
912
+ $values = RopOAuthUtil::urlencode_rfc3986(array_values($params));
913
+ $params = array_combine($keys, $values);
914
+
915
+ // Parameters are sorted by name, using lexicographical byte value ordering.
916
+ // Ref: Spec: 9.1.1 (1)
917
+ uksort($params, 'strcmp');
918
+
919
+ $pairs = array();
920
+ foreach ($params as $parameter => $value) {
921
+ if (is_array($value)) {
922
+ // If two or more parameters share the same name, they are sorted by their value
923
+ // Ref: Spec: 9.1.1 (1)
924
+ natsort($value);
925
+ foreach ($value as $duplicate_value) {
926
+ $pairs[] = $parameter . '=' . $duplicate_value;
927
+ }
928
+ } else {
929
+ $pairs[] = $parameter . '=' . $value;
930
+ }
931
+ }
932
+ // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61)
933
+ // Each name-value pair is separated by an '&' character (ASCII code 38)
934
+ return implode('&', $pairs);
935
+ }
936
+ }
937
+ }
inc/oAuth/twitteroauth.php CHANGED
@@ -1,353 +1,356 @@
1
- <?php
2
-
3
- /*
4
- * Abraham Williams (abraham@abrah.am) http://abrah.am
5
- *
6
- * The first PHP Library to support OAuth for Twitter's REST API.
7
- */
8
-
9
- /* Load OAuth lib. You can find it at http://oauth.net */
10
- require_once('OAuth.php');
11
-
12
- /**
13
- * Twitter OAuth class
14
- */
15
- if (!class_exists('RopTwitterOAuth')) {
16
- class RopTwitterOAuth {
17
- /* Contains the last HTTP status code returned. */
18
- public $http_code;
19
- /* Contains the last API call. */
20
- public $url;
21
- /* Set up the API root URL. */
22
- public $host = "https://api.twitter.com/1.1/";
23
- /* Set timeout default. */
24
- public $timeout = 30;
25
- /* Set connect timeout. */
26
- public $connecttimeout = 30;
27
- /* Verify SSL Cert. */
28
- public $ssl_verifypeer = FALSE;
29
- /* Respons format. */
30
- public $format = 'json';
31
- /* Decode returned json data. */
32
- public $decode_json = TRUE;
33
- /* Contains the last HTTP headers returned. */
34
- public $http_info;
35
- /* Set the useragnet. */
36
- public $useragent = 'RopTwitterOAuth v0.2.0-beta2';
37
- /* Immediately retry the API call if the response was not successful. */
38
- //public $retry = TRUE;
39
-
40
- /* caching options */
41
- /* caching responses for an hour only with GET requests */
42
- public $cache = 0;
43
- /* where cache files will be stored if above is set to true */
44
- public $cacheLocation = '/tmp';
45
-
46
- /**
47
- * Set API URLS
48
- */
49
- function accessTokenURL() { return 'https://api.twitter.com/oauth/access_token'; }
50
- function authenticateURL() { return 'https://api.twitter.com/oauth/authenticate'; }
51
- function authorizeURL() { return 'https://api.twitter.com/oauth/authorize'; }
52
- function requestTokenURL() { return 'https://api.twitter.com/oauth/request_token'; }
53
-
54
- /**
55
- * Debug helpers
56
- */
57
- function lastStatusCode() { return $this->http_code; }
58
- function lastAPICall() { return $this->last_api_call; }
59
-
60
- /**
61
- * construct RopTwitterOAuth object
62
- */
63
- function __construct($consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) {
64
- $this->sha1_method = new RopOAuthSignatureMethod_HMAC_SHA1();
65
- $this->consumer = new RopOAuthConsumer($consumer_key, $consumer_secret);
66
- if (!empty($oauth_token) && !empty($oauth_token_secret)) {
67
- $this->token = new RopOAuthConsumer($oauth_token, $oauth_token_secret);
68
- } else {
69
- $this->token = NULL;
70
- }
71
- }
72
-
73
-
74
- /**
75
- * Get a request_token from Twitter
76
- *
77
- * @returns a key/value array containing oauth_token and oauth_token_secret
78
- */
79
- function getRequestToken($oauth_callback) {
80
- $parameters = array();
81
- $parameters['oauth_callback'] = $oauth_callback;
82
- $request = $this->RopOAuthRequest($this->requestTokenURL(), 'GET', $parameters);
83
- return $this->getToken($request);
84
- }
85
-
86
- /**
87
- * Get the authorize URL
88
- *
89
- * @returns a string
90
- */
91
- function getAuthorizeURL($token, $sign_in_with_twitter = TRUE) {
92
- if (is_array($token)) {
93
- $token = $token['oauth_token'];
94
- }
95
- if (empty($sign_in_with_twitter)) {
96
- return $this->authorizeURL() . "?oauth_token={$token}";
97
- } else {
98
- return $this->authenticateURL() . "?oauth_token={$token}";
99
- }
100
- }
101
-
102
- /**
103
- * Exchange request token and secret for an access token and
104
- * secret, to sign API calls.
105
- *
106
- * @returns array("oauth_token" => "the-access-token",
107
- * "oauth_token_secret" => "the-access-secret",
108
- * "user_id" => "9436992",
109
- * "screen_name" => "abraham")
110
- */
111
- function getAccessToken($oauth_verifier) {
112
- $parameters = array();
113
- $parameters['oauth_verifier'] = $oauth_verifier;
114
- $request = $this->RopOAuthRequest($this->accessTokenURL(), 'GET', $parameters);
115
- return $this->getToken($request);
116
- }
117
-
118
- /**
119
- * One time exchange of username and password for access token and secret.
120
- *
121
- * @returns array("oauth_token" => "the-access-token",
122
- * "oauth_token_secret" => "the-access-secret",
123
- * "user_id" => "9436992",
124
- * "screen_name" => "abraham",
125
- * "x_auth_expires" => "0")
126
- */
127
- function getXAuthToken($username, $password) {
128
- $parameters = array();
129
- $parameters['x_auth_username'] = $username;
130
- $parameters['x_auth_password'] = $password;
131
- $parameters['x_auth_mode'] = 'client_auth';
132
- $request = $this->RopOAuthRequest($this->accessTokenURL(), 'POST', $parameters);
133
- return $this->getToken($request);
134
- }
135
-
136
- /**
137
- * GET wrapper for RopOAuthRequest.
138
- */
139
- function get($url, $parameters = array()) {
140
- $response = $this->RopOAuthRequest($url, 'GET', $parameters);
141
- if ($this->format === 'json' && $this->decode_json) {
142
- return json_decode($response);
143
- }
144
- return $response;
145
- }
146
-
147
- /**
148
- * POST wrapper for RopOAuthRequest.
149
- */
150
- function post($url, $parameters = array()) {
151
- $response = $this->RopOAuthRequest($url, 'POST', $parameters);
152
- if ($this->format === 'json' && $this->decode_json) {
153
- return json_decode($response);
154
- }
155
- return $response;
156
- }
157
-
158
- /**
159
- * Uploads are handled slightly differently
160
- */
161
- function upload($url, $parameters = array()) {
162
- $response = $this->RopOAuthRequest($url, 'POST', $parameters, true);
163
- if ($this->format === 'json' && $this->decode_json) {
164
- return json_decode($response);
165
- }
166
- return $response;
167
- }
168
-
169
- /**
170
- * DELETE wrapper for oAuthReqeust.
171
- */
172
- function delete($url, $parameters = array()) {
173
- $response = $this->RopOAuthRequest($url, 'DELETE', $parameters);
174
- if ($this->format === 'json' && $this->decode_json) {
175
- return json_decode($response);
176
- }
177
- return $response;
178
- }
179
-
180
- /**
181
- * Format and sign an OAuth / API request
182
- */
183
- function RopOAuthRequest($url, $method, $parameters, $upload = false) {
184
-
185
- if (strrpos($url, 'https://') !== 0 && strrpos($url, 'http://') !== 0) {
186
- $url = "{$this->host}{$url}.{$this->format}";
187
- }
188
-
189
- if ($upload) {
190
- // we only need to sign the oauth_* parameters for this, see
191
- // https://dev.twitter.com/discussions/1059?page=4
192
- $signable_parameters = Array();
193
- foreach ($parameters as $k=>&$v)
194
- if (substr($k, 0, 6) == "oauth_")
195
- $signable_parameters[$k] = $v;
196
- $request = RopOAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $signable_parameters);
197
- $request->sign_request($this->sha1_method, $this->consumer, $this->token);
198
- $request->set_parameters($parameters);
199
- } else {
200
- $request = RopOAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters);
201
- $request->sign_request($this->sha1_method, $this->consumer, $this->token);
202
- }
203
-
204
- switch ($method) {
205
- case 'GET':
206
- return $this->http($request->to_url(), 'GET');
207
- default:
208
- return $this->http($request->get_normalized_http_url(), $method, $upload ? $request->get_parameters() : $request->to_postdata(), $upload ? $request->to_header() : false);
209
- }
210
- }
211
-
212
- /**
213
- * Make an HTTP request
214
- *
215
- * @return API results
216
- */
217
- function http($url, $method, $postfields = NULL, $authorization_header= false) {
218
- $this->http_info = array();
219
-
220
- $ci = curl_init();
221
-
222
- $headers = Array('Expect:');
223
- /* Curl settings */
224
- curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent);
225
- curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);
226
- curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);
227
- curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
228
- curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);
229
- curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));
230
- curl_setopt($ci, CURLOPT_HEADER, FALSE);
231
-
232
- switch ($method) {
233
- case 'POST':
234
- curl_setopt($ci, CURLOPT_POST, TRUE);
235
- if ($authorization_header)
236
- $headers[] = $authorization_header;
237
- if (!empty($postfields)) {
238
- curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
239
- }
240
- break;
241
- case 'DELETE':
242
- curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
243
- if (!empty($postfields)) {
244
- $url = "{$url}?{$postfields}";
245
- }
246
- }
247
-
248
- curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
249
- curl_setopt($ci, CURLOPT_URL, $url);
250
- $response = curl_exec($ci);
251
-
252
- $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
253
-
254
- if ( $this->http_code != 200 ) {
255
- CWP_TOP_Core::addNotice( "Twitter error: " . htmlentities($response), 'error' );
256
- return false;
257
- }
258
- $this->http_info = array_merge( $this->http_info, curl_getinfo( $ci ) );
259
- $this->url = $url;
260
- curl_close( $ci );
261
-
262
- if ( $this->cache ) {
263
- $this->cacheFile( $response, $this->cache_file_name );
264
- }
265
-
266
- return $response;
267
- }
268
-
269
- /**
270
- * Get the header info to store.
271
- */
272
- function getHeader($ch, $header) {
273
- $i = strpos($header, ':');
274
- if (!empty($i)) {
275
- $key = str_replace('-', '_', strtolower(substr($header, 0, $i)));
276
- $value = trim(substr($header, $i + 2));
277
- $this->http_header[$key] = $value;
278
- }
279
- return strlen($header);
280
- }
281
-
282
- function checkCache($fileName, $time) {
283
- $fileName = $this->cacheLocation.'/'.$fileName;
284
-
285
- if (!file_exists($fileName)) {
286
- $this->cache_debug = $fileName . 'does not exist';
287
- return 0;
288
- }
289
-
290
- if (!$fileTime = filectime($fileName)) {
291
- $this->cache_error = 'Could not check the cache time';
292
- return 0;
293
- }
294
-
295
- // check if the cache is too old
296
- if (time() - $fileTime < $time) {
297
- $this->cache_debug = 'cache file expired';
298
- return 1;
299
- }
300
-
301
- $this->cache_debug = 'cache file still valid';
302
- return 0;
303
- }
304
-
305
- function cacheFile($data, $filename) {
306
- $new_file = $this->cacheLocation.'/'.$fileName;
307
- $fh = fopen($new_file, 'w+');
308
- if (!$fh) {
309
- $this->cache_error = "Could not open cache file '$filename'";
310
- return 0;
311
- }
312
- if (!fwrite($fh, $data)) {
313
- $this->cache_error = "Could not write to cache file '$filename'";
314
- fclose($fh);
315
- return 0;
316
- }
317
- fclose($fh);
318
- chmod($new_file, 0766);
319
- return 1;
320
- }
321
-
322
- function cacheRetrieve($fileName) {
323
- error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
324
- if (!$fh = fopen($this->cacheLocation.'/'.$fileName, 'r')) {
325
- $this->cache_error = 'Could not open cache file';
326
- return 0;
327
- }
328
- error_reporting(E_ALL ^ E_NOTICE);
329
-
330
- $xml = "";
331
- while (!feof($fh)) {
332
- $xml .= fread($fh, 1024);
333
- }
334
- fclose($fh);
335
-
336
- return $xml;
337
- }
338
-
339
- /**
340
- * Get the token from the request
341
- *
342
- * @return array
343
- * @author Justin Palmer
344
- **/
345
- private function getToken($request)
346
- {
347
- $token = RopOAuthUtil::parse_parameters($request);
348
- if(isset($token['oauth_token'], $token['oauth_token_secret']))
349
- $this->token = new RopOAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
350
- return $token;
351
- }
352
- }
 
 
 
353
  }
1
+ <?php
2
+
3
+ /*
4
+ * Abraham Williams (abraham@abrah.am) http://abrah.am
5
+ *
6
+ * The first PHP Library to support OAuth for Twitter's REST API.
7
+ */
8
+
9
+ /* Load OAuth lib. You can find it at http://oauth.net */
10
+ require_once('OAuth.php');
11
+
12
+ /**
13
+ * Twitter OAuth class
14
+ */
15
+ if (!class_exists('RopTwitterOAuth')) {
16
+ class RopTwitterOAuth {
17
+ /* Contains the last HTTP status code returned. */
18
+ public $http_code;
19
+ /* Contains the last API call. */
20
+ public $url;
21
+ /* Set up the API root URL. */
22
+ public $host = "https://api.twitter.com/1.1/";
23
+ /* Set timeout default. */
24
+ public $timeout = 30;
25
+ /* Set connect timeout. */
26
+ public $connecttimeout = 30;
27
+ /* Verify SSL Cert. */
28
+ public $ssl_verifypeer = FALSE;
29
+ /* Respons format. */
30
+ public $format = 'json';
31
+ /* Decode returned json data. */
32
+ public $decode_json = TRUE;
33
+ /* Contains the last HTTP headers returned. */
34
+ public $http_info;
35
+ /* Set the useragnet. */
36
+ public $useragent = 'RopTwitterOAuth v0.2.0-beta2';
37
+ /* Immediately retry the API call if the response was not successful. */
38
+ //public $retry = TRUE;
39
+
40
+ /* caching options */
41
+ /* caching responses for an hour only with GET requests */
42
+ public $cache = 0;
43
+ /* where cache files will be stored if above is set to true */
44
+ public $cacheLocation = '/tmp';
45
+ public $oauth_host = 'https://api.twitter.com/oauth/';
46
+ /**
47
+ * Set API URLS
48
+ */
49
+ function accessTokenURL() { return $this->oauth_host.'access_token'; }
50
+ function authenticateURL() { return $this->oauth_host.'authenticate'; }
51
+ function authorizeURL() { return $this->oauth_host.'authorize'; }
52
+ function requestTokenURL() { return $this->oauth_host.'request_token'; }
53
+
54
+ /**
55
+ * Debug helpers
56
+ */
57
+ function lastStatusCode() { return $this->http_code; }
58
+ function lastAPICall() { return $this->last_api_call; }
59
+
60
+ /**
61
+ * construct RopTwitterOAuth object
62
+ */
63
+ function __construct($consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) {
64
+ $this->sha1_method = new RopOAuthSignatureMethod_HMAC_SHA1();
65
+
66
+ $this->consumer = new RopOAuthConsumer($consumer_key, $consumer_secret);
67
+ if (!empty($oauth_token) && !empty($oauth_token_secret)) {
68
+ $this->token = new RopOAuthConsumer($oauth_token, $oauth_token_secret);
69
+ } else {
70
+ $this->token = NULL;
71
+ }
72
+ }
73
+
74
+
75
+ /**
76
+ * Get a request_token from Twitter
77
+ *
78
+ * @returns a key/value array containing oauth_token and oauth_token_secret
79
+ */
80
+ function getRequestToken($oauth_callback) {
81
+ $parameters = array();
82
+ $parameters['oauth_callback'] = $oauth_callback;
83
+ $request = $this->RopOAuthRequest($this->requestTokenURL(), 'GET', $parameters);
84
+ return $this->getToken($request);
85
+ }
86
+
87
+ /**
88
+ * Get the authorize URL
89
+ *
90
+ * @returns a string
91
+ */
92
+ function getAuthorizeURL($token, $sign_in_with_twitter = TRUE) {
93
+ if (is_array($token)) {
94
+ $token = $token['oauth_token'];
95
+ }
96
+ if (empty($sign_in_with_twitter)) {
97
+ return $this->authorizeURL() . "?oauth_token={$token}";
98
+ } else {
99
+ return $this->authenticateURL() . "?oauth_token={$token}";
100
+ }
101
+ }
102
+
103
+ /**
104
+ * Exchange request token and secret for an access token and
105
+ * secret, to sign API calls.
106
+ *
107
+ * @returns array("oauth_token" => "the-access-token",
108
+ * "oauth_token_secret" => "the-access-secret",
109
+ * "user_id" => "9436992",
110
+ * "screen_name" => "abraham")
111
+ */
112
+ function getAccessToken($oauth_verifier,$type="GET") {
113
+ $parameters = array();
114
+ $parameters['oauth_verifier'] = $oauth_verifier;
115
+ $request = $this->RopOAuthRequest($this->accessTokenURL(), $type, $parameters);
116
+ return $this->getToken($request);
117
+ }
118
+
119
+ /**
120
+ * One time exchange of username and password for access token and secret.
121
+ *
122
+ * @returns array("oauth_token" => "the-access-token",
123
+ * "oauth_token_secret" => "the-access-secret",
124
+ * "user_id" => "9436992",
125
+ * "screen_name" => "abraham",
126
+ * "x_auth_expires" => "0")
127
+ */
128
+ function getXAuthToken($username, $password) {
129
+ $parameters = array();
130
+ $parameters['x_auth_username'] = $username;
131
+ $parameters['x_auth_password'] = $password;
132
+ $parameters['x_auth_mode'] = 'client_auth';
133
+ $request = $this->RopOAuthRequest($this->accessTokenURL(), 'POST', $parameters);
134
+ return $this->getToken($request);
135
+ }
136
+
137
+ /**
138
+ * GET wrapper for RopOAuthRequest.
139
+ */
140
+ function get($url, $parameters = array()) {
141
+ $response = $this->RopOAuthRequest($url, 'GET', $parameters);
142
+ if ($this->format === 'json' && $this->decode_json) {
143
+ return json_decode($response);
144
+ }
145
+ return $response;
146
+ }
147
+
148
+ /**
149
+ * POST wrapper for RopOAuthRequest.
150
+ */
151
+ function post($url, $parameters = array()) {
152
+ $response = $this->RopOAuthRequest($url, 'POST', $parameters);
153
+ if ($this->format === 'json' && $this->decode_json) {
154
+ return json_decode($response);
155
+ }
156
+ return $response;
157
+ }
158
+
159
+ /**
160
+ * Uploads are handled slightly differently
161
+ */
162
+ function upload($url, $parameters = array()) {
163
+ $response = $this->RopOAuthRequest($url, 'POST', $parameters, true);
164
+ if ($this->format === 'json' && $this->decode_json) {
165
+ return json_decode($response);
166
+ }
167
+ return $response;
168
+ }
169
+
170
+ /**
171
+ * DELETE wrapper for oAuthReqeust.
172
+ */
173
+ function delete($url, $parameters = array()) {
174
+ $response = $this->RopOAuthRequest($url, 'DELETE', $parameters);
175
+ if ($this->format === 'json' && $this->decode_json) {
176
+ return json_decode($response);
177
+ }
178
+ return $response;
179
+ }
180
+
181
+ /**
182
+ * Format and sign an OAuth / API request
183
+ */
184
+ function RopOAuthRequest($url, $method, $parameters, $upload = false) {
185
+
186
+ if (strrpos($url, 'https://') !== 0 && strrpos($url, 'http://') !== 0) {
187
+ $url = "{$this->host}{$url}.{$this->format}";
188
+ }
189
+
190
+ if ($upload) {
191
+ // we only need to sign the oauth_* parameters for this, see
192
+ // https://dev.twitter.com/discussions/1059?page=4
193
+ $signable_parameters = Array();
194
+ foreach ($parameters as $k=>&$v)
195
+ if (substr($k, 0, 6) == "oauth_")
196
+ $signable_parameters[$k] = $v;
197
+ $request = RopOAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $signable_parameters);
198
+ $request->sign_request($this->sha1_method, $this->consumer, $this->token);
199
+ $request->set_parameters($parameters);
200
+ } else {
201
+ $request = RopOAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters);
202
+ $request->sign_request($this->sha1_method, $this->consumer, $this->token);
203
+ }
204
+
205
+ switch ($method) {
206
+ case 'GET':
207
+ return $this->http($request->to_url(), 'GET');
208
+ default:
209
+ return $this->http($request->get_normalized_http_url(), $method, $upload ? $request->get_parameters() : $request->to_postdata(), $upload ? $request->to_header() : false);
210
+ }
211
+ }
212
+
213
+ /**
214
+ * Make an HTTP request
215
+ *
216
+ * @return API results
217
+ */
218
+ function http($url, $method, $postfields = NULL, $authorization_header= false) {
219
+ $this->http_info = array();
220
+
221
+ $ci = curl_init();
222
+
223
+ $headers = Array('Expect:');
224
+
225
+ curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent);
226
+ curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);
227
+ curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);
228
+ curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
229
+ curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);
230
+ curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));
231
+ curl_setopt($ci, CURLOPT_HEADER, FALSE);
232
+
233
+ switch ($method) {
234
+ case 'POST':
235
+ curl_setopt($ci, CURLOPT_POST, TRUE);
236
+ if ($authorization_header)
237
+ $headers[] = $authorization_header;
238
+ if (!empty($postfields)) {
239
+ // print_r($postfields);
240
+ curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
241
+ }
242
+ break;
243
+ case 'DELETE':
244
+ curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
245
+ if (!empty($postfields)) {
246
+ $url = "{$url}?{$postfields}";
247
+ }
248
+ }
249
+ // echo '<pre>';
250
+ //print_r($headers);
251
+ curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
252
+ curl_setopt($ci, CURLOPT_URL, $url);
253
+ // echo $url;
254
+ $response = curl_exec($ci);
255
+
256
+ $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
257
+ if ( ! in_array($this->http_code,array(200,201,301))) {
258
+ CWP_TOP_Core::addNotice( "Connection error: " . htmlentities($response), 'error' );
259
+ return false;
260
+ }
261
+ $this->http_info = array_merge( $this->http_info, curl_getinfo( $ci ) );
262
+ $this->url = $url;
263
+ curl_close( $ci );
264
+
265
+ if ( $this->cache ) {
266
+ $this->cacheFile( $response, $this->cache_file_name );
267
+ }
268
+
269
+ return $response;
270
+ }
271
+
272
+ /**
273
+ * Get the header info to store.
274
+ */
275
+ function getHeader($ch, $header) {
276
+ $i = strpos($header, ':');
277
+ if (!empty($i)) {
278
+ $key = str_replace('-', '_', strtolower(substr($header, 0, $i)));
279
+ $value = trim(substr($header, $i + 2));
280
+ $this->http_header[$key] = $value;
281
+ }
282
+ return strlen($header);
283
+ }
284
+
285
+ function checkCache($fileName, $time) {
286
+ $fileName = $this->cacheLocation.'/'.$fileName;
287
+
288
+ if (!file_exists($fileName)) {
289
+ $this->cache_debug = $fileName . 'does not exist';
290
+ return 0;
291
+ }
292
+
293
+ if (!$fileTime = filectime($fileName)) {
294
+ $this->cache_error = 'Could not check the cache time';
295
+ return 0;
296
+ }
297
+
298
+ // check if the cache is too old
299
+ if (time() - $fileTime < $time) {
300
+ $this->cache_debug = 'cache file expired';
301
+ return 1;
302
+ }
303
+
304
+ $this->cache_debug = 'cache file still valid';
305
+ return 0;
306
+ }
307
+
308
+ function cacheFile($data, $filename) {
309
+ $new_file = $this->cacheLocation.'/'.$fileName;
310
+ $fh = fopen($new_file, 'w+');
311
+ if (!$fh) {
312
+ $this->cache_error = "Could not open cache file '$filename'";
313
+ return 0;
314
+ }
315
+ if (!fwrite($fh, $data)) {
316
+ $this->cache_error = "Could not write to cache file '$filename'";
317
+ fclose($fh);
318
+ return 0;
319
+ }
320
+ fclose($fh);
321
+ chmod($new_file, 0766);
322
+ return 1;
323
+ }
324
+
325
+ function cacheRetrieve($fileName) {
326
+ error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
327
+ if (!$fh = fopen($this->cacheLocation.'/'.$fileName, 'r')) {
328
+ $this->cache_error = 'Could not open cache file';
329
+ return 0;
330
+ }
331
+ error_reporting(E_ALL ^ E_NOTICE);
332
+
333
+ $xml = "";
334
+ while (!feof($fh)) {
335
+ $xml .= fread($fh, 1024);
336
+ }
337
+ fclose($fh);
338
+
339
+ return $xml;
340
+ }
341
+
342
+ /**
343
+ * Get the token from the request
344
+ *
345
+ * @return array
346
+ * @author Justin Palmer
347
+ **/
348
+ private function getToken($request)
349
+ {
350
+ $token = RopOAuthUtil::parse_parameters($request);
351
+ if(isset($token['oauth_token'], $token['oauth_token_secret']))
352
+ $this->token = new RopOAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
353
+ return $token;
354
+ }
355
+ }
356
  }
inc/view-accounts.php CHANGED
@@ -1,98 +1,39 @@
1
- <input id="cwp_top_currenturl" type="hidden" value="<?php echo CURRENTURL; ?>">
2
-
3
- <fieldset class="option">
4
- <div class="left">
5
- <label for="twitter-login"> <?php _e("Twitter Login", CWP_TEXTDOMAIN); ?> </label>
6
- <span class='description'> <?php _e("Login using your Twitter account.", CWP_TEXTDOMAIN); ?> </span>
7
- </div><!-- end .left -->
8
-
9
- <div class='right'>
10
- <?php
11
-
12
-
13
- $tw_users = 0;
14
- //$this->tweetPost(array("message"=>"Testinsd sg tpo","link"=>"http://wicked-stallion-64-120688.euw1.nitrousbox.com/"));
15
- //echo count($this->users);
16
- if(!empty($this->users))
17
- foreach ($this->users as $user) {
18
- if ($user['service']=='twitter'|| !isset($user['service'])) {
19
- $tw_users++;
20
- ?>
21
- <div class="user_details">
22
- <div class='user_avatar'><img src="<?php echo $user['oauth_user_details']->profile_image_url; ?>"></div>
23
- <div class="user_name"><?php echo $user['oauth_user_details']->name; ?></div>
24
- <div class="remove_user"><a href='#' id='<?php echo $user['user_id']; ?>' class='logout_user'></a></div>
25
- </div><!-- end .user_details -->
26
- <?php } }
27
- if ($tw_users!==0) { ?>
28
- <button id='twitter-login' class='another-account login' service='twitter'>+</button>
29
- <?php } else { ?>
30
- <button id='twitter-login' class='login' service='twitter'> <?php _e("Add Account", CWP_TEXTDOMAIN) ?> </button>
31
- <?php } ?>
32
- </div><!-- end .right -->
33
- </fieldset><!-- end .option -->
34
-
35
- <fieldset class="option">
36
- <div class="left">
37
- <label for="facebook-login"> <?php _e("Facebook Login", CWP_TEXTDOMAIN); ?> </label>
38
- <span class='description'> <?php _e("Login using your Facebook account.", CWP_TEXTDOMAIN); ?> </span>
39
- </div><!-- end .left -->
40
-
41
- <div class='right'>
42
- <?php
43
-
44
- $fb_users = 0;
45
-
46
- if(!empty($this->users))
47
- foreach ($this->users as $user) {
48
- if ($user['service']=='facebook') {
49
- $fb_users++;
50
- ?>
51
- <div class="user_details">
52
- <div class='user_avatar'><img src="<?php echo $user['oauth_user_details']->profile_image_url; ?>"></div>
53
- <div class="user_name"><?php echo $user['oauth_user_details']->name; ?></div>
54
- <div class="remove_user"><a href='#' id='<?php echo $user['user_id']; ?>' service='facebook' class='logout_user'></a></div>
55
- </div><!-- end .user_details -->
56
- <?php } }
57
- if ($fb_users!==0){ ?>
58
- <button id='facebook-login' class='another-account login' service='facebook'>+</button>
59
- <?php } else {
60
- if (get_option('top_fb_token')===""||!get_option('top_fb_token')) {
61
- ?>
62
- <button id='facebook-login' class='login' service='facebook'> <?php _e("Authorize", CWP_TEXTDOMAIN) ?> </button>
63
- <?php } else {?>
64
- <button id='facebook-login' class='login' service='facebook'> <?php _e("Add Account", CWP_TEXTDOMAIN) ?> </button>
65
- <?php }} ?>
66
- </div><!-- end .right -->
67
- </fieldset><!-- end .option -->
68
-
69
- <fieldset class="option">
70
- <div class="left">
71
- <label for="linkedin-login"> <?php _e("Linkedin Login", CWP_TEXTDOMAIN); ?> </label>
72
- <span class='description'> <?php _e("Login using your Linkedin account.", CWP_TEXTDOMAIN); ?> </span>
73
- </div><!-- end .left -->
74
-
75
- <div class='right'>
76
- <?php
77
-
78
- $lk_users = 0;
79
-
80
- if(!empty($this->users))
81
- foreach ($this->users as $user) {
82
- if ($user['service']=='linkedin') {
83
- $lk_users++;
84
- ?>
85
- <div class="user_details">
86
- <div class='user_avatar'><img src="<?php echo $user['oauth_user_details']->profile_image_url; ?>"></div>
87
- <div class="user_name"><?php echo $user['oauth_user_details']->name; ?></div>
88
- <div class="remove_user"><a href='#' id='<?php echo $user['user_id']; ?>' service='linkedin' class='logout_user'></a></div>
89
- </div><!-- end .user_details -->
90
- <?php } }
91
- if ($lk_users!==0){ ?>
92
- <button id='linkedin-login' class='another-account login' service='linkedin'>+</button>
93
- <?php } else { ?>
94
- <button id='linkedin-login' class='login' service='linkedin'> <?php _e("Add account", CWP_TEXTDOMAIN); ?> </button>
95
- <?php } ?>
96
- </div><!-- end .right -->
97
- </fieldset><!-- end .option -->
98
-
1
+ <input id="cwp_top_currenturl" type="hidden" value="<?php echo CURRENTURL; ?>" data-cnetwork="<?php echo CWP_TOP_Core::getCurrentNetwork(); ?>">
2
+ <?php
3
+ $networks = $this->getAllNetworks(true);
4
+ foreach($networks as $an => $pro){
5
+
6
+ ?>
7
+
8
+ <fieldset class="option <?php if($pro !== CWP_TOP_PRO): ?> pro-ver <?php endif; ?> ">
9
+ <div class="left">
10
+ <label for="<?php echo $an; ?>-login"> <?php _e(ucwords($an)." Login", 'tweet-old-post'); ?> </label>
11
+ <span class='description'> <?php _e("Login using your ".ucwords($an)." account.", 'tweet-old-post'); ?> </span>
12
+ </div><!-- end .left -->
13
+
14
+ <div class='right'>
15
+ <?php
16
+ $tw_users = 0;
17
+ if(!empty($this->users))
18
+ foreach ($this->users as $user) {
19
+ if ($user['service']==$an|| !isset($user['service'])) {
20
+ $tw_users++;
21
+ ?>
22
+ <div class="user_details">
23
+ <div class='user_avatar'><img src="<?php echo $user['oauth_user_details']->profile_image_url; ?>"></div>
24
+ <div class="user_name"><?php echo $user['oauth_user_details']->name; ?></div>
25
+ <div class="remove_user"><a href='#' id='<?php echo $user['user_id']; ?>' class='logout_user'></a></div>
26
+ </div><!-- end .user_details -->
27
+ <?php } }
28
+ if ($tw_users!==0) { ?>
29
+ <button id='<?php echo $an; ?>-login' class='another-account login <?php if(! CWP_TOP_PRO) echo 'pro-only'?>' service='<?php echo $an; ?>'>+</button>
30
+ <?php } else { ?>
31
+ <button id='<?php echo $an; ?>-login' class='login <?php $this->checkVersion(); ?> <?php if($pro && !CWP_TOP_PRO) echo 'pro-only'?>' service='<?php echo $an; ?>'> <?php _e("Add Account", 'tweet-old-post') ?> </button>
32
+ <?php } ?>
33
+ </div><!-- end .right -->
34
+ </fieldset><!-- end .option -->
35
+
36
+ <?php
37
+ }
38
+ ?>
39
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/view-exclude.php CHANGED
@@ -1,25 +1,25 @@
1
- <?php $twp_obj = new CWP_TOP_Core; ?>
2
- <div class="cwp_top_wrapper_full cwp_top_wrapper">
3
- <div class="announcement clearfix">
4
- <h2><?php _e("After 6 months of hard work, we have just released", CWP_TEXTDOMAIN); ?> <b>ThemeIsle</b>, <?php _e("the island of WordPress themes.", CWP_TEXTDOMAIN); ?></h2>
5
- <a class="show-me" href="https://themeisle.com/?utm_source=topadmin&utm_medium=announce&utm_campaign=top"><?php _e("Show Me", CWP_TEXTDOMAIN); ?></a>
6
- </div><!-- end .announcement -->
7
-
8
- <header id="cwp_top_header" class='clearfix'>
9
- <h1 class="top-logo" style="float:left">
10
- <?php if (CWP_TOP_PRO) {
11
- echo "Revive Old Post PRO";
12
- } else echo "Revive Old Post"; ?>
13
-
14
- </h1>
15
- <span class="slogan"><?php _e("by", CWP_TEXTDOMAIN); ?> <a href="https://themeisle.com/?utm_source=topadmin&utm_medium=announce&utm_campaign=top">ThemeIsle</a></span>
16
-
17
- <div class="cwp_top_actions">
18
- <a href="https://twitter.com/intent/tweet?text=Check-out%20this%20awesome%20plugin%20-%20&url=http%3A%2F%2Fthemeisle.com%2Fplugins%2Ftweet-old-post-lite%2F&via=themeisle" class="tweet-about-it"><span></span> <?php _e("Show your love", CWP_TEXTDOMAIN); ?></a>
19
- <a target="_blank" href="http://wordpress.org/support/view/plugin-reviews/tweet-old-post#postform" class="leave-a-review"><span></span> <?php _e("Leave A Review", CWP_TEXTDOMAIN); ?></a>
20
- </div><!-- end .cwp_top_actions -->
21
- </header><!-- end .cwp_top_header -->
22
-
23
- <section class="cwp_top_container clearfix">
24
-
25
-
1
+ <?php $twp_obj = new CWP_TOP_Core; ?>
2
+ <div class="cwp_top_wrapper_full cwp_top_wrapper">
3
+ <div class="announcement clearfix">
4
+ <h2><?php _e("After 6 months of hard work, we have just released", 'tweet-old-post'); ?> <b>ThemeIsle</b>, <?php _e("the island of WordPress themes.", 'tweet-old-post'); ?></h2>
5
+ <a class="show-me" href="https://themeisle.com/?utm_source=topadmin&utm_medium=announce&utm_campaign=top"><?php _e("Show Me", 'tweet-old-post'); ?></a>
6
+ </div><!-- end .announcement -->
7
+
8
+ <header id="cwp_top_header" class='clearfix'>
9
+ <h1 class="top-logo" style="float:left">
10
+ <?php if (CWP_TOP_PRO) {
11
+ echo "Revive Old Post PRO";
12
+ } else echo "Revive Old Post"; ?>
13
+
14
+ </h1>
15
+ <span class="slogan"><?php _e("by", 'tweet-old-post'); ?> <a href="https://themeisle.com/?utm_source=topadmin&utm_medium=announce&utm_campaign=top">ThemeIsle</a></span>
16
+
17
+ <div class="cwp_top_actions">
18
+ <a href="https://twitter.com/intent/tweet?text=Check-out%20this%20awesome%20plugin%20-%20&url=http%3A%2F%2Fthemeisle.com%2Fplugins%2Ftweet-old-post-lite%2F&via=themeisle" class="tweet-about-it"><span></span> <?php _e("Show your love", 'tweet-old-post'); ?></a>
19
+ <a target="_blank" href="http://wordpress.org/support/view/plugin-reviews/tweet-old-post#postform" class="leave-a-review"><span></span> <?php _e("Leave A Review", 'tweet-old-post'); ?></a>
20
+ </div><!-- end .cwp_top_actions -->
21
+ </header><!-- end .cwp_top_header -->
22
+
23
+ <section class="cwp_top_container clearfix">
24
+
25
+
inc/view-postformat.php CHANGED
@@ -1,45 +1,45 @@
1
- <?php
2
- global $cwp_top_networks;
3
- global $cwp_global_schedule;
4
- ?><div class="cwp_top_tabs_vertical">
5
- <ul class="cwp_top_tabs_btns">
6
- <?php $first = true; foreach($cwp_top_networks as $network_name=>$network_details) { ?>
7
- <li <?php if($first){ ?>class="active" <?php }else{
8
-
9
- if($network_name == 'linkedin' && !CWP_TOP_PRO) echo 'class="pro-version"';
10
-
11
- } ?> <?php ?>><?php echo $network_name; ?></li>
12
-
13
- <?php $first = false; } ?>
14
-
15
- </ul>
16
-
17
- <?php $first = true; foreach($cwp_top_networks as $network_name=>$network_details) { ?>
18
-
19
- <div class="tab-vertical <?php if($first){ ?> active <?php } ?>">
20
-
21
- <?php foreach ($network_details as $key=>$field) {
22
- $field['option'] = $network_name."_".$field['option'];
23
- ?>
24
- <fieldset class="option twp<?php echo $key; ?>" <?php if(isset($field['dependency'])) { ?> data-dependent='<?php echo json_encode($field['dependency']); ?>' <?php } ?>>
25
- <div class="left">
26
- <label for="<?php echo $field['option']; ?>"> <?php _e( $field['name'], CWP_TEXTDOMAIN ); ?> </label>
27
- <span class="description"> <?php _e( $field['description'], CWP_TEXTDOMAIN ); ?> <?php if($field['type'] == 'number'):
28
- ?>(<?php _e("Max",CWP_TEXTDOMAIN); ?>: <?php echo $field['max-length']; ?>)<?php
29
- endif;?> </span>
30
-
31
- <?php if($field['type'] == 'categories-list') { ?>
32
- <button class='select-all'><?php _e( "Select All", CWP_TEXTDOMAIN );?></button>
33
- <?php } ?>
34
-
35
- </div><!-- end .left -->
36
- <div class="right">
37
- <?php CWP_TOP_Core::generateFieldType( $field ); ?>
38
- </div><!-- end .right -->
39
- </fieldset><!-- end .option -->
40
- <?php } ?>
41
- </div>
42
- <?php $first = false; } ?>
43
-
44
-
45
  </div>
1
+ <?php
2
+ global $cwp_global_schedule;
3
+ $cfgnets = $this->getAllNetworks(true);
4
+ ?><div class="cwp_top_tabs_vertical">
5
+ <ul class="cwp_top_tabs_btns">
6
+ <?php $first = true; foreach($format_fields as $network_name=>$network_details) { ?>
7
+ <li <?php if($first){ ?>class="active" <?php }else{
8
+
9
+ if($cfgnets[$network_name] && !CWP_TOP_PRO) echo 'class="pro-version"';
10
+
11
+ } ?> <?php ?>><?php echo $network_name; ?></li>
12
+
13
+ <?php $first = false; } ?>
14
+
15
+ </ul>
16
+
17
+ <?php $first = true; foreach($format_fields as $network_name=>$network_details) { ?>
18
+
19
+ <div class="tab-vertical <?php if($first){ ?> active <?php } ?>">
20
+
21
+ <?php foreach ($network_details as $key=>$field) {
22
+ $field['option'] = $network_name."_".$field['option'];
23
+ ?>
24
+ <fieldset class="option twp<?php echo $key; ?>" <?php if(isset($field['dependency'])) { ?> data-dependent='<?php echo json_encode($field['dependency']); ?>' <?php } ?>>
25
+ <div class="left">
26
+ <label for="<?php echo $field['option']; ?>"> <?php _e( $field['name'], 'tweet-old-post' ); ?> </label>
27
+ <span class="description"> <?php _e( $field['description'], 'tweet-old-post' ); ?> <?php if($field['type'] == 'number'):
28
+ ?>(<?php _e("Max",'tweet-old-post'); ?>: <?php echo $field['max-length']; ?>)<?php
29
+ endif;?> </span>
30
+
31
+ <?php if($field['type'] == 'categories-list') { ?>
32
+ <button class='select-all'><?php _e( "Select All", 'tweet-old-post' );?></button>
33
+ <?php } ?>
34
+
35
+ </div><!-- end .left -->
36
+ <div class="right">
37
+ <?php CWP_TOP_Core::generateFieldType( $field ); ?>
38
+ </div><!-- end .right -->
39
+ </fieldset><!-- end .option -->
40
+ <?php } ?>
41
+ </div>
42
+ <?php $first = false; } ?>
43
+
44
+
45
  </div>
inc/view-postschedule.php CHANGED
@@ -1,84 +1,85 @@
1
- <?php
2
- global $cwp_top_networks;
3
- global $cwp_top_global_schedule;
4
- ?><div class="cwp_top_tabs_vertical">
5
- <ul class="cwp_top_tabs_btns">
6
- <?php $first = true; foreach($cwp_top_networks as $network_name=>$network_details) { ?>
7
- <li <?php if($first){ ?>class="active" <?php } ?> <?php ?>><?php echo $network_name; ?></li>
8
- <?php $first = false; } ?>
9
-
10
- </ul>
11
-
12
- <?php $first = true; foreach($cwp_top_networks as $network_name=>$network_details) { ?>
13
-
14
- <div class="tab-vertical <?php if($first){ ?> active <?php } ?>" data-network="<?php echo $network_name; ?>">
15
- <input type="hidden" value="<?php echo @$cwp_top_global_schedule[$network_name.'_schedule_type_selected'];?>" id="<?php echo $network_name.'_schedule_type_selected' ?>" name="<?php echo $network_name.'_schedule_type_selected' ?>" />
16
- <input type="hidden" value="<?php echo isset($cwp_top_global_schedule[$network_name.'_top_opt_interval']['days']) ? $cwp_top_global_schedule[$network_name.'_top_opt_interval']['days'] : '1,2,3,4,5,6,7'; ?>" id="<?php echo $network_name.'_top_schedule_days' ?>" name="<?php echo $network_name.'_top_schedule_days'; ?>" />
17
- <div class="cwp-according-item cwp-populate-hidden-radio <?php if( $cwp_top_global_schedule[$network_name.'_schedule_type_selected'] == 'each'): ?> active <?php endif; ?>" data-hidden="<?php echo $network_name.'_schedule_type_selected' ?>" data-value="each" >
18
- <div class="cwp-according-header cwp-populate-hidden-radio" data-hidden="<?php echo $network_name.'_schedule_type_selected' ?>" data-value="each">
19
- <span> <?php _e("Each x hours", CWP_TEXTDOMAIN); ?></span>
20
- </div>
21
- <div class="cwp-according-body">
22
- <fieldset class="option twpinterval" >
23
- <div class="left">
24
- <label for="<?php echo $network_name;?>_top_opt_interval"> <?php _e( "Interval", CWP_TEXTDOMAIN ); ?> </label>
25
- <span class="description"> <?php _e('Minimum time between shares (Hour/Hours), 0.4 can be used also.', CWP_TEXTDOMAIN)?> </span>
26
-
27
- </div><!-- end .left -->
28
- <div class="right">
29
-
30
- <?php CWP_TOP_Core::generateFieldType(array(
31
- 'id' => '14',
32
- 'name' => __('Minimum interval between shares', CWP_TEXTDOMAIN),
33
- 'type' => 'text',
34
- 'slug' => 'interval',
35
- 'option_value' =>($cwp_top_global_schedule[$network_name.'_schedule_type_selected'] == 'each') ? $cwp_top_global_schedule[$network_name.'_top_opt_interval'] : '8',
36
- "available_pro" => "yes",
37
- 'option' => $network_name.'_top_opt_interval',
38
- 'description' => __('Minimum time between shares (Hour/Hours), 0.4 can be used also.', CWP_TEXTDOMAIN),
39
- 'options' => array()
40
- )); ?>
41
- </div><!-- end .right -->
42
- </fieldset><!-- end .option -->
43
-
44
- </div>
45
-
46
- </div>
47
- <div class="cwp-according-item <?php if( $cwp_top_global_schedule[$network_name.'_schedule_type_selected'] == 'custom'): ?> active <?php endif; ?>" >
48
- <div class="cwp-according-header cwp-populate-hidden-radio" data-hidden="<?php echo $network_name.'_schedule_type_selected' ?>" data-value="custom">
49
-
50
- <span><?php _e("Custom Schedule", CWP_TEXTDOMAIN); ?></span>
51
- </div>
52
- <div class="cwp-according-body">
53
- <div class="cwp-custom-schedule-days">
54
-
55
- <ul class="cwp-schedule-days clearfix cwp-populate-hidden-checkbox-group" data-hidden="<?php echo $network_name.'_top_schedule_days' ?>" >
56
- <li class=" cwp-populate-hidden-checkbox" data-value="1"><?php _e("Monday", CWP_TEXTDOMAIN); ?></li>
57
- <li class=" cwp-populate-hidden-checkbox" data-value="2"><?php _e("Tuesday", CWP_TEXTDOMAIN); ?></li>
58
- <li class=" cwp-populate-hidden-checkbox" data-value="3"><?php _e("Wednesday", CWP_TEXTDOMAIN); ?></li>
59
- <li class=" cwp-populate-hidden-checkbox" data-value="4"><?php _e("Thursday", CWP_TEXTDOMAIN); ?></li>
60
- <li class=" cwp-populate-hidden-checkbox" data-value="5"><?php _e("Friday", CWP_TEXTDOMAIN); ?></li>
61
- <li class=" cwp-populate-hidden-checkbox" data-value="6"><?php _e("Saturday", CWP_TEXTDOMAIN); ?></li>
62
- <li class=" cwp-populate-hidden-checkbox" data-value="7"><?php _e("Sunday", CWP_TEXTDOMAIN); ?></li>
63
- </ul>
64
- <p class="cwp-posts-time-info"><?php _e("Posts this "); ?><b class="cwp-posts-time-info-times"></b> <?php _e(" times every"); ?> <b class="cwp-posts-time-info-days"></b></p>
65
- <ul class="cwp-posting-times" data-times='<?php echo isset($cwp_top_global_schedule[$network_name.'_top_opt_interval']['times']) ? json_encode($cwp_top_global_schedule[$network_name.'_top_opt_interval']['times']) : "[]";?>'>
66
-
67
-
68
- </ul>
69
- <P><A href="#" class="cwp-btn cwp-primary cwp-add-posting-time"><?php _e("Add posting time",CWP_TEXTDOMAIN); ?></a></P>
70
- </div>
71
- <?php
72
- if(!CWP_TOP_PRO){
73
- echo CWP_TOP_PRO_STRING;
74
- }
75
- ?>
76
- </div>
77
-
78
- </div>
79
- </div>
80
- <?php $first = false; } ?>
81
-
82
-
83
- </div>
84
-
 
1
+ <?php
2
+ global $cwp_top_global_schedule;
3
+
4
+ ?><div class="cwp_top_tabs_vertical">
5
+ <ul class="cwp_top_tabs_btns">
6
+ <?php $first = true; foreach($all_networks as $network_name ) { ?>
7
+ <li class="<?php if($first){ ?>active <?php } ?> " ><?php echo $network_name; ?></li>
8
+ <?php $first = false; } ?>
9
+
10
+ </ul>
11
+
12
+ <?php $first = true; foreach($all_networks as $network_name ) { ?>
13
+
14
+ <div class="tab-vertical <?php if($first){ ?> active <?php } ?>" data-network="<?php echo $network_name; ?>">
15
+ <input type="hidden" value="<?php echo @$cwp_top_global_schedule[$network_name.'_schedule_type_selected'];?>" id="<?php echo $network_name.'_schedule_type_selected' ?>" name="<?php echo $network_name.'_schedule_type_selected' ?>" />
16
+ <input type="hidden" value="<?php echo isset($cwp_top_global_schedule[$network_name.'_top_opt_interval']['days']) ? $cwp_top_global_schedule[$network_name.'_top_opt_interval']['days'] : '1,2,3,4,5,6,7'; ?>" id="<?php echo $network_name.'_top_schedule_days' ?>" name="<?php echo $network_name.'_top_schedule_days'; ?>" />
17
+ <div class="cwp-according-item cwp-populate-hidden-radio <?php if( $cwp_top_global_schedule[$network_name.'_schedule_type_selected'] == 'each'): ?> active <?php endif; ?>" data-hidden="<?php echo $network_name.'_schedule_type_selected' ?>" data-value="each" >
18
+ <div class="cwp-according-header cwp-populate-hidden-radio" data-hidden="<?php echo $network_name.'_schedule_type_selected' ?>" data-value="each">
19
+ <span> <?php _e("Each x hours", 'tweet-old-post'); ?></span>
20
+ </div>
21
+ <div class="cwp-according-body">
22
+ <fieldset class="option twpinterval" >
23
+ <div class="left">
24
+ <label for="<?php echo $network_name;?>_top_opt_interval"> <?php _e( "Interval", 'tweet-old-post' ); ?> </label>
25
+ <span class="description"> <?php _e('Minimum time between shares (Hour/Hours), 0.4 can be used also.', 'tweet-old-post')?> </span>
26
+
27
+ </div><!-- end .left -->
28
+ <div class="right">
29
+
30
+ <?php CWP_TOP_Core::generateFieldType(array(
31
+ 'id' => '14',
32
+ 'name' => __('Minimum interval between shares', 'tweet-old-post'),
33
+ 'type' => 'text',
34
+ 'slug' => 'interval',
35
+ 'option_value' =>($cwp_top_global_schedule[$network_name.'_schedule_type_selected'] == 'each') ? $cwp_top_global_schedule[$network_name.'_top_opt_interval'] : '8',
36
+ "available_pro" => "yes",
37
+ "pro_text" =>CWP_TOP_PRO_BUSINESS_STRING,
38
+ 'option' => $network_name.'_top_opt_interval',
39
+ 'description' => __('Minimum time between shares (Hour/Hours), 0.4 can be used also.', 'tweet-old-post'),
40
+ 'options' => array()
41
+ )); ?>
42
+ </div><!-- end .right -->
43
+ </fieldset><!-- end .option -->
44
+
45
+ </div>
46
+
47
+ </div>
48
+ <div class="cwp-according-item <?php if( $cwp_top_global_schedule[$network_name.'_schedule_type_selected'] == 'custom'): ?> active <?php endif; ?>" >
49
+ <div class="cwp-according-header cwp-populate-hidden-radio" data-hidden="<?php echo $network_name.'_schedule_type_selected' ?>" data-value="custom">
50
+
51
+ <span><?php _e("Custom Schedule", 'tweet-old-post'); ?></span>
52
+ </div>
53
+ <div class="cwp-according-body">
54
+ <div class="cwp-custom-schedule-days">
55
+
56
+ <ul class="cwp-schedule-days clearfix cwp-populate-hidden-checkbox-group" data-hidden="<?php echo $network_name.'_top_schedule_days' ?>" >
57
+ <li class=" cwp-populate-hidden-checkbox" data-value="1"><?php _e("Monday", 'tweet-old-post'); ?></li>
58
+ <li class=" cwp-populate-hidden-checkbox" data-value="2"><?php _e("Tuesday", 'tweet-old-post'); ?></li>
59
+ <li class=" cwp-populate-hidden-checkbox" data-value="3"><?php _e("Wednesday", 'tweet-old-post'); ?></li>
60
+ <li class=" cwp-populate-hidden-checkbox" data-value="4"><?php _e("Thursday", 'tweet-old-post'); ?></li>
61
+ <li class=" cwp-populate-hidden-checkbox" data-value="5"><?php _e("Friday", 'tweet-old-post'); ?></li>
62
+ <li class=" cwp-populate-hidden-checkbox" data-value="6"><?php _e("Saturday", 'tweet-old-post'); ?></li>
63
+ <li class=" cwp-populate-hidden-checkbox" data-value="7"><?php _e("Sunday", 'tweet-old-post'); ?></li>
64
+ </ul>
65
+ <p class="cwp-posts-time-info"><?php _e("Posts this "); ?><b class="cwp-posts-time-info-times"></b> <?php _e(" times every"); ?> <b class="cwp-posts-time-info-days"></b></p>
66
+ <ul class="cwp-posting-times" data-times='<?php echo isset($cwp_top_global_schedule[$network_name.'_top_opt_interval']['times']) ? json_encode($cwp_top_global_schedule[$network_name.'_top_opt_interval']['times']) : "[]";?>'>
67
+
68
+
69
+ </ul>
70
+ <P><A href="#" class="cwp-btn cwp-primary cwp-add-posting-time"><?php _e("Add posting time",'tweet-old-post'); ?></a></P>
71
+ </div>
72
+ <?php
73
+ if(!CWP_TOP_PRO){
74
+ _e(CWP_TOP_PRO_BUSINESS_STRING,'tweet-old-post');
75
+ }
76
+ ?>
77
+ </div>
78
+
79
+ </div>
80
+ </div>
81
+ <?php $first = false; } ?>
82
+
83
+
84
+ </div>
85
+
inc/view.php CHANGED
@@ -1,262 +1,382 @@
1
- <?php
2
- global $cwp_top_networks;
3
- $remote_check = get_option("cwp_rop_remote_trigger");
4
- if($remote_check === false) $remote_check = "off";
5
- ?>
6
- <div class="cwp_top_wrapper">
7
- <!--<div class="announcement clearfix">
8
- <h2><?php _e("After 6 months of hard work, we have just released", CWP_TEXTDOMAIN); ?> <b>ThemeIsle</b>, <?php _e("the island of WordPress themes.", CWP_TEXTDOMAIN); ?></h2>
9
- <a class="show-me" href="https://themeisle.com/?utm_source=topadmin&utm_medium=announce&utm_campaign=top"><?php _e("Show Me", CWP_TEXTDOMAIN); ?></a>
10
- </div> end .announcement -->
11
-
12
- <header id="cwp_top_header" class='clearfix'>
13
- <h1 class="top_logo">
14
- <?php if (CWP_TOP_PRO) {
15
- echo "Revive Old Post PRO";
16
- } else echo "Revive Old Post"; ?>
17
-
18
- </h1>
19
- <span class="slogan"><?php _e("by", CWP_TEXTDOMAIN); ?> <a href="https://themeisle.com/?utm_source=topadmin&utm_medium=announce&utm_campaign=top">ThemeIsle</a></span>
20
-
21
- <div class="cwp_top_actions">
22
- <span class="cwp-remote-check-info">Remote check</span> <a class="on-off-button <?php echo $remote_check; ?>" id="cwp_remote_check"></a>
23
- <a href="https://twitter.com/intent/tweet?text=Check-out%20this%20awesome%20plugin%20-%20&url=http%3A%2F%2Fthemeisle.com%2Fplugins%2Ftweet-old-post-lite%2F&via=themeisle" class="tweet-about-it"><span></span> <?php _e("Show your love", CWP_TEXTDOMAIN); ?></a>
24
- <a target="_blank" href="http://wordpress.org/support/view/plugin-reviews/tweet-old-post#postform" class="leave-a-review"><span></span> <?php _e("Leave A Review", CWP_TEXTDOMAIN); ?></a>
25
- </div><!-- end .cwp_top_actions -->
26
- </header><!-- end .cwp_top_header -->
27
-
28
- <section class="cwp_top_container clearfix">
29
-
30
-
31
- <div class="cwp_top_status">
32
-
33
- <?php if($this->pluginStatus != 'true') { ?>
34
- <p class='inactive'>
35
- <?php _e("Revive Old Post is not set to post!", CWP_TEXTDOMAIN); ?>
36
- </p>
37
- <?php } ?>
38
- <p class='inactive cwp-error-label inactive-rop-error-label'>
39
-
40
- <?php
41
- _e("Here you can see errors and notifications if they exist.", CWP_TEXTDOMAIN);
42
-
43
- ?>
44
- </p>
45
- <p class='active-rop-error-label cwp-error-label'>
46
-
47
- </p>
48
-
49
- </div><!-- end .cwp_top_status -->
50
- <div id="cwp-top-container-form" class="clearfix">
51
- <div id="cwp_top_tabs" class="clearfix">
52
- <ul id="tabs_menu">
53
- <li class="active" > <?php _e('Accounts',CWP_TEXTDOMAIN); ?> </li>
54
- <li > <?php _e('General settings',CWP_TEXTDOMAIN); ?> </li>
55
- <li ><?php _e('Post Format',CWP_TEXTDOMAIN); ?></li>
56
- <li <?php if(!CWP_TOP_PRO): ?> class="pro-version" <?php endif; ?>><?php _e('Custom Schedule',CWP_TEXTDOMAIN); ?></li>
57
- <li class="rop-error-log"><span class="no-error"> </span></span><?php _e('Log',CWP_TEXTDOMAIN); ?></li>
58
-
59
- </ul>
60
-
61
- <form action="" method="post" id="cwp_top_form" class="clearfix">
62
-
63
-
64
- <div class="tab active"><?php require_once(ROPPLUGINPATH."/inc/view-accounts.php"); ?></div>
65
- <div class="tab">
66
-
67
-
68
- <?php foreach ($cwp_top_fields as $field) {
69
-
70
- if(CWP_TOP_PRO){
71
- if(isset($field['available_pro'])){
72
- if($field['available_pro'] == 'no')
73
- continue ;
74
-
75
- }
76
-
77
- }
78
-
79
- ?>
80
-
81
- <fieldset class="option twp<?php echo $field['option']; ?>" >
82
- <div class="left">
83
- <label for="<?php echo $field['option']; ?>"> <?php _e($field['name'],CWP_TEXTDOMAIN); ?> </label>
84
- <span class="description"> <?php _e($field['description'],CWP_TEXTDOMAIN); ?> </span>
85
-
86
- <?php if($field['type'] == 'categories-list') { ?>
87
- <button class='select-all'><?php _e("Select All",CWP_TEXTDOMAIN);?></button>
88
- <?php } ?>
89
-
90
- </div><!-- end .left -->
91
- <div class="right">
92
- <?php CWP_TOP_Core::generateFieldType( $field ); ?>
93
- </div><!-- end .right -->
94
- </fieldset><!-- end .option -->
95
- <?php } ?>
96
-
97
-
98
- </div>
99
-
100
- <div class="tab"><?php require_once(ROPPLUGINPATH."/inc/view-postformat.php"); ?></div>
101
- <div class="tab"><?php require_once(ROPPLUGINPATH."/inc/view-postschedule.php"); ?></div>
102
- <div class="tab clearfix">
103
- <div class="rop-log-container clearfix">
104
-
105
- <a href="#" id="rop-clear-log"><?php _e('Clear Log',CWP_TEXTDOMAIN); ?></a>
106
- <ul id="rop-log-list">
107
-
108
-
109
- </ul>
110
- </div>
111
- </div>
112
- <!-- end #cwp_top_form -->
113
- </div><div class="cwp_top_footer">
114
- <a class="reset-settings" id="reset-settings" href="#"><span></span> <?php _e("Reset", CWP_TEXTDOMAIN); ?></a>
115
- <a class="update-options" id="update-options"href="#"><span></span><?php _e("Save", CWP_TEXTDOMAIN); ?></a>
116
- <?php if($this->pluginStatus != 'true' ): ?>
117
-
118
- <a class="tweet-now" id="tweet-now" href="#"><span></span> <?php _e("Start Sharing", CWP_TEXTDOMAIN); ?></a>
119
- <?php else: ?>
120
-
121
- <a class="stop-tweet-old-post" id="stop-tweet-old-post" href="#"><span></span> <?php _e("Stop Sharing", CWP_TEXTDOMAIN); ?></a>
122
-
123
- <?php endif; ?>
124
- <a class="see-sample-tweet" id="see-sample-tweet" href="#"><span></span> <?php _e("See Sample Post", CWP_TEXTDOMAIN); ?></a>
125
- </div><!-- end .cwp_top_footer -->
126
- <p><?php _e("We are not affiliated or partner with Twitter/Facebook/Linkedin in any way.", CWP_TEXTDOMAIN); ?></p>
127
- </form></div>
128
- <aside class="sidebar">
129
- <ul>
130
- <li class="rop-twitter-clock" data-current="<?php echo $this->getTime(); ?>"><?php echo __("Now is: ",CWP_TEXTDOMAIN)." <b> </b> " ?></li>
131
- <?php
132
- if($this->pluginStatus == 'true' ): ?>
133
- <?php
134
- foreach($cwp_top_networks as $nn=>$nd) {
135
- if(wp_next_scheduled($nn.'roptweetcron',array($nn)) === false) continue;
136
- ?>
137
- <li class="rop-twitter-countdown rop-network-countdown"><?php echo __("Revive Old Post will post on",CWP_TEXTDOMAIN)." <span class='rop-network-name'>".$nn."</span> ".__("in the next",CWP_TEXTDOMAIN); ?>: <span data-timestamp="<?php echo wp_next_scheduled($nn.'roptweetcron',array($nn)) ; ?>" class='rop-network-timestamp'></span></li>
138
- <?php } ?>
139
-
140
- <?php endif; ?>
141
- <li class="upgrade"><a target="_blank" href="https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=bannerright&utm_medium=announce&utm_campaign=top&upgrade=true"> <?php _e("Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!", CWP_TEXTDOMAIN); ?></a></li>
142
- <li class="sib"><a target="_blank" href="https://www.sendinblue.com/?utm_source=rop&utm_medium=display&utm_campaign=iplugins&utm_content=free"> <?php _e("ThemeIsle - Deadly Simple WordPress Themes", CWP_TEXTDOMAIN); ?></a></li>
143
- <li class="affiliate-readythemes"><a target="_blank" href="https://themeisle.com/contact/?utm_source=bannerright&utm_medium=announce&utm_campaign=top"> <?php _e("ThemeIsle - Promote Our Themes and Plugins and get 55% Comission", CWP_TEXTDOMAIN); ?></a></li>
144
- </ul>
145
- </aside><!-- end .sidebar -->
146
- </section><!-- end .cwp_top_container -->
147
-
148
- <div class="cwp_sample_tweet_preview">
149
- <div class="cwp_sample_tweet_preview_inner">
150
- <h2><?php _e('Sample Post Preview',CWP_TEXTDOMAIN);?> Twitter</h2>
151
- <span class="sample_tweet sample_tweet_twitter"></span>
152
- <h2><?php _e('Sample Post Preview',CWP_TEXTDOMAIN);?> Facebook</h2>
153
- <span class="sample_tweet sample_tweet_facebook"></span>
154
- <h2><?php _e('Sample Post Preview',CWP_TEXTDOMAIN);?> LinkedIn</h2>
155
- <span class="sample_tweet sample_tweet_linkedin"></span>
156
- <button class="top_close_popup"><?php _e('Close preview',CWP_TEXTDOMAIN);?></button>
157
- <button class="tweetitnow"><?php _e('Share now',CWP_TEXTDOMAIN);?></button>
158
- </div><!-- end .cwp_sample_tweet_preview_inner -->
159
- </div><!-- end .cwp_sample_tweet_preview -->
160
-
161
- <div class="cwp_user_pages">
162
- <div class="cwp_sample_tweet_preview_inner">
163
- <h2><?php _e('Choose a Profile or Page',CWP_TEXTDOMAIN);?></h2>
164
- <div class="cwp_user_pages_inner"></div>
165
- <button class="top_close_popup"><?php _e('Close preview',CWP_TEXTDOMAIN);?></button>
166
- </div><!-- end .cwp_sample_tweet_preview_inner -->
167
- </div><!-- end .cwp_sample_tweet_preview -->
168
-
169
- <div class="cwp_fbapp_preview">
170
- <div class="cwp_sample_tweet_preview_inner top_auth_inner">
171
- <h2><?php _e('Add Your Facebook Account Following The Instructions On The Left',CWP_TEXTDOMAIN);?></h2>
172
- <span class="sample_tweet top_sample_auth">
173
- <div class="top_left_instructions">
174
- <ol>
175
- <li><?php _e('Go on',CWP_TEXTDOMAIN);?> <a href="https://developers.facebook.com/apps/" target="_blank">developers.facebook.com/apps</a></li>
176
- <li><?php _e('Click on <strong>Create New App</strong> from the top right corner',CWP_TEXTDOMAIN);?> </li>
177
- <li><?php _e('Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and click on Create App',CWP_TEXTDOMAIN);?> </li>
178
- <li><?php _e('Once you arrive on the app dashboard, copy your <strong>App ID</strong> and <strong>App Secret</strong> in the fields on the right',CWP_TEXTDOMAIN);?> </li>
179
- <li><?php _e('Go on Settings tab from the left sidebar menu add the contact email and click on <strong>Add Platform</strong> and select <strong>Website</strong>',CWP_TEXTDOMAIN);?> </li>
180
- <li><?php printf(__('Copy/Paste this url : <strong>%s</strong> into App Domains and Site URL fields and <strong>Save</strong>',CWP_TEXTDOMAIN),top_settings_url());?> </li>
181
- <li><?php _e('Go on Status & Review tab and set your app live from the top-right switch.',CWP_TEXTDOMAIN);?> </li>
182
- <li><?php _e('Now everything is done, click on <strong>Authorize App</strong> button.',CWP_TEXTDOMAIN);?> </li>
183
- </ol>
184
- </div>
185
- <form action="" method="post" id="cwp_top_form" class=" top_auth_form">
186
- <fieldset class="option twptop_opt_app_id">
187
- <div class="left">
188
- <label for="top_opt_app_id"><?php _e('Facebook App ID',CWP_TEXTDOMAIN);?> </label>
189
- <span class="description"><?php _e('ID from your app created on facebook website.',CWP_TEXTDOMAIN);?> </span>
190
-
191
-
192
- </div><!-- end .left -->
193
- <div class="right">
194
- <input type="text" placeholder="1487991504767913" value="<?php get_option('cwp_top_app_id');?>" name="top_opt_app_id" id="top_opt_app_id">
195
- </div><!-- end .right -->
196
- </fieldset>
197
-
198
- <fieldset class="option twptop_opt_app_secret">
199
- <div class="left">
200
- <label for="top_opt_app_secret"><?php _e('Facebook App Secret',CWP_TEXTDOMAIN);?> </label>
201
- <span class="description"><?php _e('Secret from your app created on facebook website. ',CWP_TEXTDOMAIN);?> </span>
202
-
203
- </div><!-- end .left -->
204
- <div class="right">
205
- <input type="text" placeholder="5124ea6d46e64da3c306f12812d0e4fx" value="<?php get_option('cwp_top_app_secret');?>" name="top_opt_app_secret" id="top_opt_app_secret">
206
- </div><!-- end .right -->
207
- </fieldset>
208
-
209
- <button class="top_authorize" service="facebook"><?php _e('Authorize App',CWP_TEXTDOMAIN);?></button>
210
- </form>
211
- </span><button class="top_close_popup"><?php _e('Close preview',CWP_TEXTDOMAIN);?></button>
212
- </div><!-- end .cwp_sample_tweet_preview_inner -->
213
- </div><!-- end .cwp_sample_tweet_preview -->
214
-
215
- <div class="cwp_lkapp_preview">
216
- <div class="cwp_sample_tweet_preview_inner top_auth_inner">
217
- <h2><?php _e('Add Your Linkedin Account Following The Instructions On The Left',CWP_TEXTDOMAIN);?></h2>
218
- <span class="sample_tweet top_sample_auth">
219
- <div class="top_left_instructions">
220
- <ol>
221
- <li><?php _e('Go on',CWP_TEXTDOMAIN);?> <a href="https://www.linkedin.com/secure/developer?newapp=" target="_blank">linkedin.com/secure/developer?newapp=</a></li>
222
- <li><?php _e('Enter the required details and pay special attention to the further fields :',CWP_TEXTDOMAIN);?></li>
223
- <li><?php _e('Make sure you set Live Status to LIVE',CWP_TEXTDOMAIN);?> </li>
224
- <li><?php _e('Default Scope should have r_basicprofile and rw_nus checked',CWP_TEXTDOMAIN);?></li>
225
- <li><?php printf(__('Copy/Paste this url : <strong>%s</strong> into OAuth 2.0 Redirect URLs field and <strong>Save</strong>',CWP_TEXTDOMAIN),top_settings_url());?> </li>
226
- <li><?php _e('Once all required fields are filled click on Add Application button, get the API Key and Secret Key and paste them in the fields on the right',CWP_TEXTDOMAIN);?></li>
227
-
228
- <li><?php _e('Now everything is done, click on <strong>Authorize App</strong> button.',CWP_TEXTDOMAIN);?></li>
229
- </ol>
230
- </div>
231
- <form action="" method="post" id="cwp_top_form" class=" top_auth_form">
232
- <fieldset class="option twptop_opt_app_id">
233
- <div class="left">
234
- <label for="top_opt_app_id"><?php _e('Linkedin API Key',CWP_TEXTDOMAIN);?> </label>
235
- <span class="description"><?php _e('API Key that you get once you create an app',CWP_TEXTDOMAIN);?> </span>
236
-
237
-
238
- </div><!-- end .left -->
239
- <div class="right">
240
- <input type="text" placeholder="1487991504767913" value="<?php get_option('cwp_top_lk_app_id');?>" name="top_opt_app_id" id="top_opt_app_id_lk">
241
- </div><!-- end .right -->
242
- </fieldset>
243
-
244
- <fieldset class="option twptop_opt_app_secret">
245
- <div class="left">
246
- <label for="top_opt_app_secret"><?php _e('Linkedin Secret Key',CWP_TEXTDOMAIN);?> </label>
247
- <span class="description"><?php _e('Secret Key that you get once you create an app',CWP_TEXTDOMAIN);?> </span>
248
-
249
-
250
- </div><!-- end .left -->
251
- <div class="right">
252
- <input type="text" placeholder="5124ea6d46e64da3c306f12812d0e4fx" value="<?php get_option('cwp_top_lk_app_id');?>" name="top_opt_app_secret" id="top_opt_app_secret_lk">
253
- </div><!-- end .right -->
254
- </fieldset>
255
-
256
- <button class="top_authorize" service="linkedin"><?php _e('Authorize App',CWP_TEXTDOMAIN);?></button>
257
- </form>
258
- </span><button class="top_close_popup"><?php _e('Close preview',CWP_TEXTDOMAIN);?></button>
259
- </div><!-- end .cwp_sample_tweet_preview_inner -->
260
- </div><!-- end .cwp_sample_tweet_preview -->
261
-
262
- </div><!-- end .cwp_top_wrapper -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $remote_check = $this->getRemoteCheck();
3
+ $beta_user = $this->getBetaUserStatus();
4
+ ?>
5
+ <script type="text/javascript">
6
+ var ropProAvailable = <?php
7
+ echo (CWP_TOP_PRO) ? 'true' : 'false';
8
+ ?>;
9
+ var cwpfbadd = <?php echo isset($_GET["fbadd"]) ? "true" : "false"; ?>;
10
+
11
+ </script>
12
+ <div class="cwp_top_wrapper">
13
+ <!--<div class="announcement clearfix">
14
+ <h2><?php _e("After 6 months of hard work, we have just released", 'tweet-old-post'); ?> <b>ThemeIsle</b>, <?php _e("the island of WordPress themes.", 'tweet-old-post'); ?></h2>
15
+ <a class="show-me" href="https://themeisle.com/?utm_source=topadmin&utm_medium=announce&utm_campaign=top"><?php _e("Show Me", 'tweet-old-post'); ?></a>
16
+ </div> end .announcement -->
17
+
18
+ <header id="cwp_top_header" class='clearfix'>
19
+ <h1 class="top_logo">
20
+ <?php if (CWP_TOP_PRO) {
21
+ echo "Revive Old Post PRO";
22
+ } else echo "Revive Old Post"; ?>
23
+
24
+ </h1>
25
+ <span class="slogan"><?php _e("by", 'tweet-old-post'); ?> <a href="https://themeisle.com/?utm_source=topadmin&utm_medium=announce&utm_campaign=top">ThemeIsle</a></span>
26
+
27
+ <div class="cwp_top_actions">
28
+
29
+ <a href="https://twitter.com/intent/tweet?text=Check-out%20this%20awesome%20plugin%20-%20&url=http%3A%2F%2Fthemeisle.com%2Fplugins%2Ftweet-old-post-lite%2F&via=themeisle" class="tweet-about-it"><span></span> <?php _e("Show your love", 'tweet-old-post'); ?></a>
30
+ <a target="_blank" href="http://wordpress.org/support/view/plugin-reviews/tweet-old-post#postform" class="leave-a-review"><span></span> <?php _e("Leave A Review", 'tweet-old-post'); ?></a>
31
+ </div><!-- end .cwp_top_actions -->
32
+ </header><!-- end .cwp_top_header -->
33
+
34
+ <section class="cwp_top_container clearfix">
35
+
36
+
37
+ <div class="cwp_top_status">
38
+
39
+ <?php if($this->pluginStatus != 'true') { ?>
40
+ <p class='inactive'>
41
+ <?php _e("Revive Old Post is not set to post!", 'tweet-old-post'); ?>
42
+ </p>
43
+ <?php } ?>
44
+ <p class='inactive cwp-error-label inactive-rop-error-label'>
45
+
46
+ <?php
47
+ _e("Here you can see errors and notifications if they exist.", 'tweet-old-post');
48
+
49
+ ?>
50
+ </p>
51
+ <p class='active-rop-error-label cwp-error-label'>
52
+
53
+ </p>
54
+
55
+ </div><!-- end .cwp_top_status -->
56
+ <div id="cwp-top-container-form" class="clearfix">
57
+ <div id="cwp_top_tabs" class="clearfix">
58
+ <ul id="tabs_menu">
59
+ <li class="active" > <?php _e('Accounts','tweet-old-post'); ?> </li>
60
+ <li > <?php _e('General settings','tweet-old-post'); ?> </li>
61
+ <li ><?php _e('Post Format','tweet-old-post'); ?></li>
62
+ <li <?php if(!CWP_TOP_PRO): ?> class="pro-version" <?php endif; ?>><?php _e('Custom Schedule','tweet-old-post'); ?></li>
63
+ <li class="rop-error-log"><span class="no-error"> </span></span><?php _e('Log','tweet-old-post'); ?></li>
64
+
65
+ </ul>
66
+
67
+ <form action="" method="post" id="cwp_top_form" class="clearfix">
68
+
69
+
70
+ <div class="tab active"><?php require_once(ROPPLUGINPATH."/inc/view-accounts.php"); ?></div>
71
+ <div class="tab">
72
+
73
+
74
+ <?php foreach ($cwp_top_fields as $field) {
75
+
76
+ if(CWP_TOP_PRO){
77
+ if(isset($field['available_pro'])){
78
+ if($field['available_pro'] == 'no')
79
+ continue ;
80
+
81
+ }
82
+
83
+ }
84
+
85
+ ?>
86
+
87
+ <fieldset class="option twp<?php echo $field['option']; ?>" >
88
+ <div class="left">
89
+ <label for="<?php echo $field['option']; ?>"> <?php _e($field['name'],'tweet-old-post'); ?> </label>
90
+ <span class="description"> <?php _e($field['description'],'tweet-old-post'); ?> </span>
91
+
92
+ <?php if($field['type'] == 'categories-list') { ?>
93
+ <button class='select-all'><?php _e("Select All",'tweet-old-post');?></button>
94
+ <?php } ?>
95
+
96
+ </div><!-- end .left -->
97
+ <div class="right">
98
+ <?php CWP_TOP_Core::generateFieldType( $field ); ?>
99
+ </div><!-- end .right -->
100
+ </fieldset><!-- end .option -->
101
+ <?php } ?>
102
+
103
+
104
+ </div>
105
+
106
+ <div class="tab"><?php require_once(ROPPLUGINPATH."/inc/view-postformat.php"); ?></div>
107
+ <div class="tab"><?php require_once(ROPPLUGINPATH."/inc/view-postschedule.php"); ?></div>
108
+ <div class="tab clearfix">
109
+ <div class="rop-log-container clearfix">
110
+
111
+ <a href="#" id="rop-clear-log"><?php _e('Clear Log','tweet-old-post'); ?></a>
112
+ <ul id="rop-log-list">
113
+
114
+
115
+ </ul>
116
+ </div>
117
+ </div>
118
+ <!-- end #cwp_top_form -->
119
+ </div><div class="cwp_top_footer">
120
+ <a class="reset-settings" id="reset-settings" href="#"><span></span> <?php _e("Reset", 'tweet-old-post'); ?></a>
121
+ <a class="update-options" id="update-options"href="#"><span></span><?php _e("Save", 'tweet-old-post'); ?></a>
122
+ <?php if($this->pluginStatus != 'true' ): ?>
123
+
124
+ <a class="tweet-now" id="tweet-now" href="#"><span></span> <?php _e("Start Sharing", 'tweet-old-post'); ?></a>
125
+ <?php else: ?>
126
+
127
+ <a class="stop-tweet-old-post" id="stop-tweet-old-post" href="#"><span></span> <?php _e("Stop Sharing", 'tweet-old-post'); ?></a>
128
+
129
+ <?php endif; ?>
130
+ <a class="see-sample-tweet" id="see-sample-tweet" href="#"><span></span> <?php _e("See Sample Post", 'tweet-old-post'); ?></a>
131
+ </div><!-- end .cwp_top_footer -->
132
+ <p><?php _e("We are not affiliated or partner with Twitter/Facebook/Linkedin in any way.", 'tweet-old-post'); ?></p>
133
+ </form></div>
134
+ <aside class="sidebar">
135
+ <ul>
136
+ <li class="rop-twitter-clock" data-current="<?php echo $this->getTime(); ?>"><?php echo __("Now is: ",'tweet-old-post')." <b> </b> " ?></li>
137
+ <?php
138
+ if($this->pluginStatus == 'true' ): ?>
139
+ <?php
140
+ foreach($all_networks as $nn) {
141
+ if(wp_next_scheduled($nn.'roptweetcron',array($nn)) === false) continue;
142
+ ?>
143
+ <li class="rop-twitter-countdown rop-network-countdown"><?php echo __("Revive Old Post will post on",'tweet-old-post')." <span class='rop-network-name'>".$nn."</span> ".__("in the next",'tweet-old-post'); ?>: <span data-timestamp="<?php echo wp_next_scheduled($nn.'roptweetcron',array($nn)) ; ?>" class='rop-network-timestamp'></span></li>
144
+ <?php } ?>
145
+ <?php endif; ?>
146
+ <li class="rop-beta-user"><div class="rop-left"><?php _e("Beta user",'tweet-old-post');?> </div><a href="#" id="rop-beta-button" class="rop-right <?php echo $beta_user; ?>"></a><div class="rop-clear" ></div><span class="rop-beta-desc"><?php _e("As a beta user you will have access to the latest stable releases before going to production",'tweet-old-post');?></span></li>
147
+ <li class="rop-beta-user"><div class="rop-left"><?php _e("Remote check",'tweet-old-post');?></div><a href="#" id="cwp_remote_check" class="<?php echo $remote_check; ?> rop-right "></a><div class="rop-clear" ></div><span class="rop-beta-desc"><?php _e("We will send you a ping each 15 minutes in order to assure that posts will be sent to social networks on time. ",'tweet-old-post');?> </span> </li>
148
+ <li class="upgrade"><a target="_blank" href="https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=bannerright&utm_medium=announce&utm_campaign=top&upgrade=true"> <?php _e("Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!", 'tweet-old-post'); ?></a></li>
149
+
150
+ </ul>
151
+ </aside><!-- end .sidebar -->
152
+ </section><!-- end .cwp_top_container -->
153
+
154
+ <div class="cwp_sample_tweet_preview">
155
+ <div class="cwp_sample_tweet_preview_inner">
156
+ <h2><?php _e('Sample Post Preview','tweet-old-post');?> Twitter</h2>
157
+ <span class="sample_tweet sample_tweet_twitter"></span>
158
+ <h2><?php _e('Sample Post Preview','tweet-old-post');?> Facebook</h2>
159
+ <span class="sample_tweet sample_tweet_facebook"></span>
160
+ <h2><?php _e('Sample Post Preview','tweet-old-post');?> LinkedIn</h2>
161
+ <span class="sample_tweet sample_tweet_linkedin"></span>
162
+ <h2><?php _e('Sample Post Preview','tweet-old-post');?> XING</h2>
163
+ <span class="sample_tweet sample_tweet_xing"></span>
164
+ <h2><?php _e('Sample Post Preview','tweet-old-post');?> Tumblr</h2>
165
+ <span class="sample_tweet sample_tweet_tumblr"></span>
166
+ <button class="top_close_popup"><?php _e('Close preview','tweet-old-post');?></button>
167
+ <button class="tweetitnow"><?php _e('Share now','tweet-old-post');?></button>
168
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
169
+ </div><!-- end .cwp_sample_tweet_preview -->
170
+
171
+ <div class="cwp_user_pages">
172
+ <div class="cwp_sample_tweet_preview_inner">
173
+ <h2><?php _e('Choose a Profile or Page','tweet-old-post');?></h2>
174
+ <div class="cwp_user_pages_inner"></div>
175
+ <button class="top_close_popup"><?php _e('Close preview','tweet-old-post');?></button>
176
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
177
+ </div><!-- end .cwp_sample_tweet_preview -->
178
+
179
+ <div class="cwp_fbapp_preview">
180
+ <div class="cwp_sample_tweet_preview_inner top_auth_inner">
181
+ <h2><?php _e('Add Your Facebook Account Following The Instructions On The Left','tweet-old-post');?></h2>
182
+ <span class="sample_tweet top_sample_auth">
183
+ <div class="top_left_instructions">
184
+ <ol>
185
+ <li><?php _e('Go on','tweet-old-post');?> <a href="https://developers.facebook.com/apps/" target="_blank">developers.facebook.com/apps</a> </li>
186
+ <li><?php _e('Click on <strong>Create New App</strong> from the top right corner','tweet-old-post');?> </li>
187
+ <li><?php _e('Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and click on Create App','tweet-old-post');?> </li>
188
+ <li><?php _e('Once you arrive on the app dashboard, copy your <strong>App ID</strong> and <strong>App Secret</strong> in the fields on the right','tweet-old-post');?> </li>
189
+ <li><?php _e('Go on Settings tab from the left sidebar menu add the contact email and click on <strong>Add Platform</strong> and select <strong>Website</strong>','tweet-old-post');?> </li>
190
+ <li><?php printf(__('Copy/Paste this url : <strong>%s</strong> into App Domains and Site URL fields and <strong>Save</strong>','tweet-old-post'),top_settings_url());?> </li>
191
+ <li><?php _e('Go on Status & Review tab and set your app live from the top-right switch.','tweet-old-post');?> </li>
192
+ <li><?php _e('Now everything is done, click on <strong>Authorize App</strong> button.','tweet-old-post');?> </li>
193
+ </ol>
194
+ <h3><?php _e('You can fallow this <a target="_blank" href="http://docs.themeisle.com/article/66-how-to-create-a-facebook-application" > tutorial</a> for more detailed instructions','tweet-old-post'); ?></h3>
195
+ </div>
196
+ <form action="" method="post" id="cwp_top_form" class=" top_auth_form">
197
+ <fieldset class="option twptop_opt_app_id">
198
+ <div class="left">
199
+ <label for="top_opt_app_id"><?php _e('Facebook App ID','tweet-old-post');?> </label>
200
+ <span class="description"><?php _e('ID from your app created on facebook website.','tweet-old-post');?> </span>
201
+
202
+
203
+ </div><!-- end .left -->
204
+ <div class="right">
205
+ <input type="text" placeholder="1487991504767913" value="<?php get_option('cwp_top_app_id');?>" name="top_opt_app_id" id="top_opt_app_id">
206
+ </div><!-- end .right -->
207
+ </fieldset>
208
+
209
+ <fieldset class="option twptop_opt_app_secret">
210
+ <div class="left">
211
+ <label for="top_opt_app_secret"><?php _e('Facebook App Secret','tweet-old-post');?> </label>
212
+ <span class="description"><?php _e('Secret from your app created on facebook website. ','tweet-old-post');?> </span>
213
+
214
+ </div><!-- end .left -->
215
+ <div class="right">
216
+ <input type="text" placeholder="5124ea6d46e64da3c306f12812d0e4fx" value="<?php get_option('cwp_top_app_secret');?>" name="top_opt_app_secret" id="top_opt_app_secret">
217
+ </div><!-- end .right -->
218
+ </fieldset>
219
+
220
+ <button class="top_authorize" service="facebook"><?php _e('Authorize App','tweet-old-post');?></button>
221
+ </form>
222
+ </span><button class="top_close_popup"><?php _e('Close preview','tweet-old-post');?></button>
223
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
224
+ </div><!-- end .cwp_sample_tweet_preview -->
225
+
226
+ <div class="cwp_not_version_preview">
227
+ <div class="cwp_sample_tweet_preview_inner top_auth_inner">
228
+ <h2><?php _e('You need to have the latest version of Revive Old Post Pro in order to use this feature. Please update it or download for your account here <a href="https://themeisle.com/purchase-history" target="_blank">https://themeisle.com/purchase-history</a>','tweet-old-post');?></h2>
229
+
230
+ </span><button class="top_close_popup"><?php _e('Close','tweet-old-post');?></button>
231
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
232
+ </div><!-- end .cwp_sample_tweet_preview -->
233
+
234
+ <div class="cwp_lkapp_preview">
235
+ <div class="cwp_sample_tweet_preview_inner top_auth_inner">
236
+ <h2><?php _e('Add Your Linkedin Account Following The Instructions On The Left','tweet-old-post');?></h2>
237
+ <span class="sample_tweet top_sample_auth">
238
+ <div class="top_left_instructions">
239
+ <ol>
240
+ <li><?php _e('Go on','tweet-old-post');?> <a href="https://www.linkedin.com/secure/developer?newapp=" target="_blank">linkedin.com/secure/developer?newapp=</a></li>
241
+ <li><?php _e('Enter the required details and pay special attention to the further fields :','tweet-old-post');?></li>
242
+ <li><?php _e('Make sure you set Live Status to LIVE','tweet-old-post');?> </li>
243
+ <li><?php _e('Default Scope should have r_basicprofile and w_share checked','tweet-old-post');?></li>
244
+ <li><?php printf(__('Copy/Paste this url : <strong>%s</strong> into OAuth 2.0 Redirect URLs field and <strong>Save</strong>','tweet-old-post'),top_settings_url());?> </li>
245
+ <li><?php _e('Once all required fields are filled click on Add Application button, get the API Key and Secret Key and paste them in the fields on the right','tweet-old-post');?></li>
246
+
247
+ <li><?php _e('Now everything is done, click on <strong>Authorize App</strong> button.','tweet-old-post');?></li>
248
+ </ol>
249
+ </div>
250
+ <form action="" method="post" id="cwp_top_form" class=" top_auth_form">
251
+ <fieldset class="option twptop_opt_app_id">
252
+ <div class="left">
253
+ <label for="top_opt_app_id"><?php _e('Linkedin API Key','tweet-old-post');?> </label>
254
+ <span class="description"><?php _e('API Key that you get once you create an app','tweet-old-post');?> </span>
255
+
256
+
257
+ </div><!-- end .left -->
258
+ <div class="right">
259
+ <input type="text" placeholder="1487991504767913" value="<?php get_option('cwp_top_lk_app_id');?>" name="top_opt_app_id" id="top_opt_app_id_lk">
260
+ </div><!-- end .right -->
261
+ </fieldset>
262
+
263
+ <fieldset class="option twptop_opt_app_secret">
264
+ <div class="left">
265
+ <label for="top_opt_app_secret"><?php _e('Linkedin Secret Key','tweet-old-post');?> </label>
266
+ <span class="description"><?php _e('Secret Key that you get once you create an app','tweet-old-post');?> </span>
267
+
268
+
269
+ </div><!-- end .left -->
270
+ <div class="right">
271
+ <input type="text" placeholder="5124ea6d46e64da3c306f12812d0e4fx" value="<?php get_option('cwp_top_lk_app_id');?>" name="top_opt_app_secret" id="top_opt_app_secret_lk">
272
+ </div><!-- end .right -->
273
+ </fieldset>
274
+
275
+ <button class="top_authorize" service="linkedin"><?php _e('Authorize App','tweet-old-post');?></button>
276
+ </form>
277
+ </span><button class="top_close_popup"><?php _e('Close preview','tweet-old-post');?></button>
278
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
279
+ </div><!-- end .cwp_sample_tweet_preview -->
280
+
281
+ <div class="cwp_xingapp_preview">
282
+ <div class="cwp_sample_tweet_preview_inner top_auth_inner">
283
+ <h2><?php _e('Add Your XING Account Following The Instructions On The Left','tweet-old-post');?></h2>
284
+ <span class="sample_tweet top_sample_auth">
285
+ <div class="top_left_instructions">
286
+ <ol>
287
+ <li><?php _e('Go on','tweet-old-post');?> <a href="https://dev.xing.com/applications/dashboard" target="_blank"> https://dev.xing.com/applications/dashboard</a></li>
288
+ <li><?php _e('If you already made an application you will see it’s info here, otherwise click “Create app” button.','tweet-old-post');?></li>
289
+ <li><?php _e("Fill 'Application Name', click 'Save'",'tweet-old-post');?> </li>
290
+ <li><?php printf(__('Copy/Paste the Consumer Key and Consumer Secret in the fields from the right. ','tweet-old-post'),top_settings_url());?> </li>
291
+
292
+ <li><?php _e('Now everything is done, click on <strong>Authorize App</strong> button.','tweet-old-post');?></li>
293
+ </ol>
294
+ </div>
295
+ <form action="" method="post" id="cwp_top_form" class=" top_auth_form">
296
+ <fieldset class="option twptop_opt_app_id">
297
+ <div class="left">
298
+ <label for="top_opt_app_id"><?php _e('Consumer Key','tweet-old-post');?> </label>
299
+ <span class="description"><?php _e('Consumer Key','tweet-old-post');?> </span>
300
+
301
+
302
+ </div><!-- end .left -->
303
+ <div class="right">
304
+ <input type="text" placeholder="Consumer Key" id="top_opt_app_id_xing">
305
+ </div><!-- end .right -->
306
+ </fieldset>
307
+
308
+ <fieldset class="option twptop_opt_app_secret">
309
+ <div class="left">
310
+ <label for="top_opt_app_secret"><?php _e('Consumer Secret','tweet-old-post');?> </label>
311
+ <span class="description"><?php _e('Consumer Secret','tweet-old-post');?> </span>
312
+
313
+
314
+ </div><!-- end .left -->
315
+ <div class="right">
316
+ <input type="text" placeholder="Consumer Secret" id="top_opt_app_secret_xing">
317
+ </div><!-- end .right -->
318
+ </fieldset>
319
+
320
+ <button class="top_authorize" service="xing"><?php _e('Authorize App','tweet-old-post');?></button>
321
+ </form>
322
+ </span><button class="top_close_popup"><?php _e('Close preview','tweet-old-post');?></button>
323
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
324
+ </div><!-- end .cwp_sample_tweet_preview -->
325
+ <div class="cwp_tumblrapp_preview">
326
+ <div class="cwp_sample_tweet_preview_inner top_auth_inner">
327
+ <h2><?php _e('Add Your Thumblr Account Following The Instructions On The Left','tweet-old-post');?></h2>
328
+ <span class="sample_tweet top_sample_auth">
329
+ <div class="top_left_instructions">
330
+ <ol>
331
+ <li><?php _e('Go on','tweet-old-post');?> <a href="https://www.tumblr.com/oauth/apps" target="_blank"> https://www.tumblr.com/oauth/apps</a></li>
332
+ <li><?php _e('If you already made an application you will see it’s info here, otherwise click “Register application” button.','tweet-old-post');?></li>
333
+ <li><?php _e("Click 'Register application'”' button. Fill 'Application Name', 'Application Website', all other fields (just enter your website URL to the 'Default callback URL') and click Register'.",'tweet-old-post');?> </li>
334
+ <li><?php printf(__('Copy/Paste the Consumer Key and Consumer Secret in the fields from the right. ','tweet-old-post'),top_settings_url());?> </li>
335
+ <li><?php printf(__('Fill URL of your Tumblr Blog. ','tweet-old-post'));?> </li>
336
+
337
+ <li><?php _e('Now everything is done, click on <strong>Authorize App</strong> button.','tweet-old-post');?></li>
338
+ </ol>
339
+ </div>
340
+ <form action="" method="post" id="cwp_top_form" class=" top_auth_form">
341
+ <fieldset class="option twptop_opt_app_id">
342
+ <div class="left">
343
+ <label for="top_opt_app_id"><?php _e('Consumer Key','tweet-old-post');?> </label>
344
+ <span class="description"><?php _e('Consumer Key','tweet-old-post');?> </span>
345
+
346
+
347
+ </div><!-- end .left -->
348
+ <div class="right">
349
+ <input type="text" placeholder="Consumer Key" id="top_opt_app_id_tumblr">
350
+ </div><!-- end .right -->
351
+ </fieldset>
352
+
353
+ <fieldset class="option twptop_opt_app_secret">
354
+ <div class="left">
355
+ <label for="top_opt_app_secret"><?php _e('Consumer Secret','tweet-old-post');?> </label>
356
+ <span class="description"><?php _e('Consumer Secret','tweet-old-post');?> </span>
357
+
358
+
359
+ </div><!-- end .left -->
360
+ <div class="right">
361
+ <input type="text" placeholder="Consumer Secret" id="top_opt_app_secret_tumblr">
362
+ </div><!-- end .right -->
363
+ </fieldset>
364
+ <fieldset class="option twptop_opt_app_secret">
365
+ <div class="left">
366
+ <label for="top_opt_app_secret"><?php _e('Tumblr url Blog','tweet-old-post');?> </label>
367
+ <span class="description"><?php _e('Tumblr url Blog','tweet-old-post');?> </span>
368
+
369
+
370
+ </div><!-- end .left -->
371
+ <div class="right">
372
+ <input type="text" placeholder="Tumblr url Blog" id="top_opt_app_url_tumblr">
373
+ </div><!-- end .right -->
374
+ </fieldset>
375
+
376
+ <button class="top_authorize" service="tumblr"><?php _e('Authorize App','tweet-old-post');?></button>
377
+ </form>
378
+ </span><button class="top_close_popup"><?php _e('Close preview','tweet-old-post');?></button>
379
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
380
+ </div><!-- end .cwp_sample_tweet_preview -->
381
+
382
+ </div><!-- end .cwp_top_wrapper -->
inc/xml.php CHANGED
@@ -1,130 +1,130 @@
1
- <?php
2
-
3
- function TOP_parsexml( $xml, $get_attributes = 1, $priority = 'tag' )
4
- {
5
- $parser = xml_parser_create('');
6
- xml_parser_set_option( $parser, XML_OPTION_TARGET_ENCODING, "UTF-8" );
7
- xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, 0 );
8
- xml_parser_set_option( $parser, XML_OPTION_SKIP_WHITE, 1 );
9
- xml_parse_into_struct( $parser, trim($xml), $xml_values );
10
- xml_parser_free($parser);
11
-
12
- if (!$xml_values)
13
- return;
14
-
15
- $xml_array = array ();
16
- $parents = array ();
17
- $opened_tags = array ();
18
- $arr = array ();
19
- $current = & $xml_array;
20
- $repeated_tag_index = array ();
21
-
22
- foreach ($xml_values as $data) {
23
- unset ($attributes, $value);
24
- extract($data);
25
- $result = array ();
26
- $attributes_data = array ();
27
- if (isset ($value))
28
- {
29
- if ($priority == 'tag')
30
- $result = $value;
31
- else
32
- $result['value'] = $value;
33
- }
34
- if (isset ($attributes) and $get_attributes)
35
- {
36
- foreach ($attributes as $attr => $val)
37
- {
38
- if ($priority == 'tag')
39
- $attributes_data[$attr] = $val;
40
- else
41
- $result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr'
42
- }
43
- }
44
- if ($type == "open")
45
- {
46
- $parent[$level -1] = & $current;
47
- if (!is_array($current) or (!in_array($tag, array_keys($current))))
48
- {
49
- $current[$tag] = $result;
50
- if ($attributes_data)
51
- $current[$tag . '_attr'] = $attributes_data;
52
- $repeated_tag_index[$tag . '_' . $level] = 1;
53
- $current = & $current[$tag];
54
- }
55
- else
56
- {
57
- if (isset ($current[$tag][0]))
58
- {
59
- $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
60
- $repeated_tag_index[$tag . '_' . $level]++;
61
- }
62
- else
63
- {
64
- $current[$tag] = array (
65
- $current[$tag],
66
- $result
67
- );
68
- $repeated_tag_index[$tag . '_' . $level] = 2;
69
- if (isset ($current[$tag . '_attr']))
70
- {
71
- $current[$tag]['0_attr'] = $current[$tag . '_attr'];
72
- unset ($current[$tag . '_attr']);
73
- }
74
- }
75
- $last_item_index = $repeated_tag_index[$tag . '_' . $level] - 1;
76
- $current = & $current[$tag][$last_item_index];
77
- }
78
- }
79
- elseif ($type == "complete")
80
- {
81
- if (!isset ($current[$tag]))
82
- {
83
- $current[$tag] = $result;
84
- $repeated_tag_index[$tag . '_' . $level] = 1;
85
- if ($priority == 'tag' and $attributes_data)
86
- $current[$tag . '_attr'] = $attributes_data;
87
- }
88
- else
89
- {
90
- if (isset ($current[$tag][0]) and is_array($current[$tag]))
91
- {
92
- $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
93
- if ($priority == 'tag' and $get_attributes and $attributes_data)
94
- {
95
- $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
96
- }
97
- $repeated_tag_index[$tag . '_' . $level]++;
98
- }
99
- else
100
- {
101
- $current[$tag] = array (
102
- $current[$tag],
103
- $result
104
- );
105
- $repeated_tag_index[$tag . '_' . $level] = 1;
106
- if ($priority == 'tag' and $get_attributes)
107
- {
108
- if (isset ($current[$tag . '_attr']))
109
- {
110
- $current[$tag]['0_attr'] = $current[$tag . '_attr'];
111
- unset ($current[$tag . '_attr']);
112
- }
113
- if ($attributes_data)
114
- {
115
- $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
116
- }
117
- }
118
- $repeated_tag_index[$tag . '_' . $level]++; //0 and 1 index is already taken
119
- }
120
- }
121
- }
122
- elseif ($type == 'close')
123
- {
124
- $current = & $parent[$level -1];
125
- }
126
- }
127
- return $xml_array;
128
- }
129
-
130
  ?>
1
+ <?php
2
+
3
+ function TOP_parsexml( $xml, $get_attributes = 1, $priority = 'tag' )
4
+ {
5
+ $parser = xml_parser_create('');
6
+ xml_parser_set_option( $parser, XML_OPTION_TARGET_ENCODING, "UTF-8" );
7
+ xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, 0 );
8
+ xml_parser_set_option( $parser, XML_OPTION_SKIP_WHITE, 1 );
9
+ xml_parse_into_struct( $parser, trim($xml), $xml_values );
10
+ xml_parser_free($parser);
11
+
12
+ if (!$xml_values)
13
+ return;
14
+
15
+ $xml_array = array ();
16
+ $parents = array ();
17
+ $opened_tags = array ();
18
+ $arr = array ();
19
+ $current = & $xml_array;
20
+ $repeated_tag_index = array ();
21
+
22
+ foreach ($xml_values as $data) {
23
+ unset ($attributes, $value);
24
+ extract($data);
25
+ $result = array ();
26
+ $attributes_data = array ();
27
+ if (isset ($value))
28
+ {
29
+ if ($priority == 'tag')
30
+ $result = $value;
31
+ else
32
+ $result['value'] = $value;
33
+ }
34
+ if (isset ($attributes) and $get_attributes)
35
+ {
36
+ foreach ($attributes as $attr => $val)
37
+ {
38
+ if ($priority == 'tag')
39
+ $attributes_data[$attr] = $val;
40
+ else
41
+ $result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr'
42
+ }
43
+ }
44
+ if ($type == "open")
45
+ {
46
+ $parent[$level -1] = & $current;
47
+ if (!is_array($current) or (!in_array($tag, array_keys($current))))
48
+ {
49
+ $current[$tag] = $result;
50
+ if ($attributes_data)
51
+ $current[$tag . '_attr'] = $attributes_data;
52
+ $repeated_tag_index[$tag . '_' . $level] = 1;
53
+ $current = & $current[$tag];
54
+ }
55
+ else
56
+ {
57
+ if (isset ($current[$tag][0]))
58
+ {
59
+ $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
60
+ $repeated_tag_index[$tag . '_' . $level]++;
61
+ }
62
+ else
63
+ {
64
+ $current[$tag] = array (
65
+ $current[$tag],
66
+ $result
67
+ );
68
+ $repeated_tag_index[$tag . '_' . $level] = 2;
69
+ if (isset ($current[$tag . '_attr']))
70
+ {
71
+ $current[$tag]['0_attr'] = $current[$tag . '_attr'];
72
+ unset ($current[$tag . '_attr']);
73
+ }
74
+ }
75
+ $last_item_index = $repeated_tag_index[$tag . '_' . $level] - 1;
76
+ $current = & $current[$tag][$last_item_index];
77
+ }
78
+ }
79
+ elseif ($type == "complete")
80
+ {
81
+ if (!isset ($current[$tag]))
82
+ {
83
+ $current[$tag] = $result;
84
+ $repeated_tag_index[$tag . '_' . $level] = 1;
85
+ if ($priority == 'tag' and $attributes_data)
86
+ $current[$tag . '_attr'] = $attributes_data;
87
+ }
88
+ else
89
+ {
90
+ if (isset ($current[$tag][0]) and is_array($current[$tag]))
91
+ {
92
+ $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
93
+ if ($priority == 'tag' and $get_attributes and $attributes_data)
94
+ {
95
+ $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
96
+ }
97
+ $repeated_tag_index[$tag . '_' . $level]++;
98
+ }
99
+ else
100
+ {
101
+ $current[$tag] = array (
102
+ $current[$tag],
103
+ $result
104
+ );
105
+ $repeated_tag_index[$tag . '_' . $level] = 1;
106
+ if ($priority == 'tag' and $get_attributes)
107
+ {
108
+ if (isset ($current[$tag . '_attr']))
109
+ {
110
+ $current[$tag]['0_attr'] = $current[$tag . '_attr'];
111
+ unset ($current[$tag . '_attr']);
112
+ }
113
+ if ($attributes_data)
114
+ {
115
+ $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
116
+ }
117
+ }
118
+ $repeated_tag_index[$tag . '_' . $level]++; //0 and 1 index is already taken
119
+ }
120
+ }
121
+ }
122
+ elseif ($type == 'close')
123
+ {
124
+ $current = & $parent[$level -1];
125
+ }
126
+ }
127
+ return $xml_array;
128
+ }
129
+
130
  ?>
js/countdown.js CHANGED
@@ -1,398 +1,398 @@
1
- var timenow="";
2
- (function() {
3
-
4
- (function($) {
5
- $.countdown = function(el, options) {
6
- var getDateData,
7
- _this = this;
8
- this.el = el;
9
- this.$el = $(el);
10
- this.$el.data("countdown", this);
11
- this.init = function() {
12
- _this.options = $.extend({}, $.countdown.defaultOptions, options);
13
- if (_this.options.refresh) {
14
- _this.interval = setInterval(function() {
15
- return _this.render();
16
- }, _this.options.refresh);
17
- }
18
- _this.render();
19
- return _this;
20
- };
21
-
22
- getDateData = function(endDate) {
23
- var dateData, diff;
24
- jQuery.ajax({
25
- type: "POST",
26
- url: cwp_top_ajaxload.ajaxurl,
27
- data: {
28
- action: "gettime_action"
29
- },
30
- success: function(response) {
31
- timenow = response;
32
- },
33
- error: function(MLHttpRequest, textStatus, errorThrown) {
34
- console.log("There was an error: "+errorThrown);
35
- }
36
- });
37
-
38
- //var timenow = new Date(<?php echo time(); ?>*1000)
39
- //var timenow = new Date( d1.getUTCFullYear(), d1.getUTCMonth(), d1.getUTCDate(), d1.getUTCHours(), d1.getUTCMinutes(), d1.getUTCSeconds() );
40
- //endDate = Date.parse($.isPlainObject(_this.options.date) ? _this.options.date : new Date(_this.options.date));
41
- endDate = _this.options.date;
42
-
43
- if (timenow == '')
44
- timenow = _this.options.date-20;
45
-
46
- diff = endDate - timenow;
47
- //diff = Math.floor(diff);
48
- if (diff <= 0) {
49
- diff = 0;
50
- if (_this.interval) {
51
- _this.stop();
52
- }
53
- _this.options.onEnd.apply(_this);
54
- }
55
- dateData = {
56
- years: 0,
57
- days: 0,
58
- hours: 0,
59
- min: 0,
60
- sec: 0,
61
- millisec: 0
62
- };
63
- if (diff >= (365.25 * 86400)) {
64
- dateData.years = Math.floor(diff / (365.25 * 86400));
65
- diff -= dateData.years * 365.25 * 86400;
66
- }
67
- if (diff >= 86400) {
68
- dateData.days = Math.floor(diff / 86400);
69
- diff -= dateData.days * 86400;
70
- }
71
- if (diff >= 3600) {
72
- dateData.hours = Math.floor(diff / 3600);
73
- diff -= dateData.hours * 3600;
74
- }
75
- if (diff >= 60) {
76
- dateData.min = Math.floor(diff / 60);
77
- diff -= dateData.min * 60;
78
- }
79
- dateData.sec = diff;
80
- return dateData;
81
- };
82
- this.leadingZeros = function(num, length) {
83
- if (length == null) {
84
- length = 2;
85
- }
86
- num = String(num);
87
- while (num.length < length) {
88
- num = "0" + num;
89
- }
90
- return num;
91
- };
92
- this.update = function(newDate) {
93
- _this.options.date = newDate;
94
- return _this;
95
- };
96
- this.render = function() {
97
- _this.options.render.apply(_this, [getDateData(_this.options.date)]);
98
- return _this;
99
- };
100
- this.stop = function() {
101
- if (_this.interval) {
102
- clearInterval(_this.interval);
103
- }
104
- _this.interval = null;
105
- jQuery(".cwp_top_container .nextTweet").html('Your post was just sent to social networks servers, wait 15s for a confirmation below. Refresh the page to see when the next one will be posted.');
106
-
107
- return _this;
108
- //return _this;
109
- };
110
- this.start = function(refresh) {
111
- if (refresh == null) {
112
- refresh = _this.options.refresh || $.countdown.defaultOptions.refresh;
113
- }
114
- if (_this.interval) {
115
- clearInterval(_this.interval);
116
- }
117
- _this.render();
118
- _this.options.refresh = refresh;
119
- _this.interval = setInterval(function() {
120
- return _this.render();
121
- }, _this.options.refresh);
122
- return _this;
123
- };
124
- return this.init();
125
- };
126
- $.countdown.defaultOptions = {
127
- date: "June 7, 2087 15:03:25",
128
- refresh: 2000,
129
- onEnd: $.noop,
130
- render: function(date) {
131
- if (date.days!=0 || date.hours!=0 || date.min!=0 || date.sec!=0)
132
- return $(this.el).html("" + date.days + " days, " + (this.leadingZeros(date.hours)) + " hours, " + (this.leadingZeros(date.min)) + " min and " + (this.leadingZeros(date.sec)) + " sec");
133
- }
134
- };
135
- $.fn.countdown = function(options) {
136
- return $.each(this, function(i, el) {
137
- var $el;
138
- $el = $(el);
139
- if (!$el.data('countdown')) {
140
- return $el.data('countdown', new $.countdown(el, options));
141
- }
142
- });
143
- };
144
- return void 0;
145
- })(jQuery);
146
-
147
- }).call(this);
148
-
149
-
150
- ;(function(factory) {
151
- 'use strict';
152
-
153
- if (typeof define === 'function' && define.amd) {
154
- define(['jquery'], factory);
155
- } else {
156
- factory(jQuery);
157
- }
158
- })(function($){
159
- 'use strict';
160
-
161
- var PRECISION = 100; // 0.1 seconds, used to update the DOM
162
- var instances = [],
163
- matchers = [];
164
- // Miliseconds
165
- matchers.push(/^[0-9]*$/.source);
166
- // Month/Day/Year [hours:minutes:seconds]
167
- matchers.push(/([0-9]{1,2}\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/
168
- .source);
169
- // Year/Day/Month [hours:minutes:seconds] and
170
- // Year-Day-Month [hours:minutes:seconds]
171
- matchers.push(/[0-9]{4}([\/\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/
172
- .source);
173
- // Cast the matchers to a regular expression object
174
- matchers = new RegExp(matchers.join('|'));
175
- // Parse a Date formatted has String to a native object
176
- function parseDateString(dateString) {
177
- // Pass through when a native object is sent
178
- if(dateString instanceof Date) {
179
- return dateString;
180
- }
181
- // Caste string to date object
182
- if(String(dateString).match(matchers)) {
183
- // If looks like a milisecond value cast to number before
184
- // final casting (Thanks to @msigley)
185
- if(String(dateString).match(/^[0-9]*$/)) {
186
- dateString = Number(dateString);
187
- }
188
- // Replace dashes to slashes
189
- if(String(dateString).match(/\-/)) {
190
- dateString = String(dateString).replace(/\-/g, '/');
191
- }
192
- return new Date(dateString);
193
- } else {
194
- throw new Error('Couldn\'t cast `' + dateString +
195
- '` to a date object.');
196
- }
197
- }
198
- // Map to convert from a directive to offset object property
199
- var DIRECTIVE_KEY_MAP = {
200
- 'Y': 'years',
201
- 'm': 'months',
202
- 'w': 'weeks',
203
- 'd': 'days',
204
- 'D': 'totalDays',
205
- 'H': 'hours',
206
- 'M': 'minutes',
207
- 'S': 'seconds'
208
- };
209
- // Returns an escaped regexp from the string
210
- function escapedRegExp(str) {
211
- var sanitize = str.toString().replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1');
212
- return new RegExp(sanitize);
213
- }
214
- // Time string formatter
215
- function strftime(offsetObject) {
216
- return function(format) {
217
- var directives = format.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);
218
- if(directives) {
219
- for(var i = 0, len = directives.length; i < len; ++i) {
220
- var directive = directives[i]
221
- .match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/),
222
- regexp = escapedRegExp(directive[0]),
223
- modifier = directive[1] || '',
224
- plural = directive[3] || '',
225
- value = null;
226
- // Get the key
227
- directive = directive[2];
228
- // Swap shot-versions directives
229
- if(DIRECTIVE_KEY_MAP.hasOwnProperty(directive)) {
230
- value = DIRECTIVE_KEY_MAP[directive];
231
- value = Number(offsetObject[value]);
232
- }
233
- if(value !== null) {
234
- // Pluralize
235
- if(modifier === '!') {
236
- value = pluralize(plural, value);
237
- }
238
- // Add zero-padding
239
- if(modifier === '') {
240
- if(value < 10) {
241
- value = '0' + value.toString();
242
- }
243
- }
244
- // Replace the directive
245
- format = format.replace(regexp, value.toString());
246
- }
247
- }
248
- }
249
- format = format.replace(/%%/, '%');
250
- return format;
251
- };
252
- }
253
- // Pluralize
254
- function pluralize(format, count) {
255
- var plural = 's', singular = '';
256
- if(format) {
257
- format = format.replace(/(:|;|\s)/gi, '').split(/\,/);
258
- if(format.length === 1) {
259
- plural = format[0];
260
- } else {
261
- singular = format[0];
262
- plural = format[1];
263
- }
264
- }
265
- if(Math.abs(count) === 1) {
266
- return singular;
267
- } else {
268
- return plural;
269
- }
270
- }
271
- // The Final Countdown
272
- var Countdown = function(el, finalDate, callback) {
273
- this.el = el;
274
- this.$el = $(el);
275
- this.interval = null;
276
- this.offset = {};
277
- // Register this instance
278
- this.instanceNumber = instances.length;
279
- instances.push(this);
280
- // Save the reference
281
- this.$el.data('countdown-instance', this.instanceNumber);
282
- // Register the callbacks when supplied
283
- if(callback) {
284
- this.$el.on('update.countdown', callback);
285
- this.$el.on('stoped.countdown', callback);
286
- this.$el.on('finish.countdown', callback);
287
- }
288
- // Set the final date and start
289
- this.setFinalDate(finalDate);
290
- this.start();
291
- };
292
- $.extend(Countdown.prototype, {
293
- start: function() {
294
- if(this.interval !== null) {
295
- clearInterval(this.interval);
296
- }
297
- var self = this;
298
- this.update();
299
- this.interval = setInterval(function() {
300
- self.update.call(self);
301
- }, PRECISION);
302
- },
303
- stop: function() {
304
- clearInterval(this.interval);
305
- this.interval = null;
306
- this.dispatchEvent('stoped');
307
- },
308
- toggle: function() {
309
- if (this.interval) {
310
- this.stop();
311
- } else {
312
- this.start();
313
- }
314
- },
315
- pause: function() {
316
- this.stop();
317
- },
318
- resume: function() {
319
- this.start();
320
- },
321
- remove: function() {
322
- this.stop.call(this);
323
- instances[this.instanceNumber] = null;
324
- // Reset the countdown instance under data attr (Thanks to @assiotis)
325
- delete this.$el.data().countdownInstance;
326
- },
327
- setFinalDate: function(value) {
328
- this.finalDate = parseDateString(value); // Cast the given date
329
- },
330
- update: function() {
331
- // Stop if dom is not in the html (Thanks to @dleavitt)
332
- if(this.$el.closest('html').length === 0) {
333
- this.remove();
334
- return;
335
- }
336
- // Calculate the remaining time
337
- this.totalSecsLeft = this.finalDate.getTime() -
338
- new Date().getTime(); // In miliseconds
339
- this.totalSecsLeft = Math.ceil(this.totalSecsLeft / 1000);
340
- this.totalSecsLeft = this.totalSecsLeft < 0 ? 0 : this.totalSecsLeft;
341
- // Calculate the offsets
342
- this.offset = {
343
- seconds : this.totalSecsLeft % 60,
344
- minutes : Math.floor(this.totalSecsLeft / 60) % 60,
345
- hours : Math.floor(this.totalSecsLeft / 60 / 60) % 24,
346
- days : Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,
347
- totalDays : Math.floor(this.totalSecsLeft / 60 / 60 / 24),
348
- weeks : Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7),
349
- months : Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 30),
350
- years : Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 365)
351
- };
352
- // Dispatch an event
353
- if(this.totalSecsLeft === 0) {
354
- this.stop();
355
- this.dispatchEvent('finish');
356
- } else {
357
- this.dispatchEvent('update');
358
- }
359
- },
360
- dispatchEvent: function(eventName) {
361
- var event = $.Event(eventName + '.countdown');
362
- event.finalDate = this.finalDate;
363
- event.offset = $.extend({}, this.offset);
364
- event.strftime = strftime(this.offset);
365
- this.$el.trigger(event);
366
- }
367
- });
368
- // Register the jQuery selector actions
369
- $.fn.countdownPlugin = function() {
370
- var argumentsArray = Array.prototype.slice.call(arguments, 0);
371
- return this.each(function() {
372
- // If no data was set, jQuery.data returns undefined
373
- var instanceNumber = $(this).data('countdown-instance');
374
- // Verify if we already have a countdown for this node ...
375
- // Fix issue #22 (Thanks to @romanbsd)
376
- if (instanceNumber !== undefined) {
377
- var instance = instances[instanceNumber],
378
- method = argumentsArray[0];
379
- // If method exists in the prototype execute
380
- if(Countdown.prototype.hasOwnProperty(method)) {
381
- instance[method].apply(instance, argumentsArray.slice(1));
382
- // If method look like a date try to set a new final date
383
- } else if(String(method).match(/^[$A-Z_][0-9A-Z_$]*$/i) === null) {
384
- instance.setFinalDate.call(instance, method);
385
- // Allow plugin to restart after finished
386
- // Fix issue #38 (thanks to @yaoazhen)
387
- instance.start();
388
- } else {
389
- $.error('Method %s does not exist on jQuery.countdown'
390
- .replace(/\%s/gi, method));
391
- }
392
- } else {
393
- // ... if not we create an instance
394
- new Countdown(this, argumentsArray[0], argumentsArray[1]);
395
- }
396
- });
397
- };
398
  });
1
+ var timenow="";
2
+ (function() {
3
+
4
+ (function($) {
5
+ $.countdown = function(el, options) {
6
+ var getDateData,
7
+ _this = this;
8
+ this.el = el;
9
+ this.$el = $(el);
10
+ this.$el.data("countdown", this);
11
+ this.init = function() {
12
+ _this.options = $.extend({}, $.countdown.defaultOptions, options);
13
+ if (_this.options.refresh) {
14
+ _this.interval = setInterval(function() {
15
+ return _this.render();
16
+ }, _this.options.refresh);
17
+ }
18
+ _this.render();
19
+ return _this;
20
+ };
21
+
22
+ getDateData = function(endDate) {
23
+ var dateData, diff;
24
+ jQuery.ajax({
25
+ type: "POST",
26
+ url: cwp_top_ajaxload.ajaxurl,
27
+ data: {
28
+ action: "gettime_action"
29
+ },
30
+ success: function(response) {
31
+ timenow = response;
32
+ },
33
+ error: function(MLHttpRequest, textStatus, errorThrown) {
34
+ console.log("There was an error: "+errorThrown);
35
+ }
36
+ });
37
+
38
+ //var timenow = new Date(<?php echo time(); ?>*1000)
39
+ //var timenow = new Date( d1.getUTCFullYear(), d1.getUTCMonth(), d1.getUTCDate(), d1.getUTCHours(), d1.getUTCMinutes(), d1.getUTCSeconds() );
40
+ //endDate = Date.parse($.isPlainObject(_this.options.date) ? _this.options.date : new Date(_this.options.date));
41
+ endDate = _this.options.date;
42
+
43
+ if (timenow == '')
44
+ timenow = _this.options.date-20;
45
+
46
+ diff = endDate - timenow;
47
+ //diff = Math.floor(diff);
48
+ if (diff <= 0) {
49
+ diff = 0;
50
+ if (_this.interval) {
51
+ _this.stop();
52
+ }
53
+ _this.options.onEnd.apply(_this);
54
+ }
55
+ dateData = {
56
+ years: 0,
57
+ days: 0,
58
+ hours: 0,
59
+ min: 0,
60
+ sec: 0,
61
+ millisec: 0
62
+ };
63
+ if (diff >= (365.25 * 86400)) {
64
+ dateData.years = Math.floor(diff / (365.25 * 86400));
65
+ diff -= dateData.years * 365.25 * 86400;
66
+ }
67
+ if (diff >= 86400) {
68
+ dateData.days = Math.floor(diff / 86400);
69
+ diff -= dateData.days * 86400;
70
+ }
71
+ if (diff >= 3600) {
72
+ dateData.hours = Math.floor(diff / 3600);
73
+ diff -= dateData.hours * 3600;
74
+ }
75
+ if (diff >= 60) {
76
+ dateData.min = Math.floor(diff / 60);
77
+ diff -= dateData.min * 60;
78
+ }
79
+ dateData.sec = diff;
80
+ return dateData;
81
+ };
82
+ this.leadingZeros = function(num, length) {
83
+ if (length == null) {
84
+ length = 2;
85
+ }
86
+ num = String(num);
87
+ while (num.length < length) {
88
+ num = "0" + num;
89
+ }
90
+ return num;
91
+ };
92
+ this.update = function(newDate) {
93
+ _this.options.date = newDate;
94
+ return _this;
95
+ };
96
+ this.render = function() {
97
+ _this.options.render.apply(_this, [getDateData(_this.options.date)]);
98
+ return _this;
99
+ };
100
+ this.stop = function() {
101
+ if (_this.interval) {
102
+ clearInterval(_this.interval);
103
+ }
104
+ _this.interval = null;
105
+ jQuery(".cwp_top_container .nextTweet").html('Your post was just sent to social networks servers, wait 15s for a confirmation below. Refresh the page to see when the next one will be posted.');
106
+
107
+ return _this;
108
+ //return _this;
109
+ };
110
+ this.start = function(refresh) {
111
+ if (refresh == null) {
112
+ refresh = _this.options.refresh || $.countdown.defaultOptions.refresh;
113
+ }
114
+ if (_this.interval) {
115
+ clearInterval(_this.interval);
116
+ }
117
+ _this.render();
118
+ _this.options.refresh = refresh;
119
+ _this.interval = setInterval(function() {
120
+ return _this.render();
121
+ }, _this.options.refresh);
122
+ return _this;
123
+ };
124
+ return this.init();
125
+ };
126
+ $.countdown.defaultOptions = {
127
+ date: "June 7, 2087 15:03:25",
128
+ refresh: 2000,
129
+ onEnd: $.noop,
130
+ render: function(date) {
131
+ if (date.days!=0 || date.hours!=0 || date.min!=0 || date.sec!=0)
132
+ return $(this.el).html("" + date.days + " days, " + (this.leadingZeros(date.hours)) + " hours, " + (this.leadingZeros(date.min)) + " min and " + (this.leadingZeros(date.sec)) + " sec");
133
+ }
134
+ };
135
+ $.fn.countdown = function(options) {
136
+ return $.each(this, function(i, el) {
137
+ var $el;
138
+ $el = $(el);
139
+ if (!$el.data('countdown')) {
140
+ return $el.data('countdown', new $.countdown(el, options));
141
+ }
142
+ });
143
+ };
144
+ return void 0;
145
+ })(jQuery);
146
+
147
+ }).call(this);
148
+
149
+
150
+ ;(function(factory) {
151
+ 'use strict';
152
+
153
+ if (typeof define === 'function' && define.amd) {
154
+ define(['jquery'], factory);
155
+ } else {
156
+ factory(jQuery);
157
+ }
158
+ })(function($){
159
+ 'use strict';
160
+
161
+ var PRECISION = 100; // 0.1 seconds, used to update the DOM
162
+ var instances = [],
163
+ matchers = [];
164
+ // Miliseconds
165
+ matchers.push(/^[0-9]*$/.source);
166
+ // Month/Day/Year [hours:minutes:seconds]
167
+ matchers.push(/([0-9]{1,2}\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/
168
+ .source);
169
+ // Year/Day/Month [hours:minutes:seconds] and
170
+ // Year-Day-Month [hours:minutes:seconds]
171
+ matchers.push(/[0-9]{4}([\/\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/
172
+ .source);
173
+ // Cast the matchers to a regular expression object
174
+ matchers = new RegExp(matchers.join('|'));
175
+ // Parse a Date formatted has String to a native object
176
+ function parseDateString(dateString) {
177
+ // Pass through when a native object is sent
178
+ if(dateString instanceof Date) {
179
+ return dateString;
180
+ }
181
+ // Caste string to date object
182
+ if(String(dateString).match(matchers)) {
183
+ // If looks like a milisecond value cast to number before
184
+ // final casting (Thanks to @msigley)
185
+ if(String(dateString).match(/^[0-9]*$/)) {
186
+ dateString = Number(dateString);
187
+ }
188
+ // Replace dashes to slashes
189
+ if(String(dateString).match(/\-/)) {
190
+ dateString = String(dateString).replace(/\-/g, '/');
191
+ }
192
+ return new Date(dateString);
193
+ } else {
194
+ throw new Error('Couldn\'t cast `' + dateString +
195
+ '` to a date object.');
196
+ }
197
+ }
198
+ // Map to convert from a directive to offset object property
199
+ var DIRECTIVE_KEY_MAP = {
200
+ 'Y': 'years',
201
+ 'm': 'months',
202
+ 'w': 'weeks',
203
+ 'd': 'days',
204
+ 'D': 'totalDays',
205
+ 'H': 'hours',
206
+ 'M': 'minutes',
207
+ 'S': 'seconds'
208
+ };
209
+ // Returns an escaped regexp from the string
210
+ function escapedRegExp(str) {
211
+ var sanitize = str.toString().replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1');
212
+ return new RegExp(sanitize);
213
+ }
214
+ // Time string formatter
215
+ function strftime(offsetObject) {
216
+ return function(format) {
217
+ var directives = format.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);
218
+ if(directives) {
219
+ for(var i = 0, len = directives.length; i < len; ++i) {
220
+ var directive = directives[i]
221
+ .match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/),
222
+ regexp = escapedRegExp(directive[0]),
223
+ modifier = directive[1] || '',
224
+ plural = directive[3] || '',
225
+ value = null;
226
+ // Get the key
227
+ directive = directive[2];
228
+ // Swap shot-versions directives
229
+ if(DIRECTIVE_KEY_MAP.hasOwnProperty(directive)) {
230
+ value = DIRECTIVE_KEY_MAP[directive];
231
+ value = Number(offsetObject[value]);
232
+ }
233
+ if(value !== null) {
234
+ // Pluralize
235
+ if(modifier === '!') {
236
+ value = pluralize(plural, value);
237
+ }
238
+ // Add zero-padding
239
+ if(modifier === '') {
240
+ if(value < 10) {
241
+ value = '0' + value.toString();
242
+ }
243
+ }
244
+ // Replace the directive
245
+ format = format.replace(regexp, value.toString());
246
+ }
247
+ }
248
+ }
249
+ format = format.replace(/%%/, '%');
250
+ return format;
251
+ };
252
+ }
253
+ // Pluralize
254
+ function pluralize(format, count) {
255
+ var plural = 's', singular = '';
256
+ if(format) {
257
+ format = format.replace(/(:|;|\s)/gi, '').split(/\,/);
258
+ if(format.length === 1) {
259
+ plural = format[0];
260
+ } else {
261
+ singular = format[0];
262
+ plural = format[1];
263
+ }
264
+ }
265
+ if(Math.abs(count) === 1) {
266
+ return singular;
267
+ } else {
268
+ return plural;
269
+ }
270
+ }
271
+ // The Final Countdown
272
+ var Countdown = function(el, finalDate, callback) {
273
+ this.el = el;
274
+ this.$el = $(el);
275
+ this.interval = null;
276
+ this.offset = {};
277
+ // Register this instance
278
+ this.instanceNumber = instances.length;
279
+ instances.push(this);
280
+ // Save the reference
281
+ this.$el.data('countdown-instance', this.instanceNumber);
282
+ // Register the callbacks when supplied
283
+ if(callback) {
284
+ this.$el.on('update.countdown', callback);
285
+ this.$el.on('stoped.countdown', callback);
286
+ this.$el.on('finish.countdown', callback);
287
+ }
288
+ // Set the final date and start
289
+ this.setFinalDate(finalDate);
290
+ this.start();
291
+ };
292
+ $.extend(Countdown.prototype, {
293
+ start: function() {
294
+ if(this.interval !== null) {
295
+ clearInterval(this.interval);
296
+ }
297
+ var self = this;
298
+ this.update();
299
+ this.interval = setInterval(function() {
300
+ self.update.call(self);
301
+ }, PRECISION);
302
+ },
303
+ stop: function() {
304
+ clearInterval(this.interval);
305
+ this.interval = null;
306
+ this.dispatchEvent('stoped');
307
+ },
308
+ toggle: function() {
309
+ if (this.interval) {
310
+ this.stop();
311
+ } else {
312
+ this.start();
313
+ }
314
+ },
315
+ pause: function() {
316
+ this.stop();
317
+ },
318
+ resume: function() {
319
+ this.start();
320
+ },
321
+ remove: function() {
322
+ this.stop.call(this);
323
+ instances[this.instanceNumber] = null;
324
+ // Reset the countdown instance under data attr (Thanks to @assiotis)
325
+ delete this.$el.data().countdownInstance;
326
+ },
327
+ setFinalDate: function(value) {
328
+ this.finalDate = parseDateString(value); // Cast the given date
329
+ },
330
+ update: function() {
331
+ // Stop if dom is not in the html (Thanks to @dleavitt)
332
+ if(this.$el.closest('html').length === 0) {
333
+ this.remove();
334
+ return;
335
+ }
336
+ // Calculate the remaining time
337
+ this.totalSecsLeft = this.finalDate.getTime() -
338
+ new Date().getTime(); // In miliseconds
339
+ this.totalSecsLeft = Math.ceil(this.totalSecsLeft / 1000);
340
+ this.totalSecsLeft = this.totalSecsLeft < 0 ? 0 : this.totalSecsLeft;
341
+ // Calculate the offsets
342
+ this.offset = {
343
+ seconds : this.totalSecsLeft % 60,
344
+ minutes : Math.floor(this.totalSecsLeft / 60) % 60,
345
+ hours : Math.floor(this.totalSecsLeft / 60 / 60) % 24,
346
+ days : Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,
347
+ totalDays : Math.floor(this.totalSecsLeft / 60 / 60 / 24),
348
+ weeks : Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7),
349
+ months : Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 30),
350
+ years : Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 365)
351
+ };
352
+ // Dispatch an event
353
+ if(this.totalSecsLeft === 0) {
354
+ this.stop();
355
+ this.dispatchEvent('finish');
356
+ } else {
357
+ this.dispatchEvent('update');
358
+ }
359
+ },
360
+ dispatchEvent: function(eventName) {
361
+ var event = $.Event(eventName + '.countdown');
362
+ event.finalDate = this.finalDate;
363
+ event.offset = $.extend({}, this.offset);
364
+ event.strftime = strftime(this.offset);
365
+ this.$el.trigger(event);
366
+ }
367
+ });
368
+ // Register the jQuery selector actions
369
+ $.fn.countdownPlugin = function() {
370
+ var argumentsArray = Array.prototype.slice.call(arguments, 0);
371
+ return this.each(function() {
372
+ // If no data was set, jQuery.data returns undefined
373
+ var instanceNumber = $(this).data('countdown-instance');
374
+ // Verify if we already have a countdown for this node ...
375
+ // Fix issue #22 (Thanks to @romanbsd)
376
+ if (instanceNumber !== undefined) {
377
+ var instance = instances[instanceNumber],
378
+ method = argumentsArray[0];
379
+ // If method exists in the prototype execute
380
+ if(Countdown.prototype.hasOwnProperty(method)) {
381
+ instance[method].apply(instance, argumentsArray.slice(1));
382
+ // If method look like a date try to set a new final date
383
+ } else if(String(method).match(/^[$A-Z_][0-9A-Z_$]*$/i) === null) {
384
+ instance.setFinalDate.call(instance, method);
385
+ // Allow plugin to restart after finished
386
+ // Fix issue #38 (thanks to @yaoazhen)
387
+ instance.start();
388
+ } else {
389
+ $.error('Method %s does not exist on jQuery.countdown'
390
+ .replace(/\%s/gi, method));
391
+ }
392
+ } else {
393
+ // ... if not we create an instance
394
+ new Countdown(this, argumentsArray[0], argumentsArray[1]);
395
+ }
396
+ });
397
+ };
398
  });
js/master.js CHANGED
@@ -1,979 +1,1069 @@
1
- jQuery(document).ready(function(){
2
-
3
-
4
- setInterval(function(){
5
- var clock = jQuery(".rop-twitter-clock");
6
- var time = parseInt(clock.attr('data-current'));
7
- // console.log(time);
8
- clock.attr('data-current',time+1);
9
- clock.find("b").html(new Date(time * 1000).toUTCString());
10
- },1000);
11
- jQuery(".cwp_top_wrapper").append("<div class='ajaxAnimation'></div>");
12
- jQuery("#update-options").click(function(e){
13
- e.preventDefault();
14
- cwpTopUpdateForm();
15
- return false;
16
- });
17
- jQuery("#reset-settings").click(function(e) {
18
- e.preventDefault();
19
- startAjaxIntro();
20
-
21
- jQuery.ajax({
22
- type: "POST",
23
- url: cwp_top_ajaxload.ajaxurl,
24
- data: {
25
- action: 'reset_options'
26
- },
27
- success: function(response) {
28
- console.log("Success: " + response);
29
- //jQuery("#cwp_top_form").cwpTopUpdateForm();
30
- location.reload();
31
- endAjaxIntro();
32
- },
33
- error: function(response) {
34
- console.log("Error: "+ response);
35
- }
36
- });
37
-
38
- endAjaxIntro();
39
- return false;
40
- });
41
- jQuery("#linkedin-login").on("click",function(){
42
- jQuery(".cwp_lkapp_preview").show();
43
- return false;
44
- });
45
- jQuery("#facebook-login").on("click",function(){
46
- if(jQuery(this).hasClass("another-account")){
47
- addFacebook()
48
- }else{
49
- jQuery(".cwp_fbapp_preview").show();
50
- }
51
- return false;
52
- });
53
- jQuery("#cwp_remote_check").on("click",function(){
54
-
55
- var state = "";
56
- var th = jQuery(this);
57
- if(th.hasClass("on")){
58
- state = "off";
59
- th.addClass("off").removeClass("on");
60
- }else{
61
- state = "on";
62
- th.addClass("on").removeClass("off");
63
- }
64
- jQuery.ajax({
65
- type: "POST",
66
- url: cwp_top_ajaxload.ajaxurl,
67
- data: {
68
- action: 'remote_trigger',
69
- state:state
70
- },
71
- success: function(response) {
72
- console.log(response);
73
- },
74
- error: function(response) {
75
- console.log("Error: "+ response);
76
- }
77
- });
78
- return false;
79
- })
80
-
81
- function cwpTopUpdateForm() {
82
- startAjaxIntro();
83
- var data = jQuery("#cwp_top_form").serialize();
84
- //console.log(data);
85
-
86
- var formData = {
87
- action:'updateAllOptions',
88
- dataSent:data
89
- }
90
-
91
- jQuery.ajax({
92
- type: "POST",
93
- url: cwp_top_ajaxload.ajaxurl,
94
- async:false,
95
- data: {
96
- action: "update_response",
97
- dataSent: formData
98
- },
99
- success: function(response) {
100
- console.log(response);
101
- },
102
- error: function(MLHttpRequest, textStatus, errorThrown) {
103
- console.log("There was an error: "+errorThrown);
104
- }
105
- });
106
-
107
- endAjaxIntro();
108
- return false;
109
- }
110
-
111
- function cwpTopUpdateFormWithoIntro() {
112
- //startAjaxIntro();
113
- var data = jQuery("#cwp_top_form").serialize();
114
- //console.log(data);
115
-
116
- var formData = {
117
- action:'updateAllOptions',
118
- dataSent:data
119
- }
120
-
121
- jQuery.ajax({
122
- type: "POST",
123
- url: cwp_top_ajaxload.ajaxurl,
124
- data: {
125
- action: "update_response",
126
- dataSent: formData
127
- },
128
- success: function(response) {
129
- console.log(response);
130
- },
131
- error: function(MLHttpRequest, textStatus, errorThrown) {
132
- console.log("There was an error: "+errorThrown);
133
- }
134
- });
135
-
136
- //endAjaxIntro();
137
- return false;
138
- }
139
-
140
-
141
-
142
-
143
-
144
-
145
- function addFacebook(){
146
- var service = "facebook";
147
-
148
- startAjaxIntro();
149
- jQuery.ajax({
150
- type: "POST",
151
- url: cwp_top_ajaxload.ajaxurl,
152
- data: {
153
- action: "display_pages",
154
- currentURL: jQuery("#cwp_top_currenturl").val(),
155
- social_network: service
156
- },
157
- success: function(response) {
158
- switch (service) {
159
-
160
- case 'facebook':
161
- var elem = jQuery(".cwp_top_wrapper .cwp_user_pages");
162
- elem.fadeIn().addClass("active");
163
-
164
- var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
165
- jQuery('html, body').scrollTop(scrollhere);
166
- response = JSON.parse(response);
167
- html='';
168
- data = response.data;
169
-
170
- for (i = 0; i < data.length; i++) {
171
- // if (jQuery(".remove_user a[service=facebook").attr("id")!==data[i].id) {
172
- html+="<a href='#' class='cwp_preview_page' service='"+service+"' pagetoken='"+data[i].access_token+"' pageid='"+data[i].id+"'>";
173
- profile_image = 'https://graph.facebook.com/'+data[i].id+'/picture';
174
- name = data[i].name;
175
- category = data[i].category.substr(0,9);
176
- html+="<div class='page_avatar'><img src='"+profile_image+"'/></div><div class='page_name'>"+name+"</div><div class='page_category'>"+category+"</div></a>";
177
- //}
178
- }
179
- //html+='<button class="top_close_popup">Close preview</button>';
180
- //data.length = 3;
181
- fheight = (Math.ceil(data.length / 4) )*95;
182
- //if (fheight<=0) fheight = 175;
183
- jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_user_pages_inner ").html(html);
184
- jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_user_pages_inner ").height(fheight);
185
- jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_sample_tweet_preview_inner ").height(fheight+120);
186
-
187
- endAjaxIntro();
188
- break;
189
-
190
-
191
- case 'linkedin':
192
- var elem = jQuery(".cwp_top_wrapper .cwp_user_pages");
193
- elem.fadeIn().addClass("active");
194
-
195
- var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
196
- jQuery('html, body').scrollTop(scrollhere);
197
- response = JSON.parse(response);
198
- html='';
199
- data = response.data;
200
- for (i = 0; i < data.length; i++) {
201
- html+="<a href='#' class='cwp_preview_page' service='"+service+"' pagetoken='"+data[i].access_token+"' pageid='"+data[i].id+"'>";
202
- profile_image = 'https://graph.facebook.com/'+data[i].id+'/picture';
203
- name = data[i].name;
204
- category = data[i].category.substr(0,9);
205
- html+="<div class='page_avatar'><img src='"+profile_image+"'/></div><div class='page_name'>"+name+"</div><div class='page_category'>"+category+"</div></a>";
206
-
207
- }
208
- jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_user_pages_inner ").html(html);
209
- endAjaxIntro();
210
- break;
211
- }
212
-
213
- },
214
- error: function(MLHttpRequest, textStatus, errorThrown) {
215
- console.log("There was an error: " + errorThrown);
216
- }
217
- });
218
-
219
-
220
-
221
- return false;
222
- }
223
-
224
- // Add New Account
225
- if (location.hash=="#_=_"|| location.hash=="#fbadd") {
226
- addFacebook();
227
-
228
- };
229
-
230
- // Add New Twitter Account
231
- jQuery("#twitter-login,.top_authorize").click(function(e){
232
-
233
- var service = jQuery(this).attr('service');
234
- var action = "add_new_account";
235
- var extra = {};
236
- if(service != 'twitter'){
237
- e.preventDefault();
238
- startAjaxIntro();
239
- if (service=='facebook') {
240
- extra.app_id = jQuery("#top_opt_app_id").val();
241
- extra.app_secret = jQuery("#top_opt_app_secret").val();
242
- }
243
- else {
244
- extra.app_id = jQuery("#top_opt_app_id_lk").val();
245
- extra.app_secret = jQuery("#top_opt_app_secret_lk").val();
246
- }
247
-
248
-
249
- }
250
- startAjaxIntro();
251
- jQuery.ajax({
252
- type: "POST",
253
- url: cwp_top_ajaxload.ajaxurl,
254
- data: {
255
- action: action,
256
- currentURL: jQuery("#cwp_top_currenturl").val(),
257
- social_network: service,
258
- extra:extra
259
- },
260
- dataType:"json",
261
- success: function(response) {
262
-
263
- if(response.url){
264
- window.location.href = response.url;
265
- }else{
266
- jQuery(".cwp_fbapp_preview").hide();
267
- jQuery(".cwp_lkapp_preview").hide();
268
- endAjaxIntro();
269
-
270
- }
271
- /*if (response.indexOf("upgrade to the PRO")===-1) {
272
- switch (service) {
273
- case 'twitter':
274
- window.location.href = response;
275
- break;
276
- case 'facebook':
277
- if (another===0) {
278
-
279
- var elem = jQuery(".cwp_top_wrapper .cwp_fbapp_preview")
280
- elem.fadeIn().addClass("active");
281
-
282
- var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
283
- jQuery('html, body').scrollTop(scrollhere);
284
- } else {
285
- addFacebook();
286
- }
287
- endAjaxIntro();
288
-
289
- break;
290
- case 'linkedin':
291
- var elem = jQuery(".cwp_top_wrapper .cwp_lkapp_preview")
292
- elem.fadeIn().addClass("active");
293
-
294
- var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
295
- jQuery('html, body').scrollTop(scrollhere);
296
- // html = "<input type='text' placeholder='App key'/>";
297
- //jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet").html(html);
298
- endAjaxIntro();
299
- break;
300
- }
301
- }else {
302
- jQuery(".cwp_top_status .inactive").html(response);
303
- endAjaxIntro();
304
- }*/
305
-
306
-
307
- },
308
- error: function(MLHttpRequest, textStatus, errorThrown) {
309
- console.log("There was an error: " + errorThrown);
310
- }
311
- });
312
-
313
- return false;
314
- });
315
-
316
- // Log Out Twitter User
317
- jQuery("#cwp_top_form .logout_user").click(function(e){
318
- e.preventDefault();
319
- startAjaxIntro();
320
-
321
- var userID = jQuery(this).attr('id');
322
-
323
- jQuery.ajax({
324
- type: "POST",
325
- url: cwp_top_ajaxload.ajaxurl,
326
- data: {
327
- action: "log_out_user",
328
- user_id: userID
329
- },
330
- success: function(response) {
331
- window.location.href = jQuery("#cwp_top_currenturl").val();
332
- },
333
- error: function(MLHttpRequest, textStatus, errorThrown) {
334
- console.log("There was an error: "+errorThrown);
335
- }
336
- });
337
-
338
- endAjaxIntro();
339
- });
340
- jQuery("#rop-clear-log").on("click",function(){
341
- clearNotices();
342
- jQuery.ajax({
343
- type: "POST",
344
- url: cwp_top_ajaxload.ajaxurl,
345
- data: {
346
- action: "rop_clear_log"
347
- }
348
- });
349
- return false;
350
- })
351
- // Start Tweet
352
- jQuery("#tweet-now").click(function(e){
353
-
354
- startAjaxIntro();
355
- cwpTopUpdateForm();
356
-
357
- jQuery.ajax({
358
- type: "POST",
359
- url: cwp_top_ajaxload.ajaxurl,
360
- data: {
361
- action: "tweet_old_post_action"
362
- },
363
- success: function(response) {
364
-
365
- location.reload();
366
- },
367
- error: function(MLHttpRequest, textStatus, errorThrown) {
368
- console.log("There was an error: "+errorThrown);
369
- }
370
- });
371
-
372
- endAjaxIntro();
373
- });
374
-
375
- setInterval(function(){ jQuery.ajax({
376
- type: "POST",
377
- url: cwp_top_ajaxload.ajaxurl,
378
- data: {
379
- action: "getNotice_action"
380
- },
381
- dataType:"json",
382
- success: function(response) {
383
-
384
- if(response.length > 0 ){
385
- jQuery(".inactive-rop-error-label").hide();
386
- jQuery(".active-rop-error-label").show();
387
- jQuery(".rop-error-log span").html(response.length).removeClass('no-error');
388
- jQuery(".active-rop-error-label").html( " You have <b>" + response.length + " </b>new messages ! Go to Log tab to see them");
389
- jQuery("#rop-log-list").html('');
390
- jQuery.each(response,function(k,v){
391
-
392
- jQuery("#rop-log-list").append('<li class="rop-log-item rop-'+ v.type +'"> <span class="rop-log-date">' + v.time + '</span> <span class="rop-log-text">'+ v.message+ '</span> </li>');
393
-
394
-
395
- })
396
-
397
- }else{
398
- clearNotices();
399
- jQuery("#rop-log-list").html('<li class="rop-log-item rop-notice"> <span class="rop-log-text">You have no messages ! </span> </li>');
400
-
401
- }
402
-
403
- }
404
- } )
405
- },3000);
406
-
407
- jQuery("#see-sample-tweet").click(function(e){
408
- if(!cwpTopCheckAccounts()){
409
- jQuery("#tabs_menu li:first").trigger("click");
410
- showCWPROPError("You need to add an account in order to start posting.");
411
- return false;
412
- }
413
- e.preventDefault();
414
- startAjaxIntro();
415
- cwpTopUpdateFormWithoIntro();
416
- jQuery.ajax({
417
- type: "POST",
418
- url: cwp_top_ajaxload.ajaxurl,
419
- data: {
420
- action: "view_sample_tweet_action"
421
- },
422
- success: function(response) {
423
- if(response !== '') {
424
-
425
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").fadeIn().addClass("active");
426
-
427
- //jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").css("top", ( jQuery(window).height() - this.height() ) / 2+jQuery(window).scrollTop() + "px");
428
- //jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").css("left", ( jQuery(window).width() - this.width() ) / 2+jQuery(window).scrollLeft() + "px");
429
- var elem = jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview");
430
-
431
- jQuery(window).scrollTop(0);
432
-
433
- $json = JSON.parse(response);
434
-
435
- if($json .twitter)
436
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_twitter").html($json .twitter);
437
- else
438
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_twitter").hide().prev().hide();
439
- if($json .facebook)
440
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_facebook").html( $json .facebook) ;
441
- else
442
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_facebook").hide().prev().hide();
443
- if($json .linkedin)
444
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_linkedin").html( $json .linkedin);
445
- else
446
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_linkedin").hide().prev().hide();
447
-
448
- }
449
- endAjaxIntro();
450
- },
451
- error: function(MLHttpRequest, textStatus, errorThrown) {
452
- console.log("There was an error: "+errorThrown);
453
- endAjaxIntro();
454
- }
455
- });
456
-
457
-
458
- });
459
-
460
- // Stop Tweet Old Post
461
- jQuery("#stop-tweet-old-post").click(function(e){
462
- e.preventDefault();
463
- startAjaxIntro();
464
- cwpTopUpdateForm();
465
-
466
- jQuery.ajax({
467
- type: "POST",
468
- url: cwp_top_ajaxload.ajaxurl,
469
- data: {
470
- action: "stop_tweet_old_post"
471
- },
472
- success: function(response) {
473
- if(response !== '') {
474
- jQuery('.cwp_top_wrapper').append(response);
475
- }
476
- location.reload();
477
- },
478
- error: function(MLHttpRequest, textStatus, errorThrown) {
479
- console.log("There was an error: "+errorThrown);
480
- }
481
- });
482
- endAjaxIntro();
483
- //location.reload();
484
- });
485
-
486
- jQuery(".cwp_sample_tweet_preview_inner button.top_close_popup").on("click",function(e){
487
- jQuery(this).parent().parent().fadeOut().removeClass("active");
488
- });
489
-
490
- jQuery(".cwp_user_pages_inner button.top_close_popup").on("click",function(e){
491
- e.preventDefault();
492
- jQuery(this).parent().parent().parent().fadeOut().removeClass("active");
493
- return false;
494
- });
495
-
496
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner button.tweetitnow").click(function(e){
497
- e.preventDefault();
498
- startAjaxIntro();
499
-
500
- jQuery.ajax({
501
- type: "POST",
502
- url: cwp_top_ajaxload.ajaxurl,
503
- data: {
504
- action: "tweet_now_action"
505
- },
506
- success: function(response) {
507
- endAjaxIntro();
508
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").fadeOut().removeClass("active");
509
- jQuery('html, body').animate({
510
- scrollTop: jQuery(".cwp_top_wrapper .cwp_top_status").offset().top
511
- }, 1000);
512
- },
513
- error: function(MLHttpRequest, textStatus, errorThrown) {
514
- console.log("There was an error: "+errorThrown);
515
- endAjaxIntro();
516
- }
517
- });
518
- });
519
-
520
- // Transform the date into a countdown.
521
- var nextTweetDate = jQuery(".cwp_top_container .nextTweet").html();
522
- jQuery(".cwp_top_container .nextTweet").html('');
523
- if(nextTweetDate){
524
- jQuery(".cwp_top_container .nextTweet").countdown({
525
- date: nextTweetDate
526
- });
527
- }
528
- jQuery(".rop-network-countdown").each(function() {
529
- var span = jQuery(this).find('.rop-network-timestamp');
530
- var timestamp = parseInt(span.attr('data-timestamp'));
531
-
532
- if (!isNaN(timestamp)) {
533
- span.countdownPlugin(timestamp * 1000).on('update.countdown', function(event) {
534
- var format = '%H hr %M m %S s';
535
- if(event.offset.days > 0) {
536
- format = '%-d day%!d ' + format;
537
- }
538
- if(event.offset.weeks > 0) {
539
- format = '%-w week%!w ' + format;
540
- }
541
- jQuery(this).html(event.strftime(format));
542
- }).on('finish.countdown', function(event) {
543
- var th = jQuery(this).parent();
544
- th.html("Please wait ....");
545
- setTimeout(function(){
546
- th.html("You can refresh the page to see the next schedule !");
547
-
548
- },1000)
549
-
550
- });
551
- span.parent().show();
552
- }else{
553
- span.parent().hide();
554
- }
555
- })
556
-
557
- jQuery(".cwp-cpt-checkbox").click(function(){
558
- var ck = false;
559
- var th = jQuery(this);
560
- var val = th.val();
561
- if(th.is(":checked")){
562
-
563
- ck = true;
564
- }else{
565
-
566
- ck = false;
567
- }
568
- if(ck){
569
-
570
- jQuery(".cwp-tax-"+val).show();
571
-
572
- }else{
573
-
574
- jQuery(".cwp-tax-"+val + " input").removeAttr("checked");
575
- jQuery(".cwp-tax-"+val).hide();
576
-
577
- }
578
-
579
- });
580
- // Starting the AJAX intro animation
581
- function startAjaxIntro() {
582
- jQuery(".cwp_top_wrapper .ajaxAnimation").fadeIn();
583
- }
584
-
585
- // Ending the AJAX intro animation
586
- function endAjaxIntro() {
587
- jQuery(".cwp_top_wrapper .ajaxAnimation").fadeOut();
588
- }
589
-
590
- // Reset all checkboxes and clear textareas
591
- jQuery.fn.cwpTopResetForm = function() {
592
- //jQuery(this).find("input[type=text], textarea").val("");
593
- //jQuery(this).find("input[type=radio], input[type=checkbox]").checked = false;
594
- }
595
-
596
- jQuery("body").on('click',function(e){
597
-
598
-
599
- if (jQuery(e.target).parent().hasClass("cwp_preview_page")) {
600
- e.preventDefault();
601
-
602
- startAjaxIntro();
603
- var service = jQuery(e.target).parent().attr('service');
604
- var access_token = jQuery(e.target).parent().attr('pagetoken');
605
- var page_id = jQuery(e.target).parent().attr('pageid');
606
-
607
- jQuery.ajax({
608
- type: "POST",
609
- url: cwp_top_ajaxload.ajaxurl,
610
- data: {
611
- action: "add_pages",
612
- currentURL: jQuery("#cwp_top_currenturl").val(),
613
- social_network: service,
614
- page_token:access_token,
615
- page_id:page_id,
616
- picture_url: jQuery(e.target).parent().children().children('img').attr('src'),
617
- page_name: jQuery(e.target).parent().children('.page_name').text()
618
- },
619
- success: function(response) {
620
- switch (service) {
621
-
622
- case 'facebook':
623
- endAjaxIntro();
624
- jQuery(".cwp_top_wrapper .cwp_user_pages").fadeOut().removeClass("active");
625
- window.location.href = response;
626
- break;
627
-
628
- case 'linkedin':
629
- endAjaxIntro();
630
- jQuery(".cwp_top_wrapper .cwp_user_pages").fadeOut().removeClass("active");
631
- window.location.href = response;
632
- break;
633
- }
634
-
635
- },
636
- error: function(MLHttpRequest, textStatus, errorThrown) {
637
- console.log("There was an error: " + errorThrown);
638
- }
639
- });
640
- return false;
641
- }
642
-
643
- });
644
-
645
- // Select all function
646
- jQuery("button.select-all").click(function(e){
647
- e.preventDefault();
648
- if(jQuery(this).hasClass('active')) {
649
- jQuery(this).removeClass('active').text('Select All');
650
- jQuery(this).parent().parent().find('.right input[type=checkbox]').attr('checked', false);
651
- } else {
652
- jQuery(this).addClass('active').text('Deselect All');
653
- jQuery(this).parent().parent().find('.right input[type=checkbox]').attr('checked', true);
654
- }
655
- });
656
- jQuery(".option[data-dependent] select, .option[data-dependent] input[type='checkbox']").change(function(){
657
- cwpDependeField(jQuery(this).closest('.option'));
658
- });
659
-
660
- jQuery("#cwp_top_tabs ul#tabs_menu li ").not(".not-tab").click(function() {
661
- jQuery("#cwp_top_tabs ul#tabs_menu li").removeClass("active");
662
- jQuery("#cwp_top_tabs div.tab").removeClass("active");
663
- var th = jQuery(this);
664
- var index = th.index();
665
- th.addClass("active");
666
-
667
-
668
- jQuery("#cwp_top_tabs div.tab").eq(index).addClass("active");
669
-
670
- return false
671
- });
672
- jQuery(".cwp-schedule-days li").click(function(){
673
- var th = jQuery(this);
674
- if(th.hasClass("active")){
675
- th.removeClass('active');
676
- }else{
677
-
678
- th.addClass('active');
679
- }
680
-
681
- })
682
- jQuery(".cwp-schedule-days li").click(function(){
683
- var container = jQuery(this).parent().parent();
684
- cwpTopRefreshPostingDays(container);
685
-
686
- })
687
- jQuery(".cwp-populate-hidden-radio").click(function(){
688
- var th = jQuery(this);
689
- var id = th.attr('data-hidden');
690
- var value = th.attr('data-value');
691
- jQuery("#"+id).val(value);
692
-
693
- })
694
- jQuery(".cwp-populate-hidden-checkbox").click(function(){
695
- var th = jQuery(this);
696
- var id = th.parent().attr('data-hidden');
697
- var values = [];
698
- th.parent().find('.active').each(function(){
699
- var ith = jQuery(this);
700
- values.push(ith.attr('data-value'));
701
- });
702
- jQuery("#"+id).val(values.join(','));
703
-
704
- })
705
- jQuery(".cwp-according-item .cwp-according-header").click(function(){
706
-
707
- var th = jQuery(this).parent();
708
- if(th.hasClass('active')) return false;
709
- var active = th.parent().children(".active");
710
-
711
-
712
- active.find(".cwp-according-body").slideUp(100,function(){
713
- active.removeClass('active');
714
- });
715
- th.find(".cwp-according-body").slideDown(100,function(){
716
- th.addClass('active');
717
- });
718
- return false;
719
- });
720
- jQuery(".cwp_top_tabs_vertical .cwp_top_tabs_btns li ").not('.not-tab').click(function() {
721
-
722
- var th = jQuery(this);
723
- if(th.parent().parent().find(".tab-vertical").is(":animated")) return false;
724
- var index = th.index();
725
- th.parent().parent().find(".tab-vertical.active").fadeOut(200,function(){
726
- jQuery(this).removeClass("active");
727
- th.parent().find("li").removeClass("active");
728
- th.parent().parent().find(".tab-vertical").eq(index).fadeIn(200,function(){
729
- jQuery(this).addClass("active");
730
- th.parent().find("li").eq(index).addClass("active");
731
- } );
732
- } );
733
-
734
-
735
- return false
736
- });
737
-
738
- jQuery("#cwp_top_tabs").on("click",".cwp-top-times-close",function(){
739
- var li = jQuery(this).parent();
740
- li.remove();
741
- cwpTopRefreshPostingDays( );
742
- })
743
- jQuery(".cwp-add-posting-time").click(function(){
744
-
745
- var container = jQuery(this).parent().parent();
746
- var network = jQuery(this).closest('.tab-vertical').attr('data-network');
747
- container.find(".cwp-posting-times").append(getCwpTopTimeHTML(network));
748
-
749
- cwpTopRefreshPostingDays(container);
750
- return false;
751
- })
752
- cwpBindCheckedHidden();
753
- cwpLoadPostFormaFields();
754
-
755
- cwpTopBindTimes();
756
- jQuery(".cwp-custom-schedule-days").each(function(){
757
- var container = jQuery(this);
758
- cwpTopRefreshPostingDays(container);
759
- });
760
-
761
- jQuery(".cwp-cpt-checkbox").each(function(){
762
- var th = jQuery(this);
763
- if(th.is(":checked")){
764
-
765
- jQuery(".cwp-tax-"+th.val()).show();
766
-
767
- }
768
-
769
- });
770
- });
771
-
772
- function cwpDependeField(field,second){
773
-
774
- var dvalues = field.attr("data-dependent");
775
- if(dvalues === undefined) return false;
776
- var value;
777
-
778
- if(field.find("select").length != 0 ){
779
-
780
- value = field.find("select").val();
781
-
782
- }
783
- if(field.find("input[type='checkbox']").length != 0 ){
784
- if(field.find("input[type='checkbox']").is(":checked")){
785
-
786
- value = 'true';
787
-
788
- }else{
789
-
790
- value = 'false';
791
- }
792
-
793
- }
794
- var json = JSON.parse(dvalues);
795
- var item;
796
-
797
- var tmpvalues;
798
- jQuery.each(json,function(k,v){
799
- item = field.parent().find(".twp"+k);
800
- v = v.split(',');
801
- if(jQuery.inArray(value,v) > -1 && !second){
802
- item.slideDown('fast');
803
- cwpDependeField(item);
804
- }else{
805
-
806
- item.slideUp('fast');
807
- cwpDependeField(item,true);
808
- }
809
-
810
- });
811
-
812
- }
813
- function getCwpTopTimeHTML(network){
814
- var cwp_top_time = '<li class="clearfix cwp-top-times-choice">\
815
- <select class="cwp-top-times-hours" name="'+network+'_time_choice_hour[]">\
816
- <option value="00">00</option>\
817
- <option value="01">01</option>\
818
- <option value="02">02</option>\
819
- <option value="03">03</option>\
820
- <option value="04">04</option>\
821
- <option value="05">05</option>\
822
- <option value="06">06</option>\
823
- <option value="07">07</option>\
824
- <option value="08">08</option>\
825
- <option value="09">09</option>\
826
- <option value="10">10</option>\
827
- <option value="11">11</option>\
828
- <option value="12">12</option>\
829
- <option value="13">13</option>\
830
- <option value="14">14</option>\
831
- <option value="15">15</option>\
832
- <option value="16">16</option>\
833
- <option value="17">17</option>\
834
- <option value="18">18</option>\
835
- <option value="19">19</option>\
836
- <option value="20">20</option>\
837
- <option value="21">21</option>\
838
- <option value="22">22</option>\
839
- <option value="23">23</option>\
840
- </select> : \
841
- <select class="cwp-top-times-hours" name="'+network+'_time_choice_min[]">\
842
- <option value="00">00</option>\
843
- <option value="01">01</option>\
844
- <option value="02">02</option>\
845
- <option value="03">03</option>\
846
- <option value="04">04</option>\
847
- <option value="05">05</option>\
848
- <option value="06">06</option>\
849
- <option value="07">07</option>\
850
- <option value="08">08</option>\
851
- <option value="09">09</option>\
852
- <option value="10">10</option>\
853
- <option value="11">11</option>\
854
- <option value="12">12</option>\
855
- <option value="13">13</option>\
856
- <option value="14">14</option>\
857
- <option value="15">15</option>\
858
- <option value="16">16</option>\
859
- <option value="17">17</option>\
860
- <option value="18">18</option>\
861
- <option value="19">19</option>\
862
- <option value="20">20</option>\
863
- <option value="21">21</option>\
864
- <option value="22">22</option>\
865
- <option value="23">23</option>\
866
- <option value="24">24</option>\
867
- <option value="25">25</option>\
868
- <option value="26">26</option>\
869
- <option value="27">27</option>\
870
- <option value="28">28</option>\
871
- <option value="29">29</option>\
872
- <option value="30">30</option>\
873
- <option value="31">31</option>\
874
- <option value="32">32</option>\
875
- <option value="33">33</option>\
876
- <option value="34">34</option>\
877
- <option value="35">35</option>\
878
- <option value="36">36</option>\
879
- <option value="37">37</option>\
880
- <option value="38">38</option>\
881
- <option value="39">39</option>\
882
- <option value="40">40</option>\
883
- <option value="41">41</option>\
884
- <option value="42">42</option>\
885
- <option value="43">43</option>\
886
- <option value="44">44</option>\
887
- <option value="45">45</option>\
888
- <option value="46">46</option>\
889
- <option value="47">47</option>\
890
- <option value="48">48</option>\
891
- <option value="49">49</option>\
892
- <option value="50">50</option>\
893
- <option value="51">51</option>\
894
- <option value="52">52</option>\
895
- <option value="53">53</option>\
896
- <option value="54">54</option>\
897
- <option value="55">55</option>\
898
- <option value="56">56</option>\
899
- <option value="57">57</option>\
900
- <option value="58">58</option>\
901
- <option value="59">59</option>\
902
- </select><span class="cwp-top-times-close">x</span>\
903
- </li>';
904
- return cwp_top_time;
905
- }
906
- function cwpBindCheckedHidden(){
907
- jQuery(".cwp-populate-hidden-checkbox-group").each(function(){
908
- var th = jQuery(this);
909
- var field = th.attr('data-hidden');
910
- var values = jQuery("#"+field).val();
911
- values = values.split(',');
912
- jQuery.each(values,function(k,v){
913
- th.find(".cwp-populate-hidden-checkbox[data-value='"+v+"']").addClass('active');
914
- });
915
-
916
- })
917
-
918
- }
919
-
920
- function cwpTopBindTimes(){
921
-
922
- jQuery(".cwp-posting-times").each(function(){
923
- var network = jQuery(this).closest('.tab-vertical').attr('data-network');
924
- var values = jQuery(this).attr('data-times');
925
- var th = jQuery(this);
926
- values = jQuery.parseJSON(values);
927
- jQuery.each(values,function(k,v){
928
- th.append(getCwpTopTimeHTML(network) );
929
- th.find("li:last select:first").val(v.hour);
930
- th.find("li:last select:last").val(v.minute);
931
- });
932
-
933
-
934
- })
935
-
936
- }
937
- function cwpTopRefreshPostingDays(container){
938
- if(container === undefined){
939
- jQuery(".cwp-custom-schedule-days").each(function(){
940
- var container = jQuery(this);
941
- cwpTopRefreshPostingDays(container);
942
- })
943
- return false;
944
- }
945
- var times = container.find(".cwp-top-times-choice").length;
946
- var days = [];
947
- var day = "";
948
- container.find('.cwp-populate-hidden-checkbox.active').each(function(){
949
- day = jQuery(this).text().substr(0,3);
950
- days.push(day);
951
- });
952
- container.find(".cwp-posts-time-info-days").text(days.join(","));
953
- container.find(".cwp-posts-time-info-times").text(times);
954
- }
955
- function cwpLoadPostFormaFields(){
956
- jQuery(".option[data-dependent], .option[data-dependent] ").each(function(){
957
- cwpDependeField(jQuery(this));
958
-
959
- })
960
-
961
- }
962
- function showCWPROPError(string){
963
- jQuery(".cwp_top_status p.cwp-error-label").css( "color", "red" );
964
- jQuery(".cwp_top_status p.cwp-error-label").html(string);
965
-
966
- }
967
- function cwpTopCheckAccounts(){
968
- var users = jQuery(".user_details").length;
969
- return (users > 0);
970
-
971
- }
972
- function clearNotices(){
973
- jQuery("#rop-log-list").html('');
974
- jQuery(".rop-error-log span").html('').addClass("no-error");
975
- jQuery(".active-rop-error-label").hide();
976
- jQuery(".inactive-rop-error-label").show();
977
-
978
-
979
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function(){
2
+
3
+
4
+ jQuery(".rop-not-version ").on("click" ,function(){
5
+ console.log('not version')
6
+ jQuery(".cwp_not_version_preview").show();
7
+ return false;
8
+ });
9
+ setInterval(function(){
10
+ var clock = jQuery(".rop-twitter-clock");
11
+ var time = parseInt(clock.attr('data-current'));
12
+ // console.log(time);
13
+ clock.attr('data-current',time+1);
14
+ clock.find("b").html(new Date(time * 1000).toUTCString());
15
+ },1000);
16
+ jQuery(".cwp_top_wrapper").append("<div class='ajaxAnimation'></div>");
17
+ jQuery("#update-options").click(function(e){
18
+ e.preventDefault();
19
+ cwpTopUpdateForm();
20
+ return false;
21
+ });
22
+ jQuery("#reset-settings").click(function(e) {
23
+ e.preventDefault();
24
+ startAjaxIntro();
25
+
26
+ jQuery.ajax({
27
+ type: "POST",
28
+ url: cwp_top_ajaxload.ajaxurl,
29
+ data: {
30
+ action: 'reset_options'
31
+ },
32
+ success: function(response) {
33
+ console.log("Success: " + response);
34
+ //jQuery("#cwp_top_form").cwpTopUpdateForm();
35
+ location.reload();
36
+ endAjaxIntro();
37
+ },
38
+ error: function(response) {
39
+ console.log("Error: "+ response);
40
+ }
41
+ });
42
+
43
+ endAjaxIntro();
44
+ return false;
45
+ });
46
+ jQuery("#linkedin-login").on("click",function(){
47
+ if(jQuery(this).hasClass("pro-only")) return false;
48
+ if(jQuery(this).hasClass("rop-not-version")) return false;
49
+ jQuery(".cwp_lkapp_preview").show();
50
+ return false;
51
+ });
52
+ jQuery("#xing-login").on("click",function(){
53
+ if(jQuery(this).hasClass("pro-only")) return false;
54
+ if(jQuery(this).hasClass("rop-not-version")) return false;
55
+ jQuery(".cwp_xingapp_preview").show();
56
+ return false;
57
+ });
58
+ jQuery("#tumblr-login").on("click",function(){
59
+ if(jQuery(this).hasClass("pro-only")) return false;
60
+ if(jQuery(this).hasClass("rop-not-version")) return false;
61
+ jQuery(".cwp_tumblrapp_preview").show();
62
+ return false;
63
+ });
64
+ jQuery("#facebook-login").on("click",function(){
65
+ if(jQuery(this).hasClass("pro-only")) return false;
66
+ if(jQuery(this).hasClass("rop-not-version")) return false;
67
+ if(jQuery(this).hasClass("another-account")){
68
+ addFacebook()
69
+ }else{
70
+ jQuery(".cwp_fbapp_preview").show();
71
+ }
72
+ return false;
73
+ });
74
+ jQuery("#facebook-login").on("click",function(){
75
+ if(jQuery(this).hasClass("pro-only")) return false;
76
+ if(jQuery(this).hasClass("rop-not-version")) return false;
77
+ if(jQuery(this).hasClass("another-account")){
78
+ addFacebook()
79
+ }else{
80
+ jQuery(".cwp_fbapp_preview").show();
81
+ }
82
+ return false;
83
+ });
84
+ jQuery("#cwp_remote_check").on("click",function(){
85
+
86
+ var state = "";
87
+ var th = jQuery(this);
88
+ if(th.hasClass("on")){
89
+ state = "off";
90
+ th.addClass("off").removeClass("on");
91
+ }else{
92
+ state = "on";
93
+ th.addClass("on").removeClass("off");
94
+ }
95
+ jQuery.ajax({
96
+ type: "POST",
97
+ url: cwp_top_ajaxload.ajaxurl,
98
+ data: {
99
+ action: 'remote_trigger',
100
+ state:state
101
+ },
102
+ success: function(response) {
103
+ console.log(response);
104
+ },
105
+ error: function(response) {
106
+ console.log("Error: "+ response);
107
+ }
108
+ });
109
+ return false;
110
+ })
111
+ jQuery("#rop-beta-button").on("click",function(){
112
+
113
+ var state = "";
114
+ var th = jQuery(this);
115
+ if(th.hasClass("on")){
116
+ state = "off";
117
+ th.addClass("off").removeClass("on");
118
+ }else{
119
+ state = "on";
120
+ th.addClass("on").removeClass("off");
121
+ }
122
+ jQuery.ajax({
123
+ type: "POST",
124
+ url: cwp_top_ajaxload.ajaxurl,
125
+ data: {
126
+ action: 'beta_user_trigger',
127
+ state:state
128
+ },
129
+ success: function(response) {
130
+ console.log(response);
131
+ },
132
+ error: function(response) {
133
+ console.log("Error: "+ response);
134
+ }
135
+ });
136
+ return false;
137
+ });
138
+
139
+ function cwpTopUpdateForm() {
140
+ startAjaxIntro();
141
+ var data = jQuery("#cwp_top_form").serialize();
142
+ //console.log(data);
143
+
144
+ var formData = {
145
+ action:'updateAllOptions',
146
+ dataSent:data
147
+ }
148
+
149
+ jQuery.ajax({
150
+ type: "POST",
151
+ url: cwp_top_ajaxload.ajaxurl,
152
+ async:false,
153
+ data: {
154
+ action: "update_response",
155
+ dataSent: formData
156
+ },
157
+ success: function(response) {
158
+ console.log(response);
159
+ },
160
+ error: function(MLHttpRequest, textStatus, errorThrown) {
161
+ console.log("There was an error: "+errorThrown);
162
+ }
163
+ });
164
+
165
+ endAjaxIntro();
166
+ return false;
167
+ }
168
+
169
+ function cwpTopUpdateFormWithoIntro() {
170
+ //startAjaxIntro();
171
+ var data = jQuery("#cwp_top_form").serialize();
172
+ //console.log(data);
173
+
174
+ var formData = {
175
+ action:'updateAllOptions',
176
+ dataSent:data
177
+ }
178
+
179
+ jQuery.ajax({
180
+ type: "POST",
181
+ url: cwp_top_ajaxload.ajaxurl,
182
+ data: {
183
+ action: "update_response",
184
+ dataSent: formData
185
+ },
186
+ success: function(response) {
187
+ console.log(response);
188
+ },
189
+ error: function(MLHttpRequest, textStatus, errorThrown) {
190
+ console.log("There was an error: "+errorThrown);
191
+ }
192
+ });
193
+
194
+ //endAjaxIntro();
195
+ return false;
196
+ }
197
+
198
+
199
+
200
+
201
+
202
+
203
+ function addFacebook(){
204
+ var service = "facebook";
205
+
206
+ startAjaxIntro();
207
+ jQuery.ajax({
208
+ type: "POST",
209
+ url: cwp_top_ajaxload.ajaxurl,
210
+ data: {
211
+ action: "display_pages",
212
+ currentURL: jQuery("#cwp_top_currenturl").val(),
213
+ social_network: service
214
+ },
215
+ success: function(response) {
216
+ switch (service) {
217
+
218
+ case 'facebook':
219
+ var elem = jQuery(".cwp_top_wrapper .cwp_user_pages");
220
+ elem.fadeIn().addClass("active");
221
+
222
+ var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
223
+ jQuery('html, body').scrollTop(scrollhere);
224
+ response = JSON.parse(response);
225
+ html='';
226
+ data = response.data;
227
+
228
+ for (i = 0; i < data.length; i++) {
229
+ // if (jQuery(".remove_user a[service=facebook").attr("id")!==data[i].id) {
230
+ html+="<a href='#' class='cwp_preview_page' service='"+service+"' pagetoken='"+data[i].access_token+"' pageid='"+data[i].id+"'>";
231
+ profile_image = 'https://graph.facebook.com/'+data[i].id+'/picture';
232
+ name = data[i].name;
233
+ category = data[i].category.substr(0,9);
234
+ html+="<div class='page_avatar'><img src='"+profile_image+"'/></div><div class='page_name'>"+name+"</div><div class='page_category'>"+category+"</div></a>";
235
+ //}
236
+ }
237
+ //html+='<button class="top_close_popup">Close preview</button>';
238
+ //data.length = 3;
239
+ fheight = (Math.ceil(data.length / 4) )*95;
240
+ //if (fheight<=0) fheight = 175;
241
+ jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_user_pages_inner ").html(html);
242
+ jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_user_pages_inner ").height(fheight);
243
+ jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_sample_tweet_preview_inner ").height(fheight+120);
244
+
245
+ endAjaxIntro();
246
+ break;
247
+
248
+
249
+ case 'linkedin':
250
+ var elem = jQuery(".cwp_top_wrapper .cwp_user_pages");
251
+ elem.fadeIn().addClass("active");
252
+
253
+ var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
254
+ jQuery('html, body').scrollTop(scrollhere);
255
+ response = JSON.parse(response);
256
+ html='';
257
+ data = response.data;
258
+ for (i = 0; i < data.length; i++) {
259
+ html+="<a href='#' class='cwp_preview_page' service='"+service+"' pagetoken='"+data[i].access_token+"' pageid='"+data[i].id+"'>";
260
+ profile_image = 'https://graph.facebook.com/'+data[i].id+'/picture';
261
+ name = data[i].name;
262
+ category = data[i].category.substr(0,9);
263
+ html+="<div class='page_avatar'><img src='"+profile_image+"'/></div><div class='page_name'>"+name+"</div><div class='page_category'>"+category+"</div></a>";
264
+
265
+ }
266
+ jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_user_pages_inner ").html(html);
267
+ endAjaxIntro();
268
+ break;
269
+ }
270
+
271
+ },
272
+ error: function(MLHttpRequest, textStatus, errorThrown) {
273
+ console.log("There was an error: " + errorThrown);
274
+ }
275
+ });
276
+
277
+
278
+
279
+ return false;
280
+ }
281
+
282
+ // Add New Account
283
+ if ((cwpfbadd) && jQuery("#cwp_top_currenturl").attr("data-cnetwork")!= 'tumblr') {
284
+ addFacebook();
285
+ };
286
+
287
+ // Add New Twitter Account
288
+ jQuery("#twitter-login,.top_authorize").click(function(e){
289
+
290
+ if(jQuery(this).hasClass("rop-not-version")) return false;
291
+ var service = jQuery(this).attr('service');
292
+ var action = "add_new_account";
293
+ var extra = {};
294
+ if(service != 'twitter'){
295
+ e.preventDefault();
296
+ startAjaxIntro();
297
+ if (service=='facebook') {
298
+ extra.app_id = jQuery("#top_opt_app_id").val();
299
+ extra.app_secret = jQuery("#top_opt_app_secret").val();
300
+ }
301
+
302
+ if(service == 'linkedin') {
303
+ extra.app_id = jQuery("#top_opt_app_id_lk").val();
304
+ extra.app_secret = jQuery("#top_opt_app_secret_lk").val();
305
+ }
306
+ if(service == 'xing') {
307
+ extra.app_id = jQuery("#top_opt_app_id_xing").val();
308
+ extra.app_secret = jQuery("#top_opt_app_secret_xing").val();
309
+ }
310
+ if(service == 'tumblr') {
311
+ extra.app_id = jQuery("#top_opt_app_id_tumblr").val();
312
+ extra.app_secret = jQuery("#top_opt_app_secret_tumblr").val();
313
+ extra.app_url = jQuery("#top_opt_app_url_tumblr").val();
314
+ }
315
+
316
+
317
+ }
318
+ startAjaxIntro();
319
+ jQuery.ajax({
320
+ type: "POST",
321
+ url: cwp_top_ajaxload.ajaxurl,
322
+ data: {
323
+ action: action,
324
+ currentURL: jQuery("#cwp_top_currenturl").val(),
325
+ social_network: service,
326
+ extra:extra
327
+ },
328
+ dataType:"json",
329
+ success: function(response) {
330
+
331
+ if(response.url){
332
+ window.location.href = response.url;
333
+ }else{
334
+ jQuery(".cwp_fbapp_preview").hide();
335
+ jQuery(".cwp_lkapp_preview").hide();
336
+ endAjaxIntro();
337
+
338
+ }
339
+ /*if (response.indexOf("upgrade to the PRO")===-1) {
340
+ switch (service) {
341
+ case 'twitter':
342
+ window.location.href = response;
343
+ break;
344
+ case 'facebook':
345
+ if (another===0) {
346
+
347
+ var elem = jQuery(".cwp_top_wrapper .cwp_fbapp_preview")
348
+ elem.fadeIn().addClass("active");
349
+
350
+ var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
351
+ jQuery('html, body').scrollTop(scrollhere);
352
+ } else {
353
+ addFacebook();
354
+ }
355
+ endAjaxIntro();
356
+
357
+ break;
358
+ case 'linkedin':
359
+ var elem = jQuery(".cwp_top_wrapper .cwp_lkapp_preview")
360
+ elem.fadeIn().addClass("active");
361
+
362
+ var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
363
+ jQuery('html, body').scrollTop(scrollhere);
364
+ // html = "<input type='text' placeholder='App key'/>";
365
+ //jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet").html(html);
366
+ endAjaxIntro();
367
+ break;
368
+ }
369
+ }else {
370
+ jQuery(".cwp_top_status .inactive").html(response);
371
+ endAjaxIntro();
372
+ }*/
373
+
374
+
375
+ },
376
+ error: function(MLHttpRequest, textStatus, errorThrown) {
377
+ console.log("There was an error: " + errorThrown);
378
+ }
379
+ });
380
+
381
+ return false;
382
+ });
383
+
384
+ // Log Out Twitter User
385
+ jQuery("#cwp_top_form .logout_user").click(function(e){
386
+ e.preventDefault();
387
+ startAjaxIntro();
388
+
389
+ var userID = jQuery(this).attr('id');
390
+
391
+ jQuery.ajax({
392
+ type: "POST",
393
+ url: cwp_top_ajaxload.ajaxurl,
394
+ data: {
395
+ action: "log_out_user",
396
+ user_id: userID
397
+ },
398
+ success: function(response) {
399
+ window.location.href = jQuery("#cwp_top_currenturl").val();
400
+ },
401
+ error: function(MLHttpRequest, textStatus, errorThrown) {
402
+ console.log("There was an error: "+errorThrown);
403
+ }
404
+ });
405
+
406
+ endAjaxIntro();
407
+ });
408
+ jQuery("#rop-clear-log").on("click",function(){
409
+ clearNotices();
410
+ jQuery.ajax({
411
+ type: "POST",
412
+ url: cwp_top_ajaxload.ajaxurl,
413
+ data: {
414
+ action: "rop_clear_log"
415
+ }
416
+ });
417
+ return false;
418
+ })
419
+ // Start Tweet
420
+ jQuery("#tweet-now").click(function(e){
421
+
422
+ startAjaxIntro();
423
+ cwpTopUpdateForm();
424
+
425
+ jQuery.ajax({
426
+ type: "POST",
427
+ url: cwp_top_ajaxload.ajaxurl,
428
+ data: {
429
+ action: "tweet_old_post_action"
430
+ },
431
+ success: function(response) {
432
+
433
+ location.reload();
434
+ },
435
+ error: function(MLHttpRequest, textStatus, errorThrown) {
436
+ console.log("There was an error: "+errorThrown);
437
+ }
438
+ });
439
+
440
+ endAjaxIntro();
441
+ });
442
+
443
+ setInterval(function(){ jQuery.ajax({
444
+ type: "POST",
445
+ url: cwp_top_ajaxload.ajaxurl,
446
+ data: {
447
+ action: "getNotice_action"
448
+ },
449
+ dataType:"json",
450
+ success: function(response) {
451
+
452
+ if(response.length > 0 ){
453
+ jQuery(".inactive-rop-error-label").hide();
454
+ jQuery(".active-rop-error-label").show();
455
+ jQuery(".rop-error-log span").html(response.length).removeClass('no-error');
456
+ jQuery(".active-rop-error-label").html( " You have <b>" + response.length + " </b>new messages ! Go to Log tab to see them");
457
+ jQuery("#rop-log-list").html('');
458
+ jQuery.each(response,function(k,v){
459
+
460
+ jQuery("#rop-log-list").append('<li class="rop-log-item rop-'+ v.type +'"> <span class="rop-log-date">' + v.time + '</span> <span class="rop-log-text">'+ v.message+ '</span> </li>');
461
+
462
+
463
+ })
464
+
465
+ }else{
466
+ clearNotices();
467
+ jQuery("#rop-log-list").html('<li class="rop-log-item rop-notice"> <span class="rop-log-text">You have no messages ! </span> </li>');
468
+
469
+ }
470
+
471
+ }
472
+ } )
473
+ },3000);
474
+
475
+ jQuery("#see-sample-tweet").click(function(e){
476
+ if(!cwpTopCheckAccounts()){
477
+ jQuery("#tabs_menu li:first").trigger("click");
478
+ showCWPROPError("You need to add an account in order to start posting.");
479
+ return false;
480
+ }
481
+ e.preventDefault();
482
+ startAjaxIntro();
483
+ cwpTopUpdateFormWithoIntro();
484
+ jQuery.ajax({
485
+ type: "POST",
486
+ url: cwp_top_ajaxload.ajaxurl,
487
+ data: {
488
+ action: "view_sample_tweet_action"
489
+ },
490
+ success: function(response) {
491
+ if(response !== '') {
492
+
493
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").fadeIn().addClass("active");
494
+
495
+ //jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").css("top", ( jQuery(window).height() - this.height() ) / 2+jQuery(window).scrollTop() + "px");
496
+ //jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").css("left", ( jQuery(window).width() - this.width() ) / 2+jQuery(window).scrollLeft() + "px");
497
+ var elem = jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview");
498
+
499
+ jQuery(window).scrollTop(0);
500
+
501
+ $json = JSON.parse(response);
502
+
503
+ if($json .twitter)
504
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_twitter").html($json .twitter);
505
+ else
506
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_twitter").hide().prev().hide();
507
+ if($json .facebook)
508
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_facebook").html( $json .facebook) ;
509
+ else
510
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_facebook").hide().prev().hide();
511
+ if($json .linkedin)
512
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_linkedin").html( $json .linkedin);
513
+ else
514
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_linkedin").hide().prev().hide();
515
+ if($json .xing)
516
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_xing").html( $json .xing);
517
+ else
518
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_xing").hide().prev().hide();
519
+ if($json .tumblr)
520
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_tumblr").html( $json .tumblr);
521
+ else
522
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_tumblr").hide().prev().hide();
523
+
524
+ }
525
+ endAjaxIntro();
526
+ },
527
+ error: function(MLHttpRequest, textStatus, errorThrown) {
528
+ console.log("There was an error: "+errorThrown);
529
+ endAjaxIntro();
530
+ }
531
+ });
532
+
533
+
534
+ });
535
+
536
+ // Stop Tweet Old Post
537
+ jQuery("#stop-tweet-old-post").click(function(e){
538
+ e.preventDefault();
539
+ startAjaxIntro();
540
+ cwpTopUpdateForm();
541
+
542
+ jQuery.ajax({
543
+ type: "POST",
544
+ url: cwp_top_ajaxload.ajaxurl,
545
+ data: {
546
+ action: "stop_tweet_old_post"
547
+ },
548
+ success: function(response) {
549
+ if(response !== '') {
550
+ jQuery('.cwp_top_wrapper').append(response);
551
+ }
552
+ location.reload();
553
+ },
554
+ error: function(MLHttpRequest, textStatus, errorThrown) {
555
+ console.log("There was an error: "+errorThrown);
556
+ }
557
+ });
558
+ endAjaxIntro();
559
+ //location.reload();
560
+ });
561
+
562
+ jQuery(".cwp_sample_tweet_preview_inner button.top_close_popup").on("click",function(e){
563
+ jQuery(this).parent().parent().fadeOut().removeClass("active");
564
+ });
565
+
566
+ jQuery(".cwp_user_pages_inner button.top_close_popup").on("click",function(e){
567
+ e.preventDefault();
568
+ jQuery(this).parent().parent().parent().fadeOut().removeClass("active");
569
+ return false;
570
+ });
571
+
572
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner button.tweetitnow").click(function(e){
573
+ e.preventDefault();
574
+ startAjaxIntro();
575
+
576
+ jQuery.ajax({
577
+ type: "POST",
578
+ url: cwp_top_ajaxload.ajaxurl,
579
+ data: {
580
+ action: "tweet_now_action"
581
+ },
582
+ success: function(response) {
583
+ endAjaxIntro();
584
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").fadeOut().removeClass("active");
585
+ jQuery('html, body').animate({
586
+ scrollTop: jQuery(".cwp_top_wrapper .cwp_top_status").offset().top
587
+ }, 1000);
588
+ },
589
+ error: function(MLHttpRequest, textStatus, errorThrown) {
590
+ console.log("There was an error: "+errorThrown);
591
+ endAjaxIntro();
592
+ }
593
+ });
594
+ });
595
+
596
+ // Transform the date into a countdown.
597
+ var nextTweetDate = jQuery(".cwp_top_container .nextTweet").html();
598
+ jQuery(".cwp_top_container .nextTweet").html('');
599
+ if(nextTweetDate){
600
+ jQuery(".cwp_top_container .nextTweet").countdown({
601
+ date: nextTweetDate
602
+ });
603
+ }
604
+ jQuery(".rop-network-countdown").each(function() {
605
+ var span = jQuery(this).find('.rop-network-timestamp');
606
+ var timestamp = parseInt(span.attr('data-timestamp'));
607
+
608
+ if (!isNaN(timestamp)) {
609
+ span.countdownPlugin(timestamp * 1000).on('update.countdown', function(event) {
610
+ var format = '%H hr %M m %S s';
611
+ if(event.offset.days > 0) {
612
+ format = '%-d day%!d ' + format;
613
+ }
614
+ if(event.offset.weeks > 0) {
615
+ format = '%-w week%!w ' + format;
616
+ }
617
+ jQuery(this).html(event.strftime(format));
618
+ }).on('finish.countdown', function(event) {
619
+ var th = jQuery(this).parent();
620
+ th.html("Please wait ....");
621
+ setTimeout(function(){
622
+ th.html("You can refresh the page to see the next schedule !");
623
+
624
+ },1000)
625
+
626
+ });
627
+ span.parent().show();
628
+ }else{
629
+ span.parent().hide();
630
+ }
631
+ })
632
+
633
+ jQuery(".cwp-cpt-checkbox").click(function(){
634
+ var ck = false;
635
+ var th = jQuery(this);
636
+ var val = th.val();
637
+ if(th.is(":checked")){
638
+
639
+ ck = true;
640
+ }else{
641
+
642
+ ck = false;
643
+ }
644
+ if(ck){
645
+
646
+ jQuery(".cwp-tax-"+val).show();
647
+
648
+ }else{
649
+
650
+ jQuery(".cwp-tax-"+val + " input").removeAttr("checked");
651
+ jQuery(".cwp-tax-"+val).hide();
652
+
653
+ }
654
+
655
+ });
656
+ // Starting the AJAX intro animation
657
+ function startAjaxIntro() {
658
+ jQuery(".cwp_top_wrapper .ajaxAnimation").fadeIn();
659
+ }
660
+
661
+ // Ending the AJAX intro animation
662
+ function endAjaxIntro() {
663
+ jQuery(".cwp_top_wrapper .ajaxAnimation").fadeOut();
664
+ }
665
+
666
+ // Reset all checkboxes and clear textareas
667
+ jQuery.fn.cwpTopResetForm = function() {
668
+ //jQuery(this).find("input[type=text], textarea").val("");
669
+ //jQuery(this).find("input[type=radio], input[type=checkbox]").checked = false;
670
+ }
671
+
672
+ jQuery("body").on('click',function(e){
673
+
674
+
675
+ if (jQuery(e.target).parent().hasClass("cwp_preview_page")) {
676
+ e.preventDefault();
677
+
678
+ startAjaxIntro();
679
+ var service = jQuery(e.target).parent().attr('service');
680
+ var access_token = jQuery(e.target).parent().attr('pagetoken');
681
+ var page_id = jQuery(e.target).parent().attr('pageid');
682
+
683
+ jQuery.ajax({
684
+ type: "POST",
685
+ url: cwp_top_ajaxload.ajaxurl,
686
+ data: {
687
+ action: "add_pages",
688
+ currentURL: jQuery("#cwp_top_currenturl").val(),
689
+ social_network: service,
690
+ page_token:access_token,
691
+ page_id:page_id,
692
+ picture_url: jQuery(e.target).parent().children().children('img').attr('src'),
693
+ page_name: jQuery(e.target).parent().children('.page_name').text()
694
+ },
695
+ success: function(response) {
696
+ switch (service) {
697
+
698
+ case 'facebook':
699
+ endAjaxIntro();
700
+ jQuery(".cwp_top_wrapper .cwp_user_pages").fadeOut().removeClass("active");
701
+ window.location.href = response;
702
+ break;
703
+
704
+ case 'linkedin':
705
+ endAjaxIntro();
706
+ jQuery(".cwp_top_wrapper .cwp_user_pages").fadeOut().removeClass("active");
707
+ window.location.href = response;
708
+ break;
709
+ }
710
+
711
+ },
712
+ error: function(MLHttpRequest, textStatus, errorThrown) {
713
+ console.log("There was an error: " + errorThrown);
714
+ }
715
+ });
716
+ return false;
717
+ }
718
+
719
+ });
720
+
721
+ // Select all function
722
+ jQuery("button.select-all").click(function(e){
723
+ e.preventDefault();
724
+ if(jQuery(this).hasClass('active')) {
725
+ jQuery(this).removeClass('active').text('Select All');
726
+ jQuery(this).parent().parent().find('.right input[type=checkbox]').attr('checked', false);
727
+ } else {
728
+ jQuery(this).addClass('active').text('Deselect All');
729
+ jQuery(this).parent().parent().find('.right input[type=checkbox]').attr('checked', true);
730
+ }
731
+ });
732
+ jQuery(".option[data-dependent] select, .option[data-dependent] input[type='checkbox']").change(function(){
733
+ cwpDependeField(jQuery(this).closest('.option'));
734
+ });
735
+
736
+ jQuery("#cwp_top_tabs ul#tabs_menu li ").not(".not-tab").click(function() {
737
+ jQuery("#cwp_top_tabs ul#tabs_menu li").removeClass("active");
738
+ jQuery("#cwp_top_tabs div.tab").removeClass("active");
739
+ var th = jQuery(this);
740
+ var index = th.index();
741
+ th.addClass("active");
742
+
743
+
744
+ jQuery("#cwp_top_tabs div.tab").eq(index).addClass("active");
745
+
746
+ return false
747
+ });
748
+ jQuery(".cwp-schedule-days li").click(function(){
749
+ var th = jQuery(this);
750
+ if(th.hasClass("active")){
751
+ th.removeClass('active');
752
+ }else{
753
+
754
+ th.addClass('active');
755
+ }
756
+
757
+ })
758
+ jQuery(".cwp-schedule-days li").click(function(){
759
+ var container = jQuery(this).parent().parent();
760
+ cwpTopRefreshPostingDays(container);
761
+
762
+ })
763
+ jQuery(".cwp-populate-hidden-radio").click(function(){
764
+ var th = jQuery(this);
765
+ var id = th.attr('data-hidden');
766
+ var value = th.attr('data-value');
767
+ jQuery("#"+id).val(value);
768
+
769
+ })
770
+ jQuery(".cwp-populate-hidden-checkbox").click(function(){
771
+ var th = jQuery(this);
772
+ var id = th.parent().attr('data-hidden');
773
+ var values = [];
774
+ th.parent().find('.active').each(function(){
775
+ var ith = jQuery(this);
776
+ values.push(ith.attr('data-value'));
777
+ });
778
+ jQuery("#"+id).val(values.join(','));
779
+
780
+ })
781
+ jQuery(".cwp-according-item .cwp-according-header").click(function(){
782
+
783
+ var th = jQuery(this).parent();
784
+ if(th.hasClass('active')) return false;
785
+ var active = th.parent().children(".active");
786
+
787
+
788
+ active.find(".cwp-according-body").slideUp(100,function(){
789
+ active.removeClass('active');
790
+ });
791
+ th.find(".cwp-according-body").slideDown(100,function(){
792
+ th.addClass('active');
793
+ });
794
+ return false;
795
+ });
796
+ jQuery(".cwp_top_tabs_vertical .cwp_top_tabs_btns li ").not('.not-tab').click(function() {
797
+
798
+ var th = jQuery(this);
799
+ if(th.parent().parent().find(".tab-vertical").is(":animated")) return false;
800
+ var index = th.index();
801
+ th.parent().parent().find(".tab-vertical.active").fadeOut(200,function(){
802
+ jQuery(this).removeClass("active");
803
+ th.parent().find("li").removeClass("active");
804
+ th.parent().parent().find(".tab-vertical").eq(index).fadeIn(200,function(){
805
+ jQuery(this).addClass("active");
806
+ th.parent().find("li").eq(index).addClass("active");
807
+ } );
808
+ } );
809
+
810
+
811
+ return false
812
+ });
813
+
814
+ jQuery("#cwp_top_tabs").on("click",".cwp-top-times-close",function(){
815
+ var li = jQuery(this).parent();
816
+ li.remove();
817
+ cwpTopRefreshPostingDays( );
818
+ })
819
+ jQuery(".cwp-add-posting-time").click(function(){
820
+
821
+ var container = jQuery(this).parent().parent();
822
+ var network = jQuery(this).closest('.tab-vertical').attr('data-network');
823
+ container.find(".cwp-posting-times").append(getCwpTopTimeHTML(network));
824
+
825
+ cwpTopRefreshPostingDays(container);
826
+ return false;
827
+ })
828
+ cwpBindCheckedHidden();
829
+ cwpLoadPostFormaFields();
830
+
831
+ cwpTopBindTimes();
832
+ jQuery(".cwp-custom-schedule-days").each(function(){
833
+ var container = jQuery(this);
834
+ cwpTopRefreshPostingDays(container);
835
+ });
836
+
837
+ jQuery(".cwp-cpt-checkbox").each(function(){
838
+ var th = jQuery(this);
839
+ if(th.is(":checked")){
840
+
841
+ jQuery(".cwp-tax-"+th.val()).show();
842
+
843
+ }
844
+
845
+ });
846
+
847
+ jQuery(".login.pro-only").click(function(e){
848
+ if(!ropProAvailable){
849
+ window.open(
850
+ 'https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=imagepro&utm_medium=link&utm_campaign=top&upgrade=true',
851
+ '_blank'
852
+ );
853
+ return false;
854
+ }
855
+ });
856
+ });
857
+
858
+ function cwpDependeField(field,second){
859
+
860
+ var dvalues = field.attr("data-dependent");
861
+ if(dvalues === undefined) return false;
862
+ var value;
863
+
864
+ if(field.find("select").length != 0 ){
865
+
866
+ value = field.find("select").val();
867
+
868
+ }
869
+ if(field.find("input[type='checkbox']").length != 0 ){
870
+ if(field.find("input[type='checkbox']").is(":checked")){
871
+
872
+ value = 'true';
873
+
874
+ }else{
875
+
876
+ value = 'false';
877
+ }
878
+
879
+ }
880
+ var json = JSON.parse(dvalues);
881
+ var item;
882
+
883
+ var tmpvalues;
884
+ jQuery.each(json,function(k,v){
885
+ item = field.parent().find(".twp"+k);
886
+ v = v.split(',');
887
+ if(jQuery.inArray(value,v) > -1 && !second){
888
+ item.slideDown('fast');
889
+ cwpDependeField(item);
890
+ }else{
891
+
892
+ item.slideUp('fast');
893
+ cwpDependeField(item,true);
894
+ }
895
+
896
+ });
897
+
898
+ }
899
+ function getCwpTopTimeHTML(network){
900
+ var cwp_top_time = '<li class="clearfix cwp-top-times-choice">\
901
+ <select class="cwp-top-times-hours" name="'+network+'_time_choice_hour[]">\
902
+ <option value="00">00</option>\
903
+ <option value="01">01</option>\
904
+ <option value="02">02</option>\
905
+ <option value="03">03</option>\
906
+ <option value="04">04</option>\
907
+ <option value="05">05</option>\
908
+ <option value="06">06</option>\
909
+ <option value="07">07</option>\
910
+ <option value="08">08</option>\
911
+ <option value="09">09</option>\
912
+ <option value="10">10</option>\
913
+ <option value="11">11</option>\
914
+ <option value="12">12</option>\
915
+ <option value="13">13</option>\
916
+ <option value="14">14</option>\
917
+ <option value="15">15</option>\
918
+ <option value="16">16</option>\
919
+ <option value="17">17</option>\
920
+ <option value="18">18</option>\
921
+ <option value="19">19</option>\
922
+ <option value="20">20</option>\
923
+ <option value="21">21</option>\
924
+ <option value="22">22</option>\
925
+ <option value="23">23</option>\
926
+ </select> : \
927
+ <select class="cwp-top-times-hours" name="'+network+'_time_choice_min[]">\
928
+ <option value="00">00</option>\
929
+ <option value="01">01</option>\
930
+ <option value="02">02</option>\
931
+ <option value="03">03</option>\
932
+ <option value="04">04</option>\
933
+ <option value="05">05</option>\
934
+ <option value="06">06</option>\
935
+ <option value="07">07</option>\
936
+ <option value="08">08</option>\
937
+ <option value="09">09</option>\
938
+ <option value="10">10</option>\
939
+ <option value="11">11</option>\
940
+ <option value="12">12</option>\
941
+ <option value="13">13</option>\
942
+ <option value="14">14</option>\
943
+ <option value="15">15</option>\
944
+ <option value="16">16</option>\
945
+ <option value="17">17</option>\
946
+ <option value="18">18</option>\
947
+ <option value="19">19</option>\
948
+ <option value="20">20</option>\
949
+ <option value="21">21</option>\
950
+ <option value="22">22</option>\
951
+ <option value="23">23</option>\
952
+ <option value="24">24</option>\
953
+ <option value="25">25</option>\
954
+ <option value="26">26</option>\
955
+ <option value="27">27</option>\
956
+ <option value="28">28</option>\
957
+ <option value="29">29</option>\
958
+ <option value="30">30</option>\
959
+ <option value="31">31</option>\
960
+ <option value="32">32</option>\
961
+ <option value="33">33</option>\
962
+ <option value="34">34</option>\
963
+ <option value="35">35</option>\
964
+ <option value="36">36</option>\
965
+ <option value="37">37</option>\
966
+ <option value="38">38</option>\
967
+ <option value="39">39</option>\
968
+ <option value="40">40</option>\
969
+ <option value="41">41</option>\
970
+ <option value="42">42</option>\
971
+ <option value="43">43</option>\
972
+ <option value="44">44</option>\
973
+ <option value="45">45</option>\
974
+ <option value="46">46</option>\
975
+ <option value="47">47</option>\
976
+ <option value="48">48</option>\
977
+ <option value="49">49</option>\
978
+ <option value="50">50</option>\
979
+ <option value="51">51</option>\
980
+ <option value="52">52</option>\
981
+ <option value="53">53</option>\
982
+ <option value="54">54</option>\
983
+ <option value="55">55</option>\
984
+ <option value="56">56</option>\
985
+ <option value="57">57</option>\
986
+ <option value="58">58</option>\
987
+ <option value="59">59</option>\
988
+ </select><span class="cwp-top-times-close">x</span>\
989
+ </li>';
990
+ return cwp_top_time;
991
+ }
992
+ function cwpBindCheckedHidden(){
993
+ jQuery(".cwp-populate-hidden-checkbox-group").each(function(){
994
+ var th = jQuery(this);
995
+ var field = th.attr('data-hidden');
996
+ var values = jQuery("#"+field).val();
997
+ values = values.split(',');
998
+
999
+ jQuery.each(values,function(k,v){
1000
+ th.find(".cwp-populate-hidden-checkbox[data-value='"+v+"']").addClass('active');
1001
+ });
1002
+
1003
+ })
1004
+
1005
+ }
1006
+
1007
+ function cwpTopBindTimes(){
1008
+
1009
+ jQuery(".cwp-posting-times").each(function(){
1010
+ var network = jQuery(this).closest('.tab-vertical').attr('data-network');
1011
+ var values = jQuery(this).attr('data-times');
1012
+ var th = jQuery(this);
1013
+ values = jQuery.parseJSON(values);
1014
+ if(values[0]){
1015
+ if(values[0].hour){
1016
+ jQuery.each(values,function(k,v){
1017
+ th.append(getCwpTopTimeHTML(network) );
1018
+ th.find("li:last select:first").val(v.hour);
1019
+ th.find("li:last select:last").val(v.minute);
1020
+ });
1021
+ }
1022
+ }
1023
+
1024
+ })
1025
+
1026
+ }
1027
+ function cwpTopRefreshPostingDays(container){
1028
+ if(container === undefined){
1029
+ jQuery(".cwp-custom-schedule-days").each(function(){
1030
+ var container = jQuery(this);
1031
+ cwpTopRefreshPostingDays(container);
1032
+ })
1033
+ return false;
1034
+ }
1035
+ var times = container.find(".cwp-top-times-choice").length;
1036
+ var days = [];
1037
+ var day = "";
1038
+ container.find('.cwp-populate-hidden-checkbox.active').each(function(){
1039
+ day = jQuery(this).text().substr(0,3);
1040
+ days.push(day);
1041
+ });
1042
+ container.find(".cwp-posts-time-info-days").text(days.join(","));
1043
+ container.find(".cwp-posts-time-info-times").text(times);
1044
+ }
1045
+ function cwpLoadPostFormaFields(){
1046
+ jQuery(".option[data-dependent], .option[data-dependent] ").each(function(){
1047
+ cwpDependeField(jQuery(this));
1048
+
1049
+ })
1050
+
1051
+ }
1052
+ function showCWPROPError(string){
1053
+ jQuery(".cwp_top_status p.cwp-error-label").css( "color", "red" );
1054
+ jQuery(".cwp_top_status p.cwp-error-label").html(string);
1055
+
1056
+ }
1057
+ function cwpTopCheckAccounts(){
1058
+ var users = jQuery(".user_details").length;
1059
+ return (users > 0);
1060
+
1061
+ }
1062
+ function clearNotices(){
1063
+ jQuery("#rop-log-list").html('');
1064
+ jQuery(".rop-error-log span").html('').addClass("no-error");
1065
+ jQuery(".active-rop-error-label").hide();
1066
+ jQuery(".inactive-rop-error-label").show();
1067
+
1068
+
1069
+ }
languages/tweet-old-post-de_DE.po CHANGED
@@ -1,692 +1,692 @@
1
- # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
- # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
- "POT-Creation-Date: 2014-07-16 00:01+0100\n"
8
- "PO-Revision-Date: 2014-07-16 00:07+0100\n"
9
- "Last-Translator: Ionut <friends@themeisle.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
- "X-Generator: Poedit 1.5.7\n"
15
- "X-Poedit-KeywordsList: _;__;_e\n"
16
- "X-Poedit-Basepath: ../\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
- "X-Poedit-SearchPath-1: inc\n"
19
-
20
- #: inc/class-remote-notification-client.php:260
21
- msgid "Dismiss notification"
22
- msgstr "Benachrichtigung verwerfen"
23
-
24
- #: inc/class-remote-notification-client.php:262
25
- msgid "Dismiss"
26
- msgstr "Verwerfen"
27
-
28
- #: inc/config.php:24
29
- msgid "Post Content"
30
- msgstr "Inhalt veröffentlichen"
31
-
32
- #: inc/config.php:28
33
- msgid "What do you want to share?"
34
- msgstr "Was möchten Sie teilen?"
35
-
36
- #: inc/config.php:30
37
- msgid "Title Only"
38
- msgstr "Nur Titel"
39
-
40
- #: inc/config.php:31
41
- msgid "Body Only"
42
- msgstr "Nur Text"
43
-
44
- #: inc/config.php:32
45
- msgid "Title & Body"
46
- msgstr "Titel & Text"
47
-
48
- #: inc/config.php:33
49
- msgid "Custom Field"
50
- msgstr "Benutzerdefiniertes Feld"
51
-
52
- #: inc/config.php:39
53
- msgid "Post Content Custom Field"
54
- msgstr "Inhalt veröffentlichen aus benutzerdefiniertem Feld"
55
-
56
- #: inc/config.php:43
57
- msgid "Which custom field do you want to fetch info from?"
58
- msgstr ""
59
- "Aus welchem benutzerdefinierten Feld möchten Sie Informationen abrufen?"
60
-
61
- #: inc/config.php:49
62
- msgid "Additional Text"
63
- msgstr "Zusätzlicher Text"
64
-
65
- #: inc/config.php:53
66
- msgid "Text added to your auto posts"
67
- msgstr "Text zu Ihren automatischen Beiträgen hinzugefügt"
68
-
69
- #: inc/config.php:59
70
- msgid "Additional Text At"
71
- msgstr "Zusätzlicher Text bei"
72
-
73
- #: inc/config.php:63
74
- msgid "Where do you want the text to be added?"
75
- msgstr "Wo soll der Text hinzugefügt werden?"
76
-
77
- #: inc/config.php:65
78
- msgid "Beginning of Post"
79
- msgstr "Anfang des Beitrags"
80
-
81
- #: inc/config.php:66
82
- msgid "End of Post"
83
- msgstr "Ende des Beitrags"
84
-
85
- #: inc/config.php:72
86
- msgid "Include Link"
87
- msgstr "Link einfügen"
88
-
89
- #: inc/config.php:76
90
- msgid "Include a link to your post?"
91
- msgstr "Soll ein Link zu Ihrem Beitrag hinzugefügt werden?"
92
-
93
- #: inc/config.php:78
94
- msgid "Yes"
95
- msgstr "Ja"
96
-
97
- #: inc/config.php:79
98
- msgid "No"
99
- msgstr "Nein"
100
-
101
- #: inc/config.php:85
102
- msgid "Fetch URL From Custom Field"
103
- msgstr "URL abrufen aus einem benutzerdefinierten Feld"
104
-
105
- #: inc/config.php:89
106
- msgid "URL will be fetched from a custom field."
107
- msgstr "Die URL wird aus einem benutzerdefinierten Feld abgerufen."
108
-
109
- #: inc/config.php:95
110
- msgid "URL Custom Field"
111
- msgstr "Benutzerdefiniertes URL-Feld"
112
-
113
- #: inc/config.php:99
114
- msgid "URL will be fetched from the specified custom field."
115
- msgstr "Die URL wird aus einem bestimmten benutzerdefinierten Feld abgerufen."
116
-
117
- #: inc/config.php:105
118
- msgid "Use URL Shortner"
119
- msgstr "Kurz-URL-Dienst verwenden"
120
-
121
- #: inc/config.php:117
122
- msgid "URL Shortner Service"
123
- msgstr "Kurz-URL-Dienst"
124
-
125
- #: inc/config.php:121
126
- msgid "Shorten the link to your post."
127
- msgstr "Kürzen Sie den Link zu Ihrem Beitrag."
128
-
129
- #: inc/config.php:123
130
- msgid "wp short url"
131
- msgstr "WP-Kurz-URL"
132
-
133
- #: inc/config.php:125
134
- msgid "is.gd"
135
- msgstr "is.gd"
136
-
137
- #: inc/config.php:126
138
- msgid "bit.ly"
139
- msgstr "bit.ly"
140
-
141
- #: inc/config.php:138
142
- msgid "Bitly Key"
143
- msgstr "Bitly-Schlüssel"
144
-
145
- #: inc/config.php:148
146
- msgid "Bitly User"
147
- msgstr "Bitly-Benutzer"
148
-
149
- #: inc/config.php:158
150
- msgid "Hashtags"
151
- msgstr "Hashtags"
152
-
153
- #: inc/config.php:162
154
- msgid "Include #hashtags in your auto posts?"
155
- msgstr "Möchten Sie #hashtags in Ihre automatischen Beiträge einbinden?"
156
-
157
- #: inc/config.php:164
158
- msgid "Don't add any hashtags"
159
- msgstr "Keine Hashtags hinzufügen"
160
-
161
- #: inc/config.php:165
162
- msgid "Common hashtags for all shares"
163
- msgstr "Gemeinsame Hashtags für alle geteilten Beiträge"
164
-
165
- #: inc/config.php:166
166
- msgid "Create hashtags from Categories"
167
- msgstr "Hashtags aus Kategorien erstellen"
168
-
169
- #: inc/config.php:167
170
- msgid "Create hashtags from Tags"
171
- msgstr "Hashtags aus Tags erstellen"
172
-
173
- #: inc/config.php:168
174
- msgid "Create hashtags from Custom Fields"
175
- msgstr "Hashtags aus benutzerdefinierten Feldern erstellen"
176
-
177
- #: inc/config.php:174
178
- msgid "Common Hashtags"
179
- msgstr "Gemeinsame Hashtags"
180
-
181
- #: inc/config.php:178
182
- msgid "Specify which hashtags you want to be used. eg. #example, #example2"
183
- msgstr ""
184
- "Geben Sie an, welche Hashtags Sie verwenden möchten, z. B. #beispiel, "
185
- "#beispiel2"
186
-
187
- #: inc/config.php:184
188
- msgid "Maximum Hashtags Length"
189
- msgstr "Maximale Hashtag-Länge"
190
-
191
- #: inc/config.php:188
192
- msgid "Set to 0 (characters) to include all."
193
- msgstr "Auf 0 (Zeichen) setzen, um alle zu berücksichtigen."
194
-
195
- #: inc/config.php:194
196
- msgid "Hashtag Custom Field"
197
- msgstr "Benutzerdefiniertes Hashtag-Feld"
198
-
199
- #: inc/config.php:198
200
- msgid "Fetch hashtags from specified custom field"
201
- msgstr "Hashtags aus einem bestimmten benutzerdefinierten Feld abrufen"
202
-
203
- #: inc/config.php:204
204
- msgid "Minimum interval between shares"
205
- msgstr "Mindestabstand zwischen geteilten Beiträgen"
206
-
207
- #: inc/config.php:208
208
- msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
209
- msgstr ""
210
- "Zeitlicher Mindestabstand zwischen geteilten Beiträgen (Stunde/Stunden), "
211
- "Angaben wie 0,4 sind ebenfalls möglich."
212
-
213
- #: inc/config.php:214
214
- msgid "Minimum age of post to be eligible for sharing"
215
- msgstr "Mindestalter der zu teilenden Beiträge"
216
-
217
- #: inc/config.php:218 inc/config.php:228
218
- msgid "Day/Days - 0 for Disabled"
219
- msgstr "Tag/Tage - 0 zum Deaktivieren"
220
-
221
- #: inc/config.php:224
222
- msgid "Maximum age of post to be eligible for sharing"
223
- msgstr "Maximales Alter der zu teilenden Beiträge"
224
-
225
- #: inc/config.php:234
226
- msgid "Number of Posts to share"
227
- msgstr "Anzahl der zu teilenden Beiträge"
228
-
229
- #: inc/config.php:238
230
- msgid "Number of posts to share each time"
231
- msgstr "Anzahl der Beiträge, die bei jedem Mal geteilt werden"
232
-
233
- #: inc/config.php:246
234
- msgid "Post with Image"
235
- msgstr "Mit Bild veröffentlichen"
236
-
237
- #: inc/config.php:250
238
- msgid "Check if you want to add the post featured image to the share"
239
- msgstr ""
240
- "Überprüfen Sie, ob Sie das zum Beitrag hinzugefügte Bild ebenfalls teilen "
241
- "möchten"
242
-
243
- #: inc/config.php:256
244
- msgid "Share old posts more than once"
245
- msgstr "Alte Beiträge mehr als einmal teilen"
246
-
247
- #: inc/config.php:260
248
- msgid ""
249
- "By default once a post is shared it will not be shared again until you stop/"
250
- "start the plugin"
251
- msgstr ""
252
- "Sobald ein Beitrag geteilt wurde, wird dieser standardmäßig nicht wieder "
253
- "geteilt, bis Sie das Plugin gestartet/gestoppt haben."
254
-
255
- #: inc/config.php:268
256
- msgid "Post Type"
257
- msgstr "Beitragstyp"
258
-
259
- #: inc/config.php:272
260
- msgid "What type of items do you want to share?"
261
- msgstr "Welche Elemente sollen geteilt werden?"
262
-
263
- #: inc/config.php:279
264
- msgid "Google Analytics Campaign Tracking"
265
- msgstr "Google Analytics Kampagnen-Tracking"
266
-
267
- #: inc/config.php:283
268
- msgid ""
269
- "Enabling Campaign Tracking you would be able to see how much traffic Revive "
270
- "Old Post generated."
271
- msgstr ""
272
- "Über das Kampagnen-Tracking können Sie nachvollziehen, wie viel "
273
- "Traffic Revive Old Post generiert hat."
274
-
275
- #: inc/config.php:289
276
- msgid "Exclude Specific Categories"
277
- msgstr "Bestimmte Kategorien ausschließen"
278
-
279
- #: inc/config.php:293
280
- msgid ""
281
- "Select which categories do you want to exclude to share from? Blank - None"
282
- msgstr ""
283
- "Wählen Sie aus, welche Kategorien Sie vom Teilen ausschließen möchten? Feld "
284
- "frei lassen = nichts ausschließen."
285
-
286
- #: inc/core.php:81
287
- msgid "Tweet Old Post is already active!"
288
- msgstr "Tweet Old Post ist bereits aktiv!"
289
-
290
- #: inc/core.php:101
291
- #, fuzzy
292
- msgid "ROP is already inactive!"
293
- msgstr "Tweet Old Post ist bereits inaktiv!"
294
-
295
- #: inc/core.php:811
296
- msgid "Custom Tweet User Interval"
297
- msgstr "Individuelles Twitter-Benutzerintervall"
298
-
299
- #: inc/core.php:1127
300
- msgid "Could not connect to Twitter!"
301
- msgstr "Es konnte keine Verbindung zu Twitter hergestellt werden!"
302
-
303
- #: inc/core.php:1385
304
- msgid "This is only available in the"
305
- msgstr "Dies steht nur zur Verfügung in der"
306
-
307
- #: inc/core.php:1385
308
- msgid "PRO version"
309
- msgstr "PRO-Version"
310
-
311
- #: inc/core.php:1644
312
- msgid "Exclude Posts"
313
- msgstr "Beiträge ausschließen"
314
-
315
- #: inc/exclude-posts.php:24
316
- msgid "Tweet Old Post Options Updated."
317
- msgstr "Optionen für Tweet Old Post aktualisiert."
318
-
319
- #: inc/exclude-posts.php:63
320
- msgid "No post selected please select a post to be excluded."
321
- msgstr ""
322
- "Es wurde kein Beitrag ausgewählt, bitte wählen Sie einen Beitrag aus, den "
323
- "Sie ausschließen möchten."
324
-
325
- #: inc/exclude-posts.php:70
326
- msgid "Posts excluded successfully."
327
- msgstr "Beiträge erfolgreich ausgeschlossen."
328
-
329
- #: inc/exclude-posts.php:155
330
- msgid "Selected Categories"
331
- msgstr "Ausgewählte Kategorien"
332
-
333
- #: inc/exclude-posts.php:157
334
- msgid "Filter"
335
- msgstr "Filtern"
336
-
337
- #: inc/exclude-posts.php:168
338
- msgid "&laquo;"
339
- msgstr "&laquo;"
340
-
341
- #: inc/exclude-posts.php:169
342
- msgid "&raquo;"
343
- msgstr "&ra"
344
-
345
- #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
346
- #, php-format
347
- msgid "Displaying %s&#8211;%s of %s"
348
- msgstr "%s&#8211;%s von %s angezeigt"
349
-
350
- #: inc/exclude-posts.php:356
351
- msgid "No Posts found. Review your search or filter criteria/term."
352
- msgstr ""
353
- "Keine Beiträge gefunden. Überprüfen Sie Ihre Suchbegriffe oder "
354
- "Filtereinstellungen."
355
-
356
- #: inc/exclude-posts.php:363
357
- msgid ""
358
- "You do not have enough permission to set the option. Please contact your "
359
- "admin."
360
- msgstr ""
361
- "Sie verfügen nicht über die erforderliche Berechtigungen, um diese Option "
362
- "festzulegen. Bitte kontaktieren Sie Ihren Administrator."
363
-
364
- #: inc/view-exclude.php:4 inc/view.php:3
365
- msgid "After 6 months of hard work, we have just released"
366
- msgstr "Nach 6 Monaten harter Arbeit haben wir vor kurzem"
367
-
368
- #: inc/view-exclude.php:4 inc/view.php:3
369
- msgid "the island of WordPress themes."
370
- msgstr "die Insel der Wordpress-Themes veröffentlicht."
371
-
372
- #: inc/view-exclude.php:5 inc/view.php:4
373
- msgid "Show Me"
374
- msgstr "Mehr zeigen"
375
-
376
- #: inc/view-exclude.php:15 inc/view.php:14
377
- msgid "by"
378
- msgstr "von"
379
-
380
- #: inc/view-exclude.php:18 inc/view.php:17
381
- msgid "Show your love"
382
- msgstr "Zeigen Sie Ihre Unterstützung"
383
-
384
- #: inc/view-exclude.php:19 inc/view.php:18
385
- msgid "Leave A Review"
386
- msgstr "Geben Sie eine Bewertung ab"
387
-
388
- #: inc/view-exclude.php:30
389
- msgid "Revive Old Post is set to share on a"
390
- msgstr "Revive Old Post teilt in einem Intervall von"
391
-
392
- #: inc/view-exclude.php:32 inc/view.php:31
393
- msgid "hours interval, "
394
- msgstr "Stunden "
395
-
396
- #: inc/view-exclude.php:33 inc/view.php:32
397
- msgid "and the next share will take place in: "
398
- msgstr "und der nächste Beitrag wird geteilt in: "
399
-
400
- #: inc/view-exclude.php:38
401
- msgid "Revive Old Post is not set to share!"
402
- msgstr "Revive Old Post wurde so eingestellt, dass es nichts teilt!"
403
-
404
- #: inc/view-exclude.php:42
405
- #, fuzzy
406
- msgid ""
407
- "You have selected following POST IDs to be excluded from tweeting: <span "
408
- "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
409
- "Note: If you have made any change and dint hit 'Exclude Selected' button "
410
- "changes will not be saved. "
411
- msgstr ""
412
- "Sie haben die folgenden POST-IDs ausgewählt, die nicht auf Twitter "
413
- "veröffentlicht werden sollen: <span id='excludeList' style='font-weight:bold;"
414
- "font-style:italic;'></span>.\n"
415
- "Hinweis: Sollten Sie Veränderungen vorgenommen und nicht auf \"Ausgewählte "
416
- "Beiträge ausschließen\" geklickt haben, so werden Ihre Änderungen nicht "
417
- "gespeichert. "
418
-
419
- #: inc/view.php:29
420
- msgid "Revive Old Post is set to post on a"
421
- msgstr "Revive Old Post veröffentlicht in einem Intervall von"
422
-
423
- #: inc/view.php:37
424
- msgid "Revive Old Post is not set to post!"
425
- msgstr "Revive Old Post wurde so eingestellt, dass es nichts veröffentlicht."
426
-
427
- #: inc/view.php:42
428
- msgid ""
429
- "Once you click start sharing a post will be sent in 15 sec, also here you "
430
- "can see the error message if is any."
431
- msgstr ""
432
- "Sobald Sie auf Veröffentlichen von Beiträgen starten klicken, wird ein "
433
- "Beitrag innerhalb von 15 Sekudnen gesendet. Eventuelle Fehlermeldungen "
434
- "werden hier angezeigt."
435
-
436
- #: inc/view.php:52
437
- msgid "Twitter Login"
438
- msgstr "Twitter-Login"
439
-
440
- #: inc/view.php:53
441
- msgid "Login using your Twitter account."
442
- msgstr "Melden Sie sich über Ihr Twitter-Konto an."
443
-
444
- #: inc/view.php:77 inc/view.php:111
445
- msgid "Add Account"
446
- msgstr "Konto hinzufügen"
447
-
448
- #: inc/view.php:84
449
- msgid "Facebook Login"
450
- msgstr "Facebook-Anmeldung"
451
-
452
- #: inc/view.php:85
453
- msgid "Login using your Facebook account."
454
- msgstr "Melden Sie sich über Ihr Facebook-Konto an."
455
-
456
- #: inc/view.php:109
457
- msgid "Authorize"
458
- msgstr "Berechtigen"
459
-
460
- #: inc/view.php:118
461
- msgid "Linkedin Login"
462
- msgstr "LinkedIn-Anmeldung"
463
-
464
- #: inc/view.php:119
465
- msgid "Login using your Linkedin account."
466
- msgstr "Melden Sie sich über Ihr LinkedIn-Konto an."
467
-
468
- #: inc/view.php:141
469
- msgid "Add account"
470
- msgstr "Konto hinzufügen"
471
-
472
- #: inc/view.php:154
473
- msgid "Select All"
474
- msgstr "Alle auswählen"
475
-
476
- #: inc/view.php:165
477
- msgid "Reset"
478
- msgstr "Zurücksetzen"
479
-
480
- #: inc/view.php:166
481
- msgid "Save"
482
- msgstr "Speichern"
483
-
484
- #: inc/view.php:167
485
- msgid "Start Sharing"
486
- msgstr "Teilen starten"
487
-
488
- #: inc/view.php:168
489
- msgid "Stop Sharing"
490
- msgstr "Teilen beenden"
491
-
492
- #: inc/view.php:169
493
- msgid "See Sample Post"
494
- msgstr "Siehe Beispiel-Beitrag"
495
-
496
- #: inc/view.php:171
497
- msgid ""
498
- "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
499
- msgstr "Wir stehen in keiner Verbindung zu Twitter/Facebook/Linkedin."
500
-
501
- #: inc/view.php:176
502
- msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
503
- msgstr ""
504
- "Führen Sie für nur $9,99 ein Upgrade für Tweet Old Post durch - Jetzt auf "
505
- "die Pro-Version upgraden!"
506
-
507
- #: inc/view.php:177
508
- msgid "ThemeIsle - Deadly Simple WordPress Themes"
509
- msgstr "ThemeIsle - Kinderleichte WordPress-Themes"
510
-
511
- #: inc/view.php:178
512
- msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
513
- msgstr ""
514
- "ThemeIsle - Bewerben Sie unsere Themes und Plug-Ins und erhalten Sie eine "
515
- "Provision von 55 %."
516
-
517
- #: inc/view.php:185
518
- #, fuzzy
519
- msgid "Sample Post Preview"
520
- msgstr "Siehe Beispiel-Beitrag"
521
-
522
- #: inc/view.php:187 inc/view.php:196 inc/view.php:242 inc/view.php:289
523
- msgid "Close preview"
524
- msgstr ""
525
-
526
- #: inc/view.php:188
527
- msgid "Share now"
528
- msgstr ""
529
-
530
- #: inc/view.php:194
531
- msgid "Choose a Profile or Page"
532
- msgstr ""
533
-
534
- #: inc/view.php:202
535
- msgid "Add Your Facebook Account Following The Instructions On The Left"
536
- msgstr ""
537
-
538
- #: inc/view.php:206 inc/view.php:252
539
- msgid "Go on"
540
- msgstr ""
541
-
542
- #: inc/view.php:207
543
- msgid "Click on <strong>Create New App</strong> from the top right corner"
544
- msgstr ""
545
-
546
- #: inc/view.php:208
547
- msgid ""
548
- "Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and "
549
- "click on Create App"
550
- msgstr ""
551
-
552
- #: inc/view.php:209
553
- msgid ""
554
- "Once you arrive on the app dashboard, copy your <strong>App ID</strong> and "
555
- "<strong>App Secret</strong> in the fields on the right"
556
- msgstr ""
557
-
558
- #: inc/view.php:210
559
- msgid ""
560
- "Go on Settings tab from the left sidebar menu add the contact email and "
561
- "click on <strong>Add Platform</strong> and select <strong>Website</strong>"
562
- msgstr ""
563
-
564
- #: inc/view.php:211
565
- msgid ""
566
- "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into App "
567
- "Domains and Site URL fields and <strong>Save</strong>"
568
- msgstr ""
569
-
570
- #: inc/view.php:212
571
- msgid ""
572
- "Go on Status & Review tab and set your app live from the top-right switch."
573
- msgstr ""
574
-
575
- #: inc/view.php:213 inc/view.php:259
576
- msgid "Now everything is done, click on <strong>Authorize App</strong> button."
577
- msgstr ""
578
-
579
- #: inc/view.php:219
580
- #, fuzzy
581
- msgid "Facebook App ID"
582
- msgstr "Facebook-Anmeldung"
583
-
584
- #: inc/view.php:220
585
- msgid "ID from your app created on facebook website."
586
- msgstr ""
587
-
588
- #: inc/view.php:231
589
- msgid "Facebook App Secret"
590
- msgstr ""
591
-
592
- #: inc/view.php:232
593
- msgid "Secret from your app created on facebook website. "
594
- msgstr ""
595
-
596
- #: inc/view.php:240 inc/view.php:287
597
- #, fuzzy
598
- msgid "Authorize App"
599
- msgstr "Berechtigen"
600
-
601
- #: inc/view.php:248
602
- msgid "Add Your Linkedin Account Following The Instructions On The Left"
603
- msgstr ""
604
-
605
- #: inc/view.php:253
606
- msgid ""
607
- "Enter the required details and pay special attention to the further fields :"
608
- msgstr ""
609
-
610
- #: inc/view.php:254
611
- msgid "Make sure you set Live Status to LIVE"
612
- msgstr ""
613
-
614
- #: inc/view.php:255
615
- msgid "Default Scope should have r_basicprofile and rw_nus checked"
616
- msgstr ""
617
-
618
- #: inc/view.php:256
619
- msgid ""
620
- "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into OAuth "
621
- "2.0 Redirect URLs"
622
- msgstr ""
623
-
624
- #: inc/view.php:257
625
- msgid ""
626
- "Once all required fields are filled click on Add Application button, get the "
627
- "API Key and Secret Key and paste them in the fields on the right"
628
- msgstr ""
629
-
630
- #: inc/view.php:265
631
- #, fuzzy
632
- msgid "Linkedin API Key"
633
- msgstr "LinkedIn-Anmeldung"
634
-
635
- #: inc/view.php:266
636
- msgid "API Key that you get once you create an app"
637
- msgstr ""
638
-
639
- #: inc/view.php:277
640
- msgid "Linkedin Secret Key"
641
- msgstr ""
642
-
643
- #: inc/view.php:278
644
- msgid "Secret Key that you get once you create an app"
645
- msgstr ""
646
-
647
- #. Description of the plugin/theme
648
- msgid ""
649
- "Wordpress plugin that helps you to keeps your old posts alive by sharing "
650
- "them and driving more traffic to them from twitter/facebook or linkedin. It "
651
- "also helps you to promote your content. You can set time and no of posts to "
652
- "share to drive more traffic.For questions, comments, or feature requests, <a "
653
- "href=\"https://themeisle.com/contact/?"
654
- "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
655
- msgstr ""
656
- "Ein WordPress-Plug-in, das Ihnen dabei hilft, Ihre alten Beiträge am Leben "
657
- "zu halten, indem Sie sie teilen und mehr Traffic von Twitter, Facebook oder "
658
- "Linkedin auf Ihren Blog lenken. Sie können auf diese Weise auch Ihre Inhalte "
659
- "besser vermarkten. Legen Sie eine Zeit und die Anzahl der zu teilenden "
660
- "Beiträge fest, um mehr Traffic zu generieren. <a href=\"https://themeisle.com/"
661
- "contact/?utm_source=plugindesc&utm_medium=announce&utm_campaign=top"
662
- "\">Kontaktieren Sie uns</a>, falls Sie Fragen, Kommentare oder Wünsche haben!"
663
-
664
- #~ msgid "Post Only"
665
- #~ msgstr "Nur Beiträge"
666
-
667
- #~ msgid "Page Only"
668
- #~ msgstr "Nur Seiten"
669
-
670
- #~ msgid "Custom Post Type"
671
- #~ msgstr "Benutzerdefinierte Beitragstypen"
672
-
673
- #~ msgid "Post and Page"
674
- #~ msgstr "Beitrag und Seite"
675
-
676
- #~ msgid "Select which custom post type"
677
- #~ msgstr "Wählen Sie den benutzerdefinierten Beitragstyp aus"
678
-
679
- #~ msgid ""
680
- #~ " We just fixed the interrupted posting issue and scheduling issue, if you "
681
- #~ "don't see any tweets you need to re-authentificate your twitter accounts. "
682
- #~ "| <a href=\""
683
- #~ msgstr ""
684
- #~ " Wir haben die Unterbrechungen beim Veröffentlichen und Planen von "
685
- #~ "Beiträgen behoben. Wenn Sie keine Tweets sehen, müssen Sie Ihre Twitter-"
686
- #~ "Konten erneut authentifizieren. | <a href=\""
687
-
688
- #~ msgid "ExcludePosts"
689
- #~ msgstr "Beiträge ausschließen"
690
-
691
- #~ msgid "Revive Old Post PRO"
692
- #~ msgstr "Revive Old Post PRO"
1
+ # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
+ # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
+ "POT-Creation-Date: 2014-07-16 00:01+0100\n"
8
+ "PO-Revision-Date: 2014-07-16 00:07+0100\n"
9
+ "Last-Translator: Ionut <friends@themeisle.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
+ "X-Generator: Poedit 1.5.7\n"
15
+ "X-Poedit-KeywordsList: _;__;_e\n"
16
+ "X-Poedit-Basepath: ../\n"
17
+ "X-Poedit-SearchPath-0: .\n"
18
+ "X-Poedit-SearchPath-1: inc\n"
19
+
20
+ #: inc/class-remote-notification-client.php:260
21
+ msgid "Dismiss notification"
22
+ msgstr "Benachrichtigung verwerfen"
23
+
24
+ #: inc/class-remote-notification-client.php:262
25
+ msgid "Dismiss"
26
+ msgstr "Verwerfen"
27
+
28
+ #: inc/config.php:24
29
+ msgid "Post Content"
30
+ msgstr "Inhalt veröffentlichen"
31
+
32
+ #: inc/config.php:28
33
+ msgid "What do you want to share?"
34
+ msgstr "Was möchten Sie teilen?"
35
+
36
+ #: inc/config.php:30
37
+ msgid "Title Only"
38
+ msgstr "Nur Titel"
39
+
40
+ #: inc/config.php:31
41
+ msgid "Body Only"
42
+ msgstr "Nur Text"
43
+
44
+ #: inc/config.php:32
45
+ msgid "Title & Body"
46
+ msgstr "Titel & Text"
47
+
48
+ #: inc/config.php:33
49
+ msgid "Custom Field"
50
+ msgstr "Benutzerdefiniertes Feld"
51
+
52
+ #: inc/config.php:39
53
+ msgid "Post Content Custom Field"
54
+ msgstr "Inhalt veröffentlichen aus benutzerdefiniertem Feld"
55
+
56
+ #: inc/config.php:43
57
+ msgid "Which custom field do you want to fetch info from?"
58
+ msgstr ""
59
+ "Aus welchem benutzerdefinierten Feld möchten Sie Informationen abrufen?"
60
+
61
+ #: inc/config.php:49
62
+ msgid "Additional Text"
63
+ msgstr "Zusätzlicher Text"
64
+
65
+ #: inc/config.php:53
66
+ msgid "Text added to your auto posts"
67
+ msgstr "Text zu Ihren automatischen Beiträgen hinzugefügt"
68
+
69
+ #: inc/config.php:59
70
+ msgid "Additional Text At"
71
+ msgstr "Zusätzlicher Text bei"
72
+
73
+ #: inc/config.php:63
74
+ msgid "Where do you want the text to be added?"
75
+ msgstr "Wo soll der Text hinzugefügt werden?"
76
+
77
+ #: inc/config.php:65
78
+ msgid "Beginning of Post"
79
+ msgstr "Anfang des Beitrags"
80
+
81
+ #: inc/config.php:66
82
+ msgid "End of Post"
83
+ msgstr "Ende des Beitrags"
84
+
85
+ #: inc/config.php:72
86
+ msgid "Include Link"
87
+ msgstr "Link einfügen"
88
+
89
+ #: inc/config.php:76
90
+ msgid "Include a link to your post?"
91
+ msgstr "Soll ein Link zu Ihrem Beitrag hinzugefügt werden?"
92
+
93
+ #: inc/config.php:78
94
+ msgid "Yes"
95
+ msgstr "Ja"
96
+
97
+ #: inc/config.php:79
98
+ msgid "No"
99
+ msgstr "Nein"
100
+
101
+ #: inc/config.php:85
102
+ msgid "Fetch URL From Custom Field"
103
+ msgstr "URL abrufen aus einem benutzerdefinierten Feld"
104
+
105
+ #: inc/config.php:89
106
+ msgid "URL will be fetched from a custom field."
107
+ msgstr "Die URL wird aus einem benutzerdefinierten Feld abgerufen."
108
+
109
+ #: inc/config.php:95
110
+ msgid "URL Custom Field"
111
+ msgstr "Benutzerdefiniertes URL-Feld"
112
+
113
+ #: inc/config.php:99
114
+ msgid "URL will be fetched from the specified custom field."
115
+ msgstr "Die URL wird aus einem bestimmten benutzerdefinierten Feld abgerufen."
116
+
117
+ #: inc/config.php:105
118
+ msgid "Use URL Shortner"
119
+ msgstr "Kurz-URL-Dienst verwenden"
120
+
121
+ #: inc/config.php:117
122
+ msgid "URL Shortner Service"
123
+ msgstr "Kurz-URL-Dienst"
124
+
125
+ #: inc/config.php:121
126
+ msgid "Shorten the link to your post."
127
+ msgstr "Kürzen Sie den Link zu Ihrem Beitrag."
128
+
129
+ #: inc/config.php:123
130
+ msgid "wp short url"
131
+ msgstr "WP-Kurz-URL"
132
+
133
+ #: inc/config.php:125
134
+ msgid "is.gd"
135
+ msgstr "is.gd"
136
+
137
+ #: inc/config.php:126
138
+ msgid "bit.ly"
139
+ msgstr "bit.ly"
140
+
141
+ #: inc/config.php:138
142
+ msgid "Bitly Key"
143
+ msgstr "Bitly-Schlüssel"
144
+
145
+ #: inc/config.php:148
146
+ msgid "Bitly User"
147
+ msgstr "Bitly-Benutzer"
148
+
149
+ #: inc/config.php:158
150
+ msgid "Hashtags"
151
+ msgstr "Hashtags"
152
+
153
+ #: inc/config.php:162
154
+ msgid "Include #hashtags in your auto posts?"
155
+ msgstr "Möchten Sie #hashtags in Ihre automatischen Beiträge einbinden?"
156
+
157
+ #: inc/config.php:164
158
+ msgid "Don't add any hashtags"
159
+ msgstr "Keine Hashtags hinzufügen"
160
+
161
+ #: inc/config.php:165
162
+ msgid "Common hashtags for all shares"
163
+ msgstr "Gemeinsame Hashtags für alle geteilten Beiträge"
164
+
165
+ #: inc/config.php:166
166
+ msgid "Create hashtags from Categories"
167
+ msgstr "Hashtags aus Kategorien erstellen"
168
+
169
+ #: inc/config.php:167
170
+ msgid "Create hashtags from Tags"
171
+ msgstr "Hashtags aus Tags erstellen"
172
+
173
+ #: inc/config.php:168
174
+ msgid "Create hashtags from Custom Fields"
175
+ msgstr "Hashtags aus benutzerdefinierten Feldern erstellen"
176
+
177
+ #: inc/config.php:174
178
+ msgid "Common Hashtags"
179
+ msgstr "Gemeinsame Hashtags"
180
+
181
+ #: inc/config.php:178
182
+ msgid "Specify which hashtags you want to be used. eg. #example, #example2"
183
+ msgstr ""
184
+ "Geben Sie an, welche Hashtags Sie verwenden möchten, z. B. #beispiel, "
185
+ "#beispiel2"
186
+
187
+ #: inc/config.php:184
188
+ msgid "Maximum Hashtags Length"
189
+ msgstr "Maximale Hashtag-Länge"
190
+
191
+ #: inc/config.php:188
192
+ msgid "Set to 0 (characters) to include all."
193
+ msgstr "Auf 0 (Zeichen) setzen, um alle zu berücksichtigen."
194
+
195
+ #: inc/config.php:194
196
+ msgid "Hashtag Custom Field"
197
+ msgstr "Benutzerdefiniertes Hashtag-Feld"
198
+
199
+ #: inc/config.php:198
200
+ msgid "Fetch hashtags from specified custom field"
201
+ msgstr "Hashtags aus einem bestimmten benutzerdefinierten Feld abrufen"
202
+
203
+ #: inc/config.php:204
204
+ msgid "Minimum interval between shares"
205
+ msgstr "Mindestabstand zwischen geteilten Beiträgen"
206
+
207
+ #: inc/config.php:208
208
+ msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
209
+ msgstr ""
210
+ "Zeitlicher Mindestabstand zwischen geteilten Beiträgen (Stunde/Stunden), "
211
+ "Angaben wie 0,4 sind ebenfalls möglich."
212
+
213
+ #: inc/config.php:214
214
+ msgid "Minimum age of post to be eligible for sharing"
215
+ msgstr "Mindestalter der zu teilenden Beiträge"
216
+
217
+ #: inc/config.php:218 inc/config.php:228
218
+ msgid "Day/Days - 0 for Disabled"
219
+ msgstr "Tag/Tage - 0 zum Deaktivieren"
220
+
221
+ #: inc/config.php:224
222
+ msgid "Maximum age of post to be eligible for sharing"
223
+ msgstr "Maximales Alter der zu teilenden Beiträge"
224
+
225
+ #: inc/config.php:234
226
+ msgid "Number of Posts to share"
227
+ msgstr "Anzahl der zu teilenden Beiträge"
228
+
229
+ #: inc/config.php:238
230
+ msgid "Number of posts to share each time"
231
+ msgstr "Anzahl der Beiträge, die bei jedem Mal geteilt werden"
232
+
233
+ #: inc/config.php:246
234
+ msgid "Post with Image"
235
+ msgstr "Mit Bild veröffentlichen"
236
+
237
+ #: inc/config.php:250
238
+ msgid "Check if you want to add the post featured image to the share"
239
+ msgstr ""
240
+ "Überprüfen Sie, ob Sie das zum Beitrag hinzugefügte Bild ebenfalls teilen "
241
+ "möchten"
242
+
243
+ #: inc/config.php:256
244
+ msgid "Share old posts more than once"
245
+ msgstr "Alte Beiträge mehr als einmal teilen"
246
+
247
+ #: inc/config.php:260
248
+ msgid ""
249
+ "By default once a post is shared it will not be shared again until you stop/"
250
+ "start the plugin"
251
+ msgstr ""
252
+ "Sobald ein Beitrag geteilt wurde, wird dieser standardmäßig nicht wieder "
253
+ "geteilt, bis Sie das Plugin gestartet/gestoppt haben."
254
+
255
+ #: inc/config.php:268
256
+ msgid "Post Type"
257
+ msgstr "Beitragstyp"
258
+
259
+ #: inc/config.php:272
260
+ msgid "What type of items do you want to share?"
261
+ msgstr "Welche Elemente sollen geteilt werden?"
262
+
263
+ #: inc/config.php:279
264
+ msgid "Google Analytics Campaign Tracking"
265
+ msgstr "Google Analytics Kampagnen-Tracking"
266
+
267
+ #: inc/config.php:283
268
+ msgid ""
269
+ "Enabling Campaign Tracking you would be able to see how much traffic Revive "
270
+ "Old Post generated."
271
+ msgstr ""
272
+ "Über das Kampagnen-Tracking können Sie nachvollziehen, wie viel "
273
+ "Traffic Revive Old Post generiert hat."
274
+
275
+ #: inc/config.php:289
276
+ msgid "Exclude Specific Categories"
277
+ msgstr "Bestimmte Kategorien ausschließen"
278
+
279
+ #: inc/config.php:293
280
+ msgid ""
281
+ "Select which categories do you want to exclude to share from? Blank - None"
282
+ msgstr ""
283
+ "Wählen Sie aus, welche Kategorien Sie vom Teilen ausschließen möchten? Feld "
284
+ "frei lassen = nichts ausschließen."
285
+
286
+ #: inc/core.php:81
287
+ msgid "Tweet Old Post is already active!"
288
+ msgstr "Tweet Old Post ist bereits aktiv!"
289
+
290
+ #: inc/core.php:101
291
+ #, fuzzy
292
+ msgid "ROP is already inactive!"
293
+ msgstr "Tweet Old Post ist bereits inaktiv!"
294
+
295
+ #: inc/core.php:811
296
+ msgid "Custom Tweet User Interval"
297
+ msgstr "Individuelles Twitter-Benutzerintervall"
298
+
299
+ #: inc/core.php:1127
300
+ msgid "Could not connect to Twitter!"
301
+ msgstr "Es konnte keine Verbindung zu Twitter hergestellt werden!"
302
+
303
+ #: inc/core.php:1385
304
+ msgid "This is only available in the"
305
+ msgstr "Dies steht nur zur Verfügung in der"
306
+
307
+ #: inc/core.php:1385
308
+ msgid "PRO version"
309
+ msgstr "PRO-Version"
310
+
311
+ #: inc/core.php:1644
312
+ msgid "Exclude Posts"
313
+ msgstr "Beiträge ausschließen"
314
+
315
+ #: inc/exclude-posts.php:24
316
+ msgid "Tweet Old Post Options Updated."
317
+ msgstr "Optionen für Tweet Old Post aktualisiert."
318
+
319
+ #: inc/exclude-posts.php:63
320
+ msgid "No post selected please select a post to be excluded."
321
+ msgstr ""
322
+ "Es wurde kein Beitrag ausgewählt, bitte wählen Sie einen Beitrag aus, den "
323
+ "Sie ausschließen möchten."
324
+
325
+ #: inc/exclude-posts.php:70
326
+ msgid "Posts excluded successfully."
327
+ msgstr "Beiträge erfolgreich ausgeschlossen."
328
+
329
+ #: inc/exclude-posts.php:155
330
+ msgid "Selected Categories"
331
+ msgstr "Ausgewählte Kategorien"
332
+
333
+ #: inc/exclude-posts.php:157
334
+ msgid "Filter"
335
+ msgstr "Filtern"
336
+
337
+ #: inc/exclude-posts.php:168
338
+ msgid "&laquo;"
339
+ msgstr "&laquo;"
340
+
341
+ #: inc/exclude-posts.php:169
342
+ msgid "&raquo;"
343
+ msgstr "&ra"
344
+
345
+ #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
346
+ #, php-format
347
+ msgid "Displaying %s&#8211;%s of %s"
348
+ msgstr "%s&#8211;%s von %s angezeigt"
349
+
350
+ #: inc/exclude-posts.php:356
351
+ msgid "No Posts found. Review your search or filter criteria/term."
352
+ msgstr ""
353
+ "Keine Beiträge gefunden. Überprüfen Sie Ihre Suchbegriffe oder "
354
+ "Filtereinstellungen."
355
+
356
+ #: inc/exclude-posts.php:363
357
+ msgid ""
358
+ "You do not have enough permission to set the option. Please contact your "
359
+ "admin."
360
+ msgstr ""
361
+ "Sie verfügen nicht über die erforderliche Berechtigungen, um diese Option "
362
+ "festzulegen. Bitte kontaktieren Sie Ihren Administrator."
363
+
364
+ #: inc/view-exclude.php:4 inc/view.php:3
365
+ msgid "After 6 months of hard work, we have just released"
366
+ msgstr "Nach 6 Monaten harter Arbeit haben wir vor kurzem"
367
+
368
+ #: inc/view-exclude.php:4 inc/view.php:3
369
+ msgid "the island of WordPress themes."
370
+ msgstr "die Insel der Wordpress-Themes veröffentlicht."
371
+
372
+ #: inc/view-exclude.php:5 inc/view.php:4
373
+ msgid "Show Me"
374
+ msgstr "Mehr zeigen"
375
+
376
+ #: inc/view-exclude.php:15 inc/view.php:14
377
+ msgid "by"
378
+ msgstr "von"
379
+
380
+ #: inc/view-exclude.php:18 inc/view.php:17
381
+ msgid "Show your love"
382
+ msgstr "Zeigen Sie Ihre Unterstützung"
383
+
384
+ #: inc/view-exclude.php:19 inc/view.php:18
385
+ msgid "Leave A Review"
386
+ msgstr "Geben Sie eine Bewertung ab"
387
+
388
+ #: inc/view-exclude.php:30
389
+ msgid "Revive Old Post is set to share on a"
390
+ msgstr "Revive Old Post teilt in einem Intervall von"
391
+
392
+ #: inc/view-exclude.php:32 inc/view.php:31
393
+ msgid "hours interval, "
394
+ msgstr "Stunden "
395
+
396
+ #: inc/view-exclude.php:33 inc/view.php:32
397
+ msgid "and the next share will take place in: "
398
+ msgstr "und der nächste Beitrag wird geteilt in: "
399
+
400
+ #: inc/view-exclude.php:38
401
+ msgid "Revive Old Post is not set to share!"
402
+ msgstr "Revive Old Post wurde so eingestellt, dass es nichts teilt!"
403
+
404
+ #: inc/view-exclude.php:42
405
+ #, fuzzy
406
+ msgid ""
407
+ "You have selected following POST IDs to be excluded from tweeting: <span "
408
+ "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
409
+ "Note: If you have made any change and dint hit 'Exclude Selected' button "
410
+ "changes will not be saved. "
411
+ msgstr ""
412
+ "Sie haben die folgenden POST-IDs ausgewählt, die nicht auf Twitter "
413
+ "veröffentlicht werden sollen: <span id='excludeList' style='font-weight:bold;"
414
+ "font-style:italic;'></span>.\n"
415
+ "Hinweis: Sollten Sie Veränderungen vorgenommen und nicht auf \"Ausgewählte "
416
+ "Beiträge ausschließen\" geklickt haben, so werden Ihre Änderungen nicht "
417
+ "gespeichert. "
418
+
419
+ #: inc/view.php:29
420
+ msgid "Revive Old Post is set to post on a"
421
+ msgstr "Revive Old Post veröffentlicht in einem Intervall von"
422
+
423
+ #: inc/view.php:37
424
+ msgid "Revive Old Post is not set to post!"
425
+ msgstr "Revive Old Post wurde so eingestellt, dass es nichts veröffentlicht."
426
+
427
+ #: inc/view.php:42
428
+ msgid ""
429
+ "Once you click start sharing a post will be sent in 15 sec, also here you "
430
+ "can see the error message if is any."
431
+ msgstr ""
432
+ "Sobald Sie auf Veröffentlichen von Beiträgen starten klicken, wird ein "
433
+ "Beitrag innerhalb von 15 Sekudnen gesendet. Eventuelle Fehlermeldungen "
434
+ "werden hier angezeigt."
435
+
436
+ #: inc/view.php:52
437
+ msgid "Twitter Login"
438
+ msgstr "Twitter-Login"
439
+
440
+ #: inc/view.php:53
441
+ msgid "Login using your Twitter account."
442
+ msgstr "Melden Sie sich über Ihr Twitter-Konto an."
443
+
444
+ #: inc/view.php:77 inc/view.php:111
445
+ msgid "Add Account"
446
+ msgstr "Konto hinzufügen"
447
+
448
+ #: inc/view.php:84
449
+ msgid "Facebook Login"
450
+ msgstr "Facebook-Anmeldung"
451
+
452
+ #: inc/view.php:85
453
+ msgid "Login using your Facebook account."
454
+ msgstr "Melden Sie sich über Ihr Facebook-Konto an."
455
+
456
+ #: inc/view.php:109
457
+ msgid "Authorize"
458
+ msgstr "Berechtigen"
459
+
460
+ #: inc/view.php:118
461
+ msgid "Linkedin Login"
462
+ msgstr "LinkedIn-Anmeldung"
463
+
464
+ #: inc/view.php:119
465
+ msgid "Login using your Linkedin account."
466
+ msgstr "Melden Sie sich über Ihr LinkedIn-Konto an."
467
+
468
+ #: inc/view.php:141
469
+ msgid "Add account"
470
+ msgstr "Konto hinzufügen"
471
+
472
+ #: inc/view.php:154
473
+ msgid "Select All"
474
+ msgstr "Alle auswählen"
475
+
476
+ #: inc/view.php:165
477
+ msgid "Reset"
478
+ msgstr "Zurücksetzen"
479
+
480
+ #: inc/view.php:166
481
+ msgid "Save"
482
+ msgstr "Speichern"
483
+
484
+ #: inc/view.php:167
485
+ msgid "Start Sharing"
486
+ msgstr "Teilen starten"
487
+
488
+ #: inc/view.php:168
489
+ msgid "Stop Sharing"
490
+ msgstr "Teilen beenden"
491
+
492
+ #: inc/view.php:169
493
+ msgid "See Sample Post"
494
+ msgstr "Siehe Beispiel-Beitrag"
495
+
496
+ #: inc/view.php:171
497
+ msgid ""
498
+ "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
499
+ msgstr "Wir stehen in keiner Verbindung zu Twitter/Facebook/Linkedin."
500
+
501
+ #: inc/view.php:176
502
+ msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
503
+ msgstr ""
504
+ "Führen Sie für nur $9,99 ein Upgrade für Tweet Old Post durch - Jetzt auf "
505
+ "die Pro-Version upgraden!"
506
+
507
+ #: inc/view.php:177
508
+ msgid "ThemeIsle - Deadly Simple WordPress Themes"
509
+ msgstr "ThemeIsle - Kinderleichte WordPress-Themes"
510
+
511
+ #: inc/view.php:178
512
+ msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
513
+ msgstr ""
514
+ "ThemeIsle - Bewerben Sie unsere Themes und Plug-Ins und erhalten Sie eine "
515
+ "Provision von 55 %."
516
+
517
+ #: inc/view.php:185
518
+ #, fuzzy
519
+ msgid "Sample Post Preview"
520
+ msgstr "Siehe Beispiel-Beitrag"
521
+
522
+ #: inc/view.php:187 inc/view.php:196 inc/view.php:242 inc/view.php:289
523
+ msgid "Close preview"
524
+ msgstr ""
525
+
526
+ #: inc/view.php:188
527
+ msgid "Share now"
528
+ msgstr ""
529
+
530
+ #: inc/view.php:194
531
+ msgid "Choose a Profile or Page"
532
+ msgstr ""
533
+
534
+ #: inc/view.php:202
535
+ msgid "Add Your Facebook Account Following The Instructions On The Left"
536
+ msgstr ""
537
+
538
+ #: inc/view.php:206 inc/view.php:252
539
+ msgid "Go on"
540
+ msgstr ""
541
+
542
+ #: inc/view.php:207
543
+ msgid "Click on <strong>Create New App</strong> from the top right corner"
544
+ msgstr ""
545
+
546
+ #: inc/view.php:208
547
+ msgid ""
548
+ "Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and "
549
+ "click on Create App"
550
+ msgstr ""
551
+
552
+ #: inc/view.php:209
553
+ msgid ""
554
+ "Once you arrive on the app dashboard, copy your <strong>App ID</strong> and "
555
+ "<strong>App Secret</strong> in the fields on the right"
556
+ msgstr ""
557
+
558
+ #: inc/view.php:210
559
+ msgid ""
560
+ "Go on Settings tab from the left sidebar menu add the contact email and "
561
+ "click on <strong>Add Platform</strong> and select <strong>Website</strong>"
562
+ msgstr ""
563
+
564
+ #: inc/view.php:211
565
+ msgid ""
566
+ "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into App "
567
+ "Domains and Site URL fields and <strong>Save</strong>"
568
+ msgstr ""
569
+
570
+ #: inc/view.php:212
571
+ msgid ""
572
+ "Go on Status & Review tab and set your app live from the top-right switch."
573
+ msgstr ""
574
+
575
+ #: inc/view.php:213 inc/view.php:259
576
+ msgid "Now everything is done, click on <strong>Authorize App</strong> button."
577
+ msgstr ""
578
+
579
+ #: inc/view.php:219
580
+ #, fuzzy
581
+ msgid "Facebook App ID"
582
+ msgstr "Facebook-Anmeldung"
583
+
584
+ #: inc/view.php:220
585
+ msgid "ID from your app created on facebook website."
586
+ msgstr ""
587
+
588
+ #: inc/view.php:231
589
+ msgid "Facebook App Secret"
590
+ msgstr ""
591
+
592
+ #: inc/view.php:232
593
+ msgid "Secret from your app created on facebook website. "
594
+ msgstr ""
595
+
596
+ #: inc/view.php:240 inc/view.php:287
597
+ #, fuzzy
598
+ msgid "Authorize App"
599
+ msgstr "Berechtigen"
600
+
601
+ #: inc/view.php:248
602
+ msgid "Add Your Linkedin Account Following The Instructions On The Left"
603
+ msgstr ""
604
+
605
+ #: inc/view.php:253
606
+ msgid ""
607
+ "Enter the required details and pay special attention to the further fields :"
608
+ msgstr ""
609
+
610
+ #: inc/view.php:254
611
+ msgid "Make sure you set Live Status to LIVE"
612
+ msgstr ""
613
+
614
+ #: inc/view.php:255
615
+ msgid "Default Scope should have r_basicprofile and rw_nus checked"
616
+ msgstr ""
617
+
618
+ #: inc/view.php:256
619
+ msgid ""
620
+ "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into OAuth "
621
+ "2.0 Redirect URLs"
622
+ msgstr ""
623
+
624
+ #: inc/view.php:257
625
+ msgid ""
626
+ "Once all required fields are filled click on Add Application button, get the "
627
+ "API Key and Secret Key and paste them in the fields on the right"
628
+ msgstr ""
629
+
630
+ #: inc/view.php:265
631
+ #, fuzzy
632
+ msgid "Linkedin API Key"
633
+ msgstr "LinkedIn-Anmeldung"
634
+
635
+ #: inc/view.php:266
636
+ msgid "API Key that you get once you create an app"
637
+ msgstr ""
638
+
639
+ #: inc/view.php:277
640
+ msgid "Linkedin Secret Key"
641
+ msgstr ""
642
+
643
+ #: inc/view.php:278
644
+ msgid "Secret Key that you get once you create an app"
645
+ msgstr ""
646
+
647
+ #. Description of the plugin/theme
648
+ msgid ""
649
+ "Wordpress plugin that helps you to keeps your old posts alive by sharing "
650
+ "them and driving more traffic to them from twitter/facebook or linkedin. It "
651
+ "also helps you to promote your content. You can set time and no of posts to "
652
+ "share to drive more traffic.For questions, comments, or feature requests, <a "
653
+ "href=\"https://themeisle.com/contact/?"
654
+ "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
655
+ msgstr ""
656
+ "Ein WordPress-Plug-in, das Ihnen dabei hilft, Ihre alten Beiträge am Leben "
657
+ "zu halten, indem Sie sie teilen und mehr Traffic von Twitter, Facebook oder "
658
+ "Linkedin auf Ihren Blog lenken. Sie können auf diese Weise auch Ihre Inhalte "
659
+ "besser vermarkten. Legen Sie eine Zeit und die Anzahl der zu teilenden "
660
+ "Beiträge fest, um mehr Traffic zu generieren. <a href=\"https://themeisle.com/"
661
+ "contact/?utm_source=plugindesc&utm_medium=announce&utm_campaign=top"
662
+ "\">Kontaktieren Sie uns</a>, falls Sie Fragen, Kommentare oder Wünsche haben!"
663
+
664
+ #~ msgid "Post Only"
665
+ #~ msgstr "Nur Beiträge"
666
+
667
+ #~ msgid "Page Only"
668
+ #~ msgstr "Nur Seiten"
669
+
670
+ #~ msgid "Custom Post Type"
671
+ #~ msgstr "Benutzerdefinierte Beitragstypen"
672
+
673
+ #~ msgid "Post and Page"
674
+ #~ msgstr "Beitrag und Seite"
675
+
676
+ #~ msgid "Select which custom post type"
677
+ #~ msgstr "Wählen Sie den benutzerdefinierten Beitragstyp aus"
678
+
679
+ #~ msgid ""
680
+ #~ " We just fixed the interrupted posting issue and scheduling issue, if you "
681
+ #~ "don't see any tweets you need to re-authentificate your twitter accounts. "
682
+ #~ "| <a href=\""
683
+ #~ msgstr ""
684
+ #~ " Wir haben die Unterbrechungen beim Veröffentlichen und Planen von "
685
+ #~ "Beiträgen behoben. Wenn Sie keine Tweets sehen, müssen Sie Ihre Twitter-"
686
+ #~ "Konten erneut authentifizieren. | <a href=\""
687
+
688
+ #~ msgid "ExcludePosts"
689
+ #~ msgstr "Beiträge ausschließen"
690
+
691
+ #~ msgid "Revive Old Post PRO"
692
+ #~ msgstr "Revive Old Post PRO"
languages/tweet-old-post-es_ES.po CHANGED
@@ -1,683 +1,683 @@
1
- # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
- # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
- "POT-Creation-Date: 2014-07-16 00:01+0100\n"
8
- "PO-Revision-Date: 2014-10-03 15:56+0100\n"
9
- "Last-Translator: Ionut <friends@themeisle.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
- "X-Generator: Poedit 1.5.7\n"
15
- "X-Poedit-KeywordsList: _;__;_e\n"
16
- "X-Poedit-Basepath: ../\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
- "X-Poedit-SearchPath-1: inc\n"
19
-
20
- #: inc/class-remote-notification-client.php:260
21
- msgid "Dismiss notification"
22
- msgstr "Descartar la notificación"
23
-
24
- #: inc/class-remote-notification-client.php:262
25
- msgid "Dismiss"
26
- msgstr "Descartar"
27
-
28
- #: inc/config.php:24
29
- msgid "Post Content"
30
- msgstr "Publicar contenido "
31
-
32
- #: inc/config.php:28
33
- msgid "What do you want to share?"
34
- msgstr "¿Qué es lo que deseas compartir?"
35
-
36
- #: inc/config.php:30
37
- msgid "Title Only"
38
- msgstr "Solo Título"
39
-
40
- #: inc/config.php:31
41
- msgid "Body Only"
42
- msgstr "Solo cuerpo"
43
-
44
- #: inc/config.php:32
45
- msgid "Title & Body"
46
- msgstr "Título y Cuerpo"
47
-
48
- #: inc/config.php:33
49
- msgid "Custom Field"
50
- msgstr "Campo personalizado"
51
-
52
- #: inc/config.php:39
53
- msgid "Post Content Custom Field"
54
- msgstr "Publicar campo de contenido personalizado"
55
-
56
- #: inc/config.php:43
57
- msgid "Which custom field do you want to fetch info from?"
58
- msgstr "¿De qué campo personalizado deseas tomar la información?"
59
-
60
- #: inc/config.php:49
61
- msgid "Additional Text"
62
- msgstr "Texto adicional"
63
-
64
- #: inc/config.php:53
65
- msgid "Text added to your auto posts"
66
- msgstr "Texto añadido a tus autopublicaciones"
67
-
68
- #: inc/config.php:59
69
- msgid "Additional Text At"
70
- msgstr "Texto adicional en"
71
-
72
- #: inc/config.php:63
73
- msgid "Where do you want the text to be added?"
74
- msgstr "¿Dónde quieres que se añada el texto?"
75
-
76
- #: inc/config.php:65
77
- msgid "Beginning of Post"
78
- msgstr "Principio de la publicación"
79
-
80
- #: inc/config.php:66
81
- msgid "End of Post"
82
- msgstr "Fin de la publicación"
83
-
84
- #: inc/config.php:72
85
- msgid "Include Link"
86
- msgstr "Incluir enlace"
87
-
88
- #: inc/config.php:76
89
- msgid "Include a link to your post?"
90
- msgstr "¿Incluir un enlace a tu publicación?"
91
-
92
- #: inc/config.php:78
93
- msgid "Yes"
94
- msgstr "Sí"
95
-
96
- #: inc/config.php:79
97
- msgid "No"
98
- msgstr "No"
99
-
100
- #: inc/config.php:85
101
- msgid "Fetch URL From Custom Field"
102
- msgstr "Tomar URL del campo personalizado"
103
-
104
- #: inc/config.php:89
105
- msgid "URL will be fetched from a custom field."
106
- msgstr "La URL se obtendrá de un campo personalizado."
107
-
108
- #: inc/config.php:95
109
- msgid "URL Custom Field"
110
- msgstr "Campo personalizado de URL"
111
-
112
- #: inc/config.php:99
113
- msgid "URL will be fetched from the specified custom field."
114
- msgstr "La URL se tomará del campo personalizado especificado."
115
-
116
- #: inc/config.php:105
117
- msgid "Use URL Shortner"
118
- msgstr "Utilizar acortador de URL"
119
-
120
- #: inc/config.php:117
121
- msgid "URL Shortner Service"
122
- msgstr "Servicio de acortado de URL"
123
-
124
- #: inc/config.php:121
125
- msgid "Shorten the link to your post."
126
- msgstr "Acortar el enlace a tu publicación."
127
-
128
- #: inc/config.php:123
129
- msgid "wp short url"
130
- msgstr "wp url corta"
131
-
132
- #: inc/config.php:125
133
- msgid "is.gd"
134
- msgstr "is.gd"
135
-
136
- #: inc/config.php:126
137
- msgid "bit.ly"
138
- msgstr "bit.ly"
139
-
140
- #: inc/config.php:138
141
- msgid "Bitly Key"
142
- msgstr "Clave Bitly"
143
-
144
- #: inc/config.php:148
145
- msgid "Bitly User"
146
- msgstr "Usuario Bitly"
147
-
148
- #: inc/config.php:158
149
- msgid "Hashtags"
150
- msgstr "Etiquetas"
151
-
152
- #: inc/config.php:162
153
- msgid "Include #hashtags in your auto posts?"
154
- msgstr "¿Incluir #etiquetas en tus autopublicaciones?"
155
-
156
- #: inc/config.php:164
157
- msgid "Don't add any hashtags"
158
- msgstr "No agregar ninguna etiqueta"
159
-
160
- #: inc/config.php:165
161
- msgid "Common hashtags for all shares"
162
- msgstr "Etiquetas comunes para todas las comparticiones"
163
-
164
- #: inc/config.php:166
165
- msgid "Create hashtags from Categories"
166
- msgstr "Crear etiquetas a partir de Categorías"
167
-
168
- #: inc/config.php:167
169
- msgid "Create hashtags from Tags"
170
- msgstr "Crear etiquetas a partir de Etiquetas"
171
-
172
- #: inc/config.php:168
173
- msgid "Create hashtags from Custom Fields"
174
- msgstr "Crear etiquetas a partir de Campos Personalizados"
175
-
176
- #: inc/config.php:174
177
- msgid "Common Hashtags"
178
- msgstr "Etiquetas comunes"
179
-
180
- #: inc/config.php:178
181
- msgid "Specify which hashtags you want to be used. eg. #example, #example2"
182
- msgstr ""
183
- "Especifica las etiquetas que deseas utilizar. Por ejemplo. #ejemplo, "
184
- "#ejemplo2"
185
-
186
- #: inc/config.php:184
187
- msgid "Maximum Hashtags Length"
188
- msgstr "Longitud máxima de las etiquetas"
189
-
190
- #: inc/config.php:188
191
- msgid "Set to 0 (characters) to include all."
192
- msgstr "Pon este valor a 0 (caracteres) para incluir todos."
193
-
194
- #: inc/config.php:194
195
- msgid "Hashtag Custom Field"
196
- msgstr "Campo personalizado de etiqueta"
197
-
198
- #: inc/config.php:198
199
- msgid "Fetch hashtags from specified custom field"
200
- msgstr "Tomar etiquetas del campo personalizado especificado"
201
-
202
- #: inc/config.php:204
203
- msgid "Minimum interval between shares"
204
- msgstr "Intervalo mínimo entre comparticiones"
205
-
206
- #: inc/config.php:208
207
- msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
208
- msgstr ""
209
- "Tiempo mínimo entre comparticiones (hora / horas), También se puede usar 0.4."
210
-
211
- #: inc/config.php:214
212
- msgid "Minimum age of post to be eligible for sharing"
213
- msgstr ""
214
- "Antigüedad mínima de la publicación para poder ser seleccionada para ser "
215
- "compartida"
216
-
217
- #: inc/config.php:218 inc/config.php:228
218
- msgid "Day/Days - 0 for Disabled"
219
- msgstr "Día / días - 0 para deshabilitar"
220
-
221
- #: inc/config.php:224
222
- msgid "Maximum age of post to be eligible for sharing"
223
- msgstr ""
224
- "Antigüedad máxima de la publicación para poder ser seleccionada para ser "
225
- "compartida"
226
-
227
- #: inc/config.php:234
228
- msgid "Number of Posts to share"
229
- msgstr "Número de publicaciones a compartir"
230
-
231
- #: inc/config.php:238
232
- msgid "Number of posts to share each time"
233
- msgstr "Número de publicaciones a compartir cada vez"
234
-
235
- #: inc/config.php:246
236
- msgid "Post with Image"
237
- msgstr "Publicar con imagen"
238
-
239
- #: inc/config.php:250
240
- msgid "Check if you want to add the post featured image to the share"
241
- msgstr ""
242
- "Comprueba si quieres agregar la imagen destacada del artículo en la "
243
- "compartición"
244
-
245
- #: inc/config.php:256
246
- msgid "Share old posts more than once"
247
- msgstr "Compartir publicaciones antiguas más de una vez"
248
-
249
- #: inc/config.php:260
250
- msgid ""
251
- "By default once a post is shared it will not be shared again until you stop/"
252
- "start the plugin"
253
- msgstr ""
254
- "De forma predeterminada, una vez se haya compartido una publicación, no se "
255
- "volverá a compartir hasta que se detenga y se inicie el plugin"
256
-
257
- #: inc/config.php:268
258
- msgid "Post Type"
259
- msgstr "Tipo de publicación"
260
-
261
- #: inc/config.php:272
262
- msgid "What type of items do you want to share?"
263
- msgstr "¿Qué tipo de elementos quieres compartir?"
264
-
265
- #: inc/config.php:279
266
- msgid "Google Analytics Campaign Tracking"
267
- msgstr "Seguimiento de campaña de Google Analytics"
268
-
269
- #: inc/config.php:283
270
- msgid ""
271
- "Enabling Campaign Tracking you would be able to see how much traffic Revive "
272
- "Old Post generated."
273
- msgstr ""
274
- "Habilitando el seguimiento de campaña podrás ver cuánto tráfico ha generado "
275
- "Revive Old Post."
276
-
277
- #: inc/config.php:289
278
- msgid "Exclude Specific Categories"
279
- msgstr "Excluir categorías específicas"
280
-
281
- #: inc/config.php:293
282
- msgid ""
283
- "Select which categories do you want to exclude to share from? Blank - None"
284
- msgstr ""
285
- "Selecciona las categorías que deseas excluir de la compartición. En blanco - "
286
- "ninguna"
287
-
288
- #: inc/core.php:81
289
- msgid "Tweet Old Post is already active!"
290
- msgstr "¡Ya está activado Tweet Old Post!"
291
-
292
- #: inc/core.php:101
293
- #, fuzzy
294
- msgid "ROP is already inactive!"
295
- msgstr "¡Ya está desactivado Tweet Old Post!"
296
-
297
- #: inc/core.php:811
298
- msgid "Custom Tweet User Interval"
299
- msgstr "Intervalo de usuario de tuit personalizado"
300
-
301
- #: inc/core.php:1127
302
- msgid "Could not connect to Twitter!"
303
- msgstr "¡Ha fallado la conexión a Twitter!"
304
-
305
- #: inc/core.php:1385
306
- msgid "This is only available in the"
307
- msgstr "Solo está disponible en la"
308
-
309
- #: inc/core.php:1385
310
- msgid "PRO version"
311
- msgstr "versión PRO"
312
-
313
- #: inc/core.php:1644
314
- msgid "Exclude Posts"
315
- msgstr "Excluir publicaciones"
316
-
317
- #: inc/exclude-posts.php:24
318
- msgid "Tweet Old Post Options Updated."
319
- msgstr "Actualizadas las opciones de Tweet Old Post."
320
-
321
- #: inc/exclude-posts.php:63
322
- msgid "No post selected please select a post to be excluded."
323
- msgstr ""
324
- "No se ha seleccionado ninguna publicación, por favor selecciona una "
325
- "publicación a excluir."
326
-
327
- #: inc/exclude-posts.php:70
328
- msgid "Posts excluded successfully."
329
- msgstr "Publicaciones excluidas con éxito."
330
-
331
- #: inc/exclude-posts.php:155
332
- msgid "Selected Categories"
333
- msgstr "Categorías seleccionadas"
334
-
335
- #: inc/exclude-posts.php:157
336
- msgid "Filter"
337
- msgstr "Filtro"
338
-
339
- #: inc/exclude-posts.php:168
340
- msgid "&laquo;"
341
- msgstr "&laquo;"
342
-
343
- #: inc/exclude-posts.php:169
344
- msgid "&raquo;"
345
- msgstr "&raquo;"
346
-
347
- #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
348
- #, php-format
349
- msgid "Displaying %s&#8211;%s of %s"
350
- msgstr "Mostrando %s&#8211;%s de %s"
351
-
352
- #: inc/exclude-posts.php:356
353
- msgid "No Posts found. Review your search or filter criteria/term."
354
- msgstr ""
355
- "No se han encontrado publicaciones. Revisa las palabras o criterios de "
356
- "filtro de la búsqueda."
357
-
358
- #: inc/exclude-posts.php:363
359
- msgid ""
360
- "You do not have enough permission to set the option. Please contact your "
361
- "admin."
362
- msgstr ""
363
- "No tienes los permisos necesarios para modificar esta opción.. Por favor, "
364
- "ponte en contacto con tu administrador."
365
-
366
- #: inc/view-exclude.php:4 inc/view.php:3
367
- msgid "After 6 months of hard work, we have just released"
368
- msgstr "Después de 6 meses de duro trabajo, acabamos de lanzar"
369
-
370
- #: inc/view-exclude.php:4 inc/view.php:3
371
- msgid "the island of WordPress themes."
372
- msgstr "la isla de temas de WordPress."
373
-
374
- #: inc/view-exclude.php:5 inc/view.php:4
375
- msgid "Show Me"
376
- msgstr "Muéstramela"
377
-
378
- #: inc/view-exclude.php:15 inc/view.php:14
379
- msgid "by"
380
- msgstr "por"
381
-
382
- #: inc/view-exclude.php:18 inc/view.php:17
383
- msgid "Show your love"
384
- msgstr "Muestra tu amor"
385
-
386
- #: inc/view-exclude.php:19 inc/view.php:18
387
- msgid "Leave A Review"
388
- msgstr "Deja una reseña"
389
-
390
- #: inc/view-exclude.php:30
391
- msgid "Revive Old Post is set to share on a"
392
- msgstr "Revive Old Post está configurado para compartir en un"
393
-
394
- #: inc/view-exclude.php:32 inc/view.php:31
395
- msgid "hours interval, "
396
- msgstr "intervalo de horas, "
397
-
398
- #: inc/view-exclude.php:33 inc/view.php:32
399
- msgid "and the next share will take place in: "
400
- msgstr "y la siguiente compartición se llevará a cabo en: "
401
-
402
- #: inc/view-exclude.php:38
403
- msgid "Revive Old Post is not set to share!"
404
- msgstr "¡Revive Old Post no está configurado para compartir!"
405
-
406
- #: inc/view-exclude.php:42
407
- msgid ""
408
- "You have selected following POST IDs to be excluded from tweeting: <span "
409
- "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
410
- "Note: If you have made any change and dint hit 'Exclude Selected' button "
411
- "changes will not be saved. "
412
- msgstr ""
413
- "Has seleccionado excluir los siguientes IDs de publicación de los tuits: "
414
- "<span id='excludeList' style='font-weight:bold;font-style:italic;'> </ "
415
- "span> \n"
416
- " Nota:. Si has realizado algún cambio sin darle al botón 'Excluir "
417
- "seleccionados', los cambios no se guardarán. "
418
-
419
- #: inc/view.php:29
420
- msgid "Revive Old Post is set to post on a"
421
- msgstr "Revive Old Post está configurado para publicar en"
422
-
423
- #: inc/view.php:37
424
- msgid "Revive Old Post is not set to post!"
425
- msgstr "¡Revive Old Post no está configurado para publicar!"
426
-
427
- #: inc/view.php:42
428
- msgid ""
429
- "Once you click start sharing a post will be sent in 15 sec, also here you "
430
- "can see the error message if is any."
431
- msgstr ""
432
- "Una vez hagas clic en Empezar a compartir, se enviará una publicación en 15 "
433
- "segundos, también aquí podrás ver el mensaje de error si ocurre algo."
434
-
435
- #: inc/view.php:52
436
- msgid "Twitter Login"
437
- msgstr "Acceder con Twitter"
438
-
439
- #: inc/view.php:53
440
- msgid "Login using your Twitter account."
441
- msgstr "Accede utilizando tu cuenta de Twitter."
442
-
443
- #: inc/view.php:77 inc/view.php:111
444
- msgid "Add Account"
445
- msgstr "Añadir Cuenta"
446
-
447
- #: inc/view.php:84
448
- msgid "Facebook Login"
449
- msgstr "Acceder con Facebook"
450
-
451
- #: inc/view.php:85
452
- msgid "Login using your Facebook account."
453
- msgstr "Accede utilizando tu cuenta de Facebook."
454
-
455
- #: inc/view.php:109
456
- msgid "Authorize"
457
- msgstr "Autorizar"
458
-
459
- #: inc/view.php:118
460
- msgid "Linkedin Login"
461
- msgstr "Acceso con Linkedin"
462
-
463
- #: inc/view.php:119
464
- msgid "Login using your Linkedin account."
465
- msgstr "Accede utilizando tu cuenta de Linkedin."
466
-
467
- #: inc/view.php:141
468
- msgid "Add account"
469
- msgstr "Agregar cuenta"
470
-
471
- #: inc/view.php:154
472
- msgid "Select All"
473
- msgstr "Seleccionar todo"
474
-
475
- #: inc/view.php:165
476
- msgid "Reset"
477
- msgstr "Restablecer"
478
-
479
- #: inc/view.php:166
480
- msgid "Save"
481
- msgstr "Guardar"
482
-
483
- #: inc/view.php:167
484
- msgid "Start Sharing"
485
- msgstr "Empezar a compartir"
486
-
487
- #: inc/view.php:168
488
- msgid "Stop Sharing"
489
- msgstr "Dejar de compartir"
490
-
491
- #: inc/view.php:169
492
- msgid "See Sample Post"
493
- msgstr "Ver una publicación de muestra"
494
-
495
- #: inc/view.php:171
496
- msgid ""
497
- "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
498
- msgstr ""
499
- "No estamos afiliados o asociados con Twitter / Facebook / Linkedin de "
500
- "ninguna manera."
501
-
502
- #: inc/view.php:176
503
- msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
504
- msgstr ""
505
- "Actualiza Tweet Old Post por solo 9,99 dólares - ¡Actualizar a Pro Ahora!"
506
-
507
- #: inc/view.php:177
508
- msgid "ThemeIsle - Deadly Simple WordPress Themes"
509
- msgstr "ThemeIsle - Temas de WordPress increíblemente sencillos"
510
-
511
- #: inc/view.php:178
512
- msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
513
- msgstr ""
514
- "ThemeIsle - Haz publicidad de nuestros temas y plugins y consigue una "
515
- "comisión del 55%"
516
-
517
- #: inc/view.php:185
518
- #, fuzzy
519
- msgid "Sample Post Preview"
520
- msgstr "Ver una publicación de muestra"
521
-
522
- #: inc/view.php:187 inc/view.php:196 inc/view.php:242 inc/view.php:289
523
- msgid "Close preview"
524
- msgstr ""
525
-
526
- #: inc/view.php:188
527
- msgid "Share now"
528
- msgstr ""
529
-
530
- #: inc/view.php:194
531
- msgid "Choose a Profile or Page"
532
- msgstr ""
533
-
534
- #: inc/view.php:202
535
- msgid "Add Your Facebook Account Following The Instructions On The Left"
536
- msgstr ""
537
-
538
- #: inc/view.php:206 inc/view.php:252
539
- msgid "Go on"
540
- msgstr ""
541
-
542
- #: inc/view.php:207
543
- msgid "Click on <strong>Create New App</strong> from the top right corner"
544
- msgstr ""
545
-
546
- #: inc/view.php:208
547
- msgid ""
548
- "Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and "
549
- "click on Create App"
550
- msgstr ""
551
-
552
- #: inc/view.php:209
553
- msgid ""
554
- "Once you arrive on the app dashboard, copy your <strong>App ID</strong> and "
555
- "<strong>App Secret</strong> in the fields on the right"
556
- msgstr ""
557
-
558
- #: inc/view.php:210
559
- msgid ""
560
- "Go on Settings tab from the left sidebar menu add the contact email and "
561
- "click on <strong>Add Platform</strong> and select <strong>Website</strong>"
562
- msgstr ""
563
-
564
- #: inc/view.php:211
565
- msgid ""
566
- "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into App "
567
- "Domains and Site URL fields and <strong>Save</strong>"
568
- msgstr ""
569
-
570
- #: inc/view.php:212
571
- msgid ""
572
- "Go on Status & Review tab and set your app live from the top-right switch."
573
- msgstr ""
574
-
575
- #: inc/view.php:213 inc/view.php:259
576
- msgid "Now everything is done, click on <strong>Authorize App</strong> button."
577
- msgstr ""
578
-
579
- #: inc/view.php:219
580
- #, fuzzy
581
- msgid "Facebook App ID"
582
- msgstr "Acceder con Facebook"
583
-
584
- #: inc/view.php:220
585
- msgid "ID from your app created on facebook website."
586
- msgstr ""
587
-
588
- #: inc/view.php:231
589
- msgid "Facebook App Secret"
590
- msgstr ""
591
-
592
- #: inc/view.php:232
593
- msgid "Secret from your app created on facebook website. "
594
- msgstr ""
595
-
596
- #: inc/view.php:240 inc/view.php:287
597
- #, fuzzy
598
- msgid "Authorize App"
599
- msgstr "Autorizar"
600
-
601
- #: inc/view.php:248
602
- msgid "Add Your Linkedin Account Following The Instructions On The Left"
603
- msgstr ""
604
-
605
- #: inc/view.php:253
606
- msgid ""
607
- "Enter the required details and pay special attention to the further fields :"
608
- msgstr ""
609
-
610
- #: inc/view.php:254
611
- msgid "Make sure you set Live Status to LIVE"
612
- msgstr ""
613
-
614
- #: inc/view.php:255
615
- msgid "Default Scope should have r_basicprofile and rw_nus checked"
616
- msgstr ""
617
-
618
- #: inc/view.php:256
619
- msgid ""
620
- "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into OAuth "
621
- "2.0 Redirect URLs"
622
- msgstr ""
623
-
624
- #: inc/view.php:257
625
- msgid ""
626
- "Once all required fields are filled click on Add Application button, get the "
627
- "API Key and Secret Key and paste them in the fields on the right"
628
- msgstr ""
629
-
630
- #: inc/view.php:265
631
- #, fuzzy
632
- msgid "Linkedin API Key"
633
- msgstr "Acceso con Linkedin"
634
-
635
- #: inc/view.php:266
636
- msgid "API Key that you get once you create an app"
637
- msgstr ""
638
-
639
- #: inc/view.php:277
640
- msgid "Linkedin Secret Key"
641
- msgstr ""
642
-
643
- #: inc/view.php:278
644
- msgid "Secret Key that you get once you create an app"
645
- msgstr ""
646
-
647
- #. Description of the plugin/theme
648
- msgid ""
649
- "Wordpress plugin that helps you to keeps your old posts alive by sharing "
650
- "them and driving more traffic to them from twitter/facebook or linkedin. It "
651
- "also helps you to promote your content. You can set time and no of posts to "
652
- "share to drive more traffic.For questions, comments, or feature requests, <a "
653
- "href=\"https://themeisle.com/contact/?"
654
- "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
655
- msgstr ""
656
- "Plugin para Wordpress que ayuda a mantener vivos tus publicaciones antiguas "
657
- "compartiéndolas y atrayendo más tráfico desde twitter / facebook o linkedin. "
658
- "También te ayuda a promocionar tu contenido. Puedes establecer el tiempo y "
659
- "número de publicaciones a compartir para atraer más tráfico. Para preguntas, "
660
- "comentarios o peticiones, <a href=\"https://themeisle.com/contact/?"
661
- "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">¡Ponte en "
662
- "contacto </a> con nosotros!"
663
-
664
- #~ msgid "Post Only"
665
- #~ msgstr "Solo la publicación"
666
-
667
- #~ msgid "Page Only"
668
- #~ msgstr "Solo la página"
669
-
670
- #~ msgid "Custom Post Type"
671
- #~ msgstr "Tipo de publicación personalizada"
672
-
673
- #~ msgid "Post and Page"
674
- #~ msgstr "Publicación y página"
675
-
676
- #~ msgid "Select which custom post type"
677
- #~ msgstr "Selecciona el tipo de publicación personalizada"
678
-
679
- #~ msgid "ExcludePosts"
680
- #~ msgstr "Excluir publicaciones"
681
-
682
- #~ msgid "Revive Old Post PRO"
683
- #~ msgstr "Revive Old Post PRO"
1
+ # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
+ # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
+ "POT-Creation-Date: 2014-07-16 00:01+0100\n"
8
+ "PO-Revision-Date: 2014-10-03 15:56+0100\n"
9
+ "Last-Translator: Ionut <friends@themeisle.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
+ "X-Generator: Poedit 1.5.7\n"
15
+ "X-Poedit-KeywordsList: _;__;_e\n"
16
+ "X-Poedit-Basepath: ../\n"
17
+ "X-Poedit-SearchPath-0: .\n"
18
+ "X-Poedit-SearchPath-1: inc\n"
19
+
20
+ #: inc/class-remote-notification-client.php:260
21
+ msgid "Dismiss notification"
22
+ msgstr "Descartar la notificación"
23
+
24
+ #: inc/class-remote-notification-client.php:262
25
+ msgid "Dismiss"
26
+ msgstr "Descartar"
27
+
28
+ #: inc/config.php:24
29
+ msgid "Post Content"
30
+ msgstr "Publicar contenido "
31
+
32
+ #: inc/config.php:28
33
+ msgid "What do you want to share?"
34
+ msgstr "¿Qué es lo que deseas compartir?"
35
+
36
+ #: inc/config.php:30
37
+ msgid "Title Only"
38
+ msgstr "Solo Título"
39
+
40
+ #: inc/config.php:31
41
+ msgid "Body Only"
42
+ msgstr "Solo cuerpo"
43
+
44
+ #: inc/config.php:32
45
+ msgid "Title & Body"
46
+ msgstr "Título y Cuerpo"
47
+
48
+ #: inc/config.php:33
49
+ msgid "Custom Field"
50
+ msgstr "Campo personalizado"
51
+
52
+ #: inc/config.php:39
53
+ msgid "Post Content Custom Field"
54
+ msgstr "Publicar campo de contenido personalizado"
55
+
56
+ #: inc/config.php:43
57
+ msgid "Which custom field do you want to fetch info from?"
58
+ msgstr "¿De qué campo personalizado deseas tomar la información?"
59
+
60
+ #: inc/config.php:49
61
+ msgid "Additional Text"
62
+ msgstr "Texto adicional"
63
+
64
+ #: inc/config.php:53
65
+ msgid "Text added to your auto posts"
66
+ msgstr "Texto añadido a tus autopublicaciones"
67
+
68
+ #: inc/config.php:59
69
+ msgid "Additional Text At"
70
+ msgstr "Texto adicional en"
71
+
72
+ #: inc/config.php:63
73
+ msgid "Where do you want the text to be added?"
74
+ msgstr "¿Dónde quieres que se añada el texto?"
75
+
76
+ #: inc/config.php:65
77
+ msgid "Beginning of Post"
78
+ msgstr "Principio de la publicación"
79
+
80
+ #: inc/config.php:66
81
+ msgid "End of Post"
82
+ msgstr "Fin de la publicación"
83
+
84
+ #: inc/config.php:72
85
+ msgid "Include Link"
86
+ msgstr "Incluir enlace"
87
+
88
+ #: inc/config.php:76
89
+ msgid "Include a link to your post?"
90
+ msgstr "¿Incluir un enlace a tu publicación?"
91
+
92
+ #: inc/config.php:78
93
+ msgid "Yes"
94
+ msgstr "Sí"
95
+
96
+ #: inc/config.php:79
97
+ msgid "No"
98
+ msgstr "No"
99
+
100
+ #: inc/config.php:85
101
+ msgid "Fetch URL From Custom Field"
102
+ msgstr "Tomar URL del campo personalizado"
103
+
104
+ #: inc/config.php:89
105
+ msgid "URL will be fetched from a custom field."
106
+ msgstr "La URL se obtendrá de un campo personalizado."
107
+
108
+ #: inc/config.php:95
109
+ msgid "URL Custom Field"
110
+ msgstr "Campo personalizado de URL"
111
+
112
+ #: inc/config.php:99
113
+ msgid "URL will be fetched from the specified custom field."
114
+ msgstr "La URL se tomará del campo personalizado especificado."
115
+
116
+ #: inc/config.php:105
117
+ msgid "Use URL Shortner"
118
+ msgstr "Utilizar acortador de URL"
119
+
120
+ #: inc/config.php:117
121
+ msgid "URL Shortner Service"
122
+ msgstr "Servicio de acortado de URL"
123
+
124
+ #: inc/config.php:121
125
+ msgid "Shorten the link to your post."
126
+ msgstr "Acortar el enlace a tu publicación."
127
+
128
+ #: inc/config.php:123
129
+ msgid "wp short url"
130
+ msgstr "wp url corta"
131
+
132
+ #: inc/config.php:125
133
+ msgid "is.gd"
134
+ msgstr "is.gd"
135
+
136
+ #: inc/config.php:126
137
+ msgid "bit.ly"
138
+ msgstr "bit.ly"
139
+
140
+ #: inc/config.php:138
141
+ msgid "Bitly Key"
142
+ msgstr "Clave Bitly"
143
+
144
+ #: inc/config.php:148
145
+ msgid "Bitly User"
146
+ msgstr "Usuario Bitly"
147
+
148
+ #: inc/config.php:158
149
+ msgid "Hashtags"
150
+ msgstr "Etiquetas"
151
+
152
+ #: inc/config.php:162
153
+ msgid "Include #hashtags in your auto posts?"
154
+ msgstr "¿Incluir #etiquetas en tus autopublicaciones?"
155
+
156
+ #: inc/config.php:164
157
+ msgid "Don't add any hashtags"
158
+ msgstr "No agregar ninguna etiqueta"
159
+
160
+ #: inc/config.php:165
161
+ msgid "Common hashtags for all shares"
162
+ msgstr "Etiquetas comunes para todas las comparticiones"
163
+
164
+ #: inc/config.php:166
165
+ msgid "Create hashtags from Categories"
166
+ msgstr "Crear etiquetas a partir de Categorías"
167
+
168
+ #: inc/config.php:167
169
+ msgid "Create hashtags from Tags"
170
+ msgstr "Crear etiquetas a partir de Etiquetas"
171
+
172
+ #: inc/config.php:168
173
+ msgid "Create hashtags from Custom Fields"
174
+ msgstr "Crear etiquetas a partir de Campos Personalizados"
175
+
176
+ #: inc/config.php:174
177
+ msgid "Common Hashtags"
178
+ msgstr "Etiquetas comunes"
179
+
180
+ #: inc/config.php:178
181
+ msgid "Specify which hashtags you want to be used. eg. #example, #example2"
182
+ msgstr ""
183
+ "Especifica las etiquetas que deseas utilizar. Por ejemplo. #ejemplo, "
184
+ "#ejemplo2"
185
+
186
+ #: inc/config.php:184
187
+ msgid "Maximum Hashtags Length"
188
+ msgstr "Longitud máxima de las etiquetas"
189
+
190
+ #: inc/config.php:188
191
+ msgid "Set to 0 (characters) to include all."
192
+ msgstr "Pon este valor a 0 (caracteres) para incluir todos."
193
+
194
+ #: inc/config.php:194
195
+ msgid "Hashtag Custom Field"
196
+ msgstr "Campo personalizado de etiqueta"
197
+
198
+ #: inc/config.php:198
199
+ msgid "Fetch hashtags from specified custom field"
200
+ msgstr "Tomar etiquetas del campo personalizado especificado"
201
+
202
+ #: inc/config.php:204
203
+ msgid "Minimum interval between shares"
204
+ msgstr "Intervalo mínimo entre comparticiones"
205
+
206
+ #: inc/config.php:208
207
+ msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
208
+ msgstr ""
209
+ "Tiempo mínimo entre comparticiones (hora / horas), También se puede usar 0.4."
210
+
211
+ #: inc/config.php:214
212
+ msgid "Minimum age of post to be eligible for sharing"
213
+ msgstr ""
214
+ "Antigüedad mínima de la publicación para poder ser seleccionada para ser "
215
+ "compartida"
216
+
217
+ #: inc/config.php:218 inc/config.php:228
218
+ msgid "Day/Days - 0 for Disabled"
219
+ msgstr "Día / días - 0 para deshabilitar"
220
+
221
+ #: inc/config.php:224
222
+ msgid "Maximum age of post to be eligible for sharing"
223
+ msgstr ""
224
+ "Antigüedad máxima de la publicación para poder ser seleccionada para ser "
225
+ "compartida"
226
+
227
+ #: inc/config.php:234
228
+ msgid "Number of Posts to share"
229
+ msgstr "Número de publicaciones a compartir"
230
+
231
+ #: inc/config.php:238
232
+ msgid "Number of posts to share each time"
233
+ msgstr "Número de publicaciones a compartir cada vez"
234
+
235
+ #: inc/config.php:246
236
+ msgid "Post with Image"
237
+ msgstr "Publicar con imagen"
238
+
239
+ #: inc/config.php:250
240
+ msgid "Check if you want to add the post featured image to the share"
241
+ msgstr ""
242
+ "Comprueba si quieres agregar la imagen destacada del artículo en la "
243
+ "compartición"
244
+
245
+ #: inc/config.php:256
246
+ msgid "Share old posts more than once"
247
+ msgstr "Compartir publicaciones antiguas más de una vez"
248
+
249
+ #: inc/config.php:260
250
+ msgid ""
251
+ "By default once a post is shared it will not be shared again until you stop/"
252
+ "start the plugin"
253
+ msgstr ""
254
+ "De forma predeterminada, una vez se haya compartido una publicación, no se "
255
+ "volverá a compartir hasta que se detenga y se inicie el plugin"
256
+
257
+ #: inc/config.php:268
258
+ msgid "Post Type"
259
+ msgstr "Tipo de publicación"
260
+
261
+ #: inc/config.php:272
262
+ msgid "What type of items do you want to share?"
263
+ msgstr "¿Qué tipo de elementos quieres compartir?"
264
+
265
+ #: inc/config.php:279
266
+ msgid "Google Analytics Campaign Tracking"
267
+ msgstr "Seguimiento de campaña de Google Analytics"
268
+
269
+ #: inc/config.php:283
270
+ msgid ""
271
+ "Enabling Campaign Tracking you would be able to see how much traffic Revive "
272
+ "Old Post generated."
273
+ msgstr ""
274
+ "Habilitando el seguimiento de campaña podrás ver cuánto tráfico ha generado "
275
+ "Revive Old Post."
276
+
277
+ #: inc/config.php:289
278
+ msgid "Exclude Specific Categories"
279
+ msgstr "Excluir categorías específicas"
280
+
281
+ #: inc/config.php:293
282
+ msgid ""
283
+ "Select which categories do you want to exclude to share from? Blank - None"
284
+ msgstr ""
285
+ "Selecciona las categorías que deseas excluir de la compartición. En blanco - "
286
+ "ninguna"
287
+
288
+ #: inc/core.php:81
289
+ msgid "Tweet Old Post is already active!"
290
+ msgstr "¡Ya está activado Tweet Old Post!"
291
+
292
+ #: inc/core.php:101
293
+ #, fuzzy
294
+ msgid "ROP is already inactive!"
295
+ msgstr "¡Ya está desactivado Tweet Old Post!"
296
+
297
+ #: inc/core.php:811
298
+ msgid "Custom Tweet User Interval"
299
+ msgstr "Intervalo de usuario de tuit personalizado"
300
+
301
+ #: inc/core.php:1127
302
+ msgid "Could not connect to Twitter!"
303
+ msgstr "¡Ha fallado la conexión a Twitter!"
304
+
305
+ #: inc/core.php:1385
306
+ msgid "This is only available in the"
307
+ msgstr "Solo está disponible en la"
308
+
309
+ #: inc/core.php:1385
310
+ msgid "PRO version"
311
+ msgstr "versión PRO"
312
+
313
+ #: inc/core.php:1644
314
+ msgid "Exclude Posts"
315
+ msgstr "Excluir publicaciones"
316
+
317
+ #: inc/exclude-posts.php:24
318
+ msgid "Tweet Old Post Options Updated."
319
+ msgstr "Actualizadas las opciones de Tweet Old Post."
320
+
321
+ #: inc/exclude-posts.php:63
322
+ msgid "No post selected please select a post to be excluded."
323
+ msgstr ""
324
+ "No se ha seleccionado ninguna publicación, por favor selecciona una "
325
+ "publicación a excluir."
326
+
327
+ #: inc/exclude-posts.php:70
328
+ msgid "Posts excluded successfully."
329
+ msgstr "Publicaciones excluidas con éxito."
330
+
331
+ #: inc/exclude-posts.php:155
332
+ msgid "Selected Categories"
333
+ msgstr "Categorías seleccionadas"
334
+
335
+ #: inc/exclude-posts.php:157
336
+ msgid "Filter"
337
+ msgstr "Filtro"
338
+
339
+ #: inc/exclude-posts.php:168
340
+ msgid "&laquo;"
341
+ msgstr "&laquo;"
342
+
343
+ #: inc/exclude-posts.php:169
344
+ msgid "&raquo;"
345
+ msgstr "&raquo;"
346
+
347
+ #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
348
+ #, php-format
349
+ msgid "Displaying %s&#8211;%s of %s"
350
+ msgstr "Mostrando %s&#8211;%s de %s"
351
+
352
+ #: inc/exclude-posts.php:356
353
+ msgid "No Posts found. Review your search or filter criteria/term."
354
+ msgstr ""
355
+ "No se han encontrado publicaciones. Revisa las palabras o criterios de "
356
+ "filtro de la búsqueda."
357
+
358
+ #: inc/exclude-posts.php:363
359
+ msgid ""
360
+ "You do not have enough permission to set the option. Please contact your "
361
+ "admin."
362
+ msgstr ""
363
+ "No tienes los permisos necesarios para modificar esta opción.. Por favor, "
364
+ "ponte en contacto con tu administrador."
365
+
366
+ #: inc/view-exclude.php:4 inc/view.php:3
367
+ msgid "After 6 months of hard work, we have just released"
368
+ msgstr "Después de 6 meses de duro trabajo, acabamos de lanzar"
369
+
370
+ #: inc/view-exclude.php:4 inc/view.php:3
371
+ msgid "the island of WordPress themes."
372
+ msgstr "la isla de temas de WordPress."
373
+
374
+ #: inc/view-exclude.php:5 inc/view.php:4
375
+ msgid "Show Me"
376
+ msgstr "Muéstramela"
377
+
378
+ #: inc/view-exclude.php:15 inc/view.php:14
379
+ msgid "by"
380
+ msgstr "por"
381
+
382
+ #: inc/view-exclude.php:18 inc/view.php:17
383
+ msgid "Show your love"
384
+ msgstr "Muestra tu amor"
385
+
386
+ #: inc/view-exclude.php:19 inc/view.php:18
387
+ msgid "Leave A Review"
388
+ msgstr "Deja una reseña"
389
+
390
+ #: inc/view-exclude.php:30
391
+ msgid "Revive Old Post is set to share on a"
392
+ msgstr "Revive Old Post está configurado para compartir en un"
393
+
394
+ #: inc/view-exclude.php:32 inc/view.php:31
395
+ msgid "hours interval, "
396
+ msgstr "intervalo de horas, "
397
+
398
+ #: inc/view-exclude.php:33 inc/view.php:32
399
+ msgid "and the next share will take place in: "
400
+ msgstr "y la siguiente compartición se llevará a cabo en: "
401
+
402
+ #: inc/view-exclude.php:38
403
+ msgid "Revive Old Post is not set to share!"
404
+ msgstr "¡Revive Old Post no está configurado para compartir!"
405
+
406
+ #: inc/view-exclude.php:42
407
+ msgid ""
408
+ "You have selected following POST IDs to be excluded from tweeting: <span "
409
+ "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
410
+ "Note: If you have made any change and dint hit 'Exclude Selected' button "
411
+ "changes will not be saved. "
412
+ msgstr ""
413
+ "Has seleccionado excluir los siguientes IDs de publicación de los tuits: "
414
+ "<span id='excludeList' style='font-weight:bold;font-style:italic;'> </ "
415
+ "span> \n"
416
+ " Nota:. Si has realizado algún cambio sin darle al botón 'Excluir "
417
+ "seleccionados', los cambios no se guardarán. "
418
+
419
+ #: inc/view.php:29
420
+ msgid "Revive Old Post is set to post on a"
421
+ msgstr "Revive Old Post está configurado para publicar en"
422
+
423
+ #: inc/view.php:37
424
+ msgid "Revive Old Post is not set to post!"
425
+ msgstr "¡Revive Old Post no está configurado para publicar!"
426
+
427
+ #: inc/view.php:42
428
+ msgid ""
429
+ "Once you click start sharing a post will be sent in 15 sec, also here you "
430
+ "can see the error message if is any."
431
+ msgstr ""
432
+ "Una vez hagas clic en Empezar a compartir, se enviará una publicación en 15 "
433
+ "segundos, también aquí podrás ver el mensaje de error si ocurre algo."
434
+
435
+ #: inc/view.php:52
436
+ msgid "Twitter Login"
437
+ msgstr "Acceder con Twitter"
438
+
439
+ #: inc/view.php:53
440
+ msgid "Login using your Twitter account."
441
+ msgstr "Accede utilizando tu cuenta de Twitter."
442
+
443
+ #: inc/view.php:77 inc/view.php:111
444
+ msgid "Add Account"
445
+ msgstr "Añadir Cuenta"
446
+
447
+ #: inc/view.php:84
448
+ msgid "Facebook Login"
449
+ msgstr "Acceder con Facebook"
450
+
451
+ #: inc/view.php:85
452
+ msgid "Login using your Facebook account."
453
+ msgstr "Accede utilizando tu cuenta de Facebook."
454
+
455
+ #: inc/view.php:109
456
+ msgid "Authorize"
457
+ msgstr "Autorizar"
458
+
459
+ #: inc/view.php:118
460
+ msgid "Linkedin Login"
461
+ msgstr "Acceso con Linkedin"
462
+
463
+ #: inc/view.php:119
464
+ msgid "Login using your Linkedin account."
465
+ msgstr "Accede utilizando tu cuenta de Linkedin."
466
+
467
+ #: inc/view.php:141
468
+ msgid "Add account"
469
+ msgstr "Agregar cuenta"
470
+
471
+ #: inc/view.php:154
472
+ msgid "Select All"
473
+ msgstr "Seleccionar todo"
474
+
475
+ #: inc/view.php:165
476
+ msgid "Reset"
477
+ msgstr "Restablecer"
478
+
479
+ #: inc/view.php:166
480
+ msgid "Save"
481
+ msgstr "Guardar"
482
+
483
+ #: inc/view.php:167
484
+ msgid "Start Sharing"
485
+ msgstr "Empezar a compartir"
486
+
487
+ #: inc/view.php:168
488
+ msgid "Stop Sharing"
489
+ msgstr "Dejar de compartir"
490
+
491
+ #: inc/view.php:169
492
+ msgid "See Sample Post"
493
+ msgstr "Ver una publicación de muestra"
494
+
495
+ #: inc/view.php:171
496
+ msgid ""
497
+ "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
498
+ msgstr ""
499
+ "No estamos afiliados o asociados con Twitter / Facebook / Linkedin de "
500
+ "ninguna manera."
501
+
502
+ #: inc/view.php:176
503
+ msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
504
+ msgstr ""
505
+ "Actualiza Tweet Old Post por solo 9,99 dólares - ¡Actualizar a Pro Ahora!"
506
+
507
+ #: inc/view.php:177
508
+ msgid "ThemeIsle - Deadly Simple WordPress Themes"
509
+ msgstr "ThemeIsle - Temas de WordPress increíblemente sencillos"
510
+
511
+ #: inc/view.php:178
512
+ msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
513
+ msgstr ""
514
+ "ThemeIsle - Haz publicidad de nuestros temas y plugins y consigue una "
515
+ "comisión del 55%"
516
+
517
+ #: inc/view.php:185
518
+ #, fuzzy
519
+ msgid "Sample Post Preview"
520
+ msgstr "Ver una publicación de muestra"
521
+
522
+ #: inc/view.php:187 inc/view.php:196 inc/view.php:242 inc/view.php:289
523
+ msgid "Close preview"
524
+ msgstr ""
525
+
526
+ #: inc/view.php:188
527
+ msgid "Share now"
528
+ msgstr ""
529
+
530
+ #: inc/view.php:194
531
+ msgid "Choose a Profile or Page"
532
+ msgstr ""
533
+
534
+ #: inc/view.php:202
535
+ msgid "Add Your Facebook Account Following The Instructions On The Left"
536
+ msgstr ""
537
+
538
+ #: inc/view.php:206 inc/view.php:252
539
+ msgid "Go on"
540
+ msgstr ""
541
+
542
+ #: inc/view.php:207
543
+ msgid "Click on <strong>Create New App</strong> from the top right corner"
544
+ msgstr ""
545
+
546
+ #: inc/view.php:208
547
+ msgid ""
548
+ "Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and "
549
+ "click on Create App"
550
+ msgstr ""
551
+
552
+ #: inc/view.php:209
553
+ msgid ""
554
+ "Once you arrive on the app dashboard, copy your <strong>App ID</strong> and "
555
+ "<strong>App Secret</strong> in the fields on the right"
556
+ msgstr ""
557
+
558
+ #: inc/view.php:210
559
+ msgid ""
560
+ "Go on Settings tab from the left sidebar menu add the contact email and "
561
+ "click on <strong>Add Platform</strong> and select <strong>Website</strong>"
562
+ msgstr ""
563
+
564
+ #: inc/view.php:211
565
+ msgid ""
566
+ "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into App "
567
+ "Domains and Site URL fields and <strong>Save</strong>"
568
+ msgstr ""
569
+
570
+ #: inc/view.php:212
571
+ msgid ""
572
+ "Go on Status & Review tab and set your app live from the top-right switch."
573
+ msgstr ""
574
+
575
+ #: inc/view.php:213 inc/view.php:259
576
+ msgid "Now everything is done, click on <strong>Authorize App</strong> button."
577
+ msgstr ""
578
+
579
+ #: inc/view.php:219
580
+ #, fuzzy
581
+ msgid "Facebook App ID"
582
+ msgstr "Acceder con Facebook"
583
+
584
+ #: inc/view.php:220
585
+ msgid "ID from your app created on facebook website."
586
+ msgstr ""
587
+
588
+ #: inc/view.php:231
589
+ msgid "Facebook App Secret"
590
+ msgstr ""
591
+
592
+ #: inc/view.php:232
593
+ msgid "Secret from your app created on facebook website. "
594
+ msgstr ""
595
+
596
+ #: inc/view.php:240 inc/view.php:287
597
+ #, fuzzy
598
+ msgid "Authorize App"
599
+ msgstr "Autorizar"
600
+
601
+ #: inc/view.php:248
602
+ msgid "Add Your Linkedin Account Following The Instructions On The Left"
603
+ msgstr ""
604
+
605
+ #: inc/view.php:253
606
+ msgid ""
607
+ "Enter the required details and pay special attention to the further fields :"
608
+ msgstr ""
609
+
610
+ #: inc/view.php:254
611
+ msgid "Make sure you set Live Status to LIVE"
612
+ msgstr ""
613
+
614
+ #: inc/view.php:255
615
+ msgid "Default Scope should have r_basicprofile and rw_nus checked"
616
+ msgstr ""
617
+
618
+ #: inc/view.php:256
619
+ msgid ""
620
+ "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into OAuth "
621
+ "2.0 Redirect URLs"
622
+ msgstr ""
623
+
624
+ #: inc/view.php:257
625
+ msgid ""
626
+ "Once all required fields are filled click on Add Application button, get the "
627
+ "API Key and Secret Key and paste them in the fields on the right"
628
+ msgstr ""
629
+
630
+ #: inc/view.php:265
631
+ #, fuzzy
632
+ msgid "Linkedin API Key"
633
+ msgstr "Acceso con Linkedin"
634
+
635
+ #: inc/view.php:266
636
+ msgid "API Key that you get once you create an app"
637
+ msgstr ""
638
+
639
+ #: inc/view.php:277
640
+ msgid "Linkedin Secret Key"
641
+ msgstr ""
642
+
643
+ #: inc/view.php:278
644
+ msgid "Secret Key that you get once you create an app"
645
+ msgstr ""
646
+
647
+ #. Description of the plugin/theme
648
+ msgid ""
649
+ "Wordpress plugin that helps you to keeps your old posts alive by sharing "
650
+ "them and driving more traffic to them from twitter/facebook or linkedin. It "
651
+ "also helps you to promote your content. You can set time and no of posts to "
652
+ "share to drive more traffic.For questions, comments, or feature requests, <a "
653
+ "href=\"https://themeisle.com/contact/?"
654
+ "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
655
+ msgstr ""
656
+ "Plugin para Wordpress que ayuda a mantener vivos tus publicaciones antiguas "
657
+ "compartiéndolas y atrayendo más tráfico desde twitter / facebook o linkedin. "
658
+ "También te ayuda a promocionar tu contenido. Puedes establecer el tiempo y "
659
+ "número de publicaciones a compartir para atraer más tráfico. Para preguntas, "
660
+ "comentarios o peticiones, <a href=\"https://themeisle.com/contact/?"
661
+ "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">¡Ponte en "
662
+ "contacto </a> con nosotros!"
663
+
664
+ #~ msgid "Post Only"
665
+ #~ msgstr "Solo la publicación"
666
+
667
+ #~ msgid "Page Only"
668
+ #~ msgstr "Solo la página"
669
+
670
+ #~ msgid "Custom Post Type"
671
+ #~ msgstr "Tipo de publicación personalizada"
672
+
673
+ #~ msgid "Post and Page"
674
+ #~ msgstr "Publicación y página"
675
+
676
+ #~ msgid "Select which custom post type"
677
+ #~ msgstr "Selecciona el tipo de publicación personalizada"
678
+
679
+ #~ msgid "ExcludePosts"
680
+ #~ msgstr "Excluir publicaciones"
681
+
682
+ #~ msgid "Revive Old Post PRO"
683
+ #~ msgstr "Revive Old Post PRO"
languages/tweet-old-post-fr_FR.po CHANGED
@@ -1,564 +1,564 @@
1
- # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
- # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
- "POT-Creation-Date: 2014-07-12 23:21+0100\n"
8
- "PO-Revision-Date: 2014-07-18 00:30+0100\n"
9
- "Last-Translator: Ionut <friends@themeisle.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
- "X-Generator: Poedit 1.5.5\n"
15
- "X-Poedit-KeywordsList: _;__;_e\n"
16
- "X-Poedit-Basepath: ../\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
- "X-Poedit-SearchPath-1: inc\n"
19
-
20
- #: inc/class-remote-notification-client.php:260
21
- msgid "Dismiss notification"
22
- msgstr "Rejeter la notification"
23
-
24
- #: inc/class-remote-notification-client.php:262
25
- msgid "Dismiss"
26
- msgstr "Rejeter"
27
-
28
- #: inc/config.php:24
29
- msgid "Post Content"
30
- msgstr "Envoyer le contenu"
31
-
32
- #: inc/config.php:28
33
- msgid "What do you want to share?"
34
- msgstr "Que voulez-vous partager ?"
35
-
36
- #: inc/config.php:30
37
- msgid "Title Only"
38
- msgstr "Seulement le titre"
39
-
40
- #: inc/config.php:31
41
- msgid "Body Only"
42
- msgstr "Seulement le corps"
43
-
44
- #: inc/config.php:32
45
- msgid "Title & Body"
46
- msgstr "Titre et corps"
47
-
48
- #: inc/config.php:33
49
- msgid "Custom Field"
50
- msgstr "Champ personnalisé"
51
-
52
- #: inc/config.php:39
53
- msgid "Post Content Custom Field"
54
- msgstr "Envoyer le champ personnalisé du contenu"
55
-
56
- #: inc/config.php:43
57
- msgid "Which custom field do you want to fetch info from?"
58
- msgstr "De quel champ personnalisé voulez-vous récupérer des informations ?"
59
-
60
- #: inc/config.php:49
61
- msgid "Additional Text"
62
- msgstr "Texte supplémentaire"
63
-
64
- #: inc/config.php:53
65
- msgid "Text added to your auto posts"
66
- msgstr "Texte ajouté à vos messages automatiques"
67
-
68
- #: inc/config.php:59
69
- msgid "Additional Text At"
70
- msgstr "Texte supplémentaire"
71
-
72
- #: inc/config.php:63
73
- msgid "Where do you want the text to be added?"
74
- msgstr "Où voulez-vous ajouter le texte ?"
75
-
76
- #: inc/config.php:65
77
- msgid "Beginning of Post"
78
- msgstr "Début du message"
79
-
80
- #: inc/config.php:66
81
- msgid "End of Post"
82
- msgstr "Fin du message"
83
-
84
- #: inc/config.php:72
85
- msgid "Include Link"
86
- msgstr "Inclure lien"
87
-
88
- #: inc/config.php:76
89
- msgid "Include a link to your post?"
90
- msgstr "Inclure un lien vers votre message ?"
91
-
92
- #: inc/config.php:78
93
- msgid "Yes"
94
- msgstr "Oui"
95
-
96
- #: inc/config.php:79
97
- msgid "No"
98
- msgstr "Non"
99
-
100
- #: inc/config.php:85
101
- msgid "Fetch URL From Custom Field"
102
- msgstr "Récupérer l'URL du champ personnalisé"
103
-
104
- #: inc/config.php:89
105
- msgid "URL will be fetched from a custom field."
106
- msgstr "L'URL sera récupéré à partir d'un champ personnalisé."
107
-
108
- #: inc/config.php:95
109
- msgid "URL Custom Field"
110
- msgstr "Champ personnalisé de l'URL"
111
-
112
- #: inc/config.php:99
113
- msgid "URL will be fetched from the specified custom field."
114
- msgstr "L'URL sera extraite du champ personnalisé spécifié."
115
-
116
- #: inc/config.php:105
117
- msgid "Use URL Shortner"
118
- msgstr "Utiliser URL de Shortner"
119
-
120
- #: inc/config.php:117
121
- msgid "URL Shortner Service"
122
- msgstr "URL du service Shortner"
123
-
124
- #: inc/config.php:121
125
- msgid "Shorten the link to your post."
126
- msgstr "Raccourcir le lien vers votre message."
127
-
128
- #: inc/config.php:123
129
- msgid "wp short url"
130
- msgstr "url courte wp"
131
-
132
- #: inc/config.php:125
133
- msgid "is.gd"
134
- msgstr "is.gd"
135
-
136
- #: inc/config.php:126
137
- msgid "bit.ly"
138
- msgstr "bit.ly"
139
-
140
- #: inc/config.php:138
141
- msgid "Bitly Key"
142
- msgstr "Clé Bitly"
143
-
144
- #: inc/config.php:148
145
- msgid "Bitly User"
146
- msgstr "Utilisateur Bitly"
147
-
148
- #: inc/config.php:158
149
- msgid "Hashtags"
150
- msgstr "Hashtags"
151
-
152
- #: inc/config.php:162
153
- msgid "Include #hashtags in your auto posts?"
154
- msgstr "Inclure # hashtags dans vos messages d'automatiques ?"
155
-
156
- #: inc/config.php:164
157
- msgid "Don't add any hashtags"
158
- msgstr "Ne pas ajouter de hashtags"
159
-
160
- #: inc/config.php:165
161
- msgid "Common hashtags for all shares"
162
- msgstr "Hashtags communs pour tous les partages"
163
-
164
- #: inc/config.php:166
165
- msgid "Create hashtags from Categories"
166
- msgstr "Créer hashtags à partir de Catégories"
167
-
168
- #: inc/config.php:167
169
- msgid "Create hashtags from Tags"
170
- msgstr "Créer hashtags à partir de Onglets"
171
-
172
- #: inc/config.php:168
173
- msgid "Create hashtags from Custom Fields"
174
- msgstr "Créer hashtags à  partir de Champs personnalisés"
175
-
176
- #: inc/config.php:174
177
- msgid "Common Hashtags"
178
- msgstr "Hashtags communs"
179
-
180
- #: inc/config.php:178
181
- msgid "Specify which hashtags you want to be used. eg. #example, #example2"
182
- msgstr ""
183
- "Spécifier les hashtags que vous voulez utiliser. Ex :  # exemple, # exemple2"
184
-
185
- #: inc/config.php:184
186
- msgid "Maximum Hashtags Length"
187
- msgstr "Longueur maximale des hashtags"
188
-
189
- #: inc/config.php:188
190
- msgid "Set to 0 (characters) to include all."
191
- msgstr "Fixé à 0 (caractères) pour tous les inclure."
192
-
193
- #: inc/config.php:194
194
- msgid "Hashtag Custom Field"
195
- msgstr " Champ personnalisé de Hashtag"
196
-
197
- #: inc/config.php:198
198
- msgid "Fetch hashtags from specified custom field"
199
- msgstr "Récupérer les hashtags à partir du champ personnalisé spécifié"
200
-
201
- #: inc/config.php:204
202
- msgid "Minimum interval between shares"
203
- msgstr "Intervalle minimum entre les partages"
204
-
205
- #: inc/config.php:208
206
- msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
207
- msgstr ""
208
- "Délai minimum entre les partages (heure/heures), 0,4 peut également être "
209
- "utilisé."
210
-
211
- #: inc/config.php:214
212
- msgid "Minimum age of post to be eligible for sharing"
213
- msgstr "Ancienneté minimum du message pour pouvoir être partagé"
214
-
215
- #: inc/config.php:218 inc/config.php:228
216
- msgid "Day/Days - 0 for Disabled"
217
- msgstr "J/Jours - 0 pour handicapés"
218
-
219
- #: inc/config.php:224
220
- msgid "Maximum age of post to be eligible for sharing"
221
- msgstr "Ancienneté maximum du message pour être partagé"
222
-
223
- #: inc/config.php:234
224
- msgid "Number of Posts to share"
225
- msgstr "Nombre de messages à partager"
226
-
227
- #: inc/config.php:238
228
- msgid "Number of posts to share each time"
229
- msgstr "Nombre de messages à partager à chaque fois"
230
-
231
- #: inc/config.php:244
232
- msgid "Post Type"
233
- msgstr "Type de message"
234
-
235
- #: inc/config.php:248
236
- msgid "What type of items do you want to share?"
237
- msgstr "Quel type d'éléments voulez-vous partager ?"
238
-
239
- #: inc/config.php:250
240
- msgid "Post Only"
241
- msgstr "Message uniquement"
242
-
243
- #: inc/config.php:251
244
- msgid "Page Only"
245
- msgstr "Page uniquement"
246
-
247
- #: inc/config.php:252 inc/config.php:259
248
- msgid "Custom Post Type"
249
- msgstr "Type de message personnalisé"
250
-
251
- #: inc/config.php:253
252
- msgid "Post and Page"
253
- msgstr "Message et page"
254
-
255
- #: inc/config.php:263
256
- msgid "Select which custom post type"
257
- msgstr "Sélectionner le type de message personnalisé"
258
-
259
- #: inc/config.php:269
260
- msgid "Post with Image"
261
- msgstr "Message avec image"
262
-
263
- #: inc/config.php:273
264
- msgid "Check if you want to add the post featured image to the share"
265
- msgstr "Vérifiez si vous voulez ajouter l'image du message au partage"
266
-
267
- #: inc/config.php:279
268
- msgid "Share old posts more than once"
269
- msgstr "Partager d'anciens messages plus d'une fois"
270
-
271
- #: inc/config.php:283
272
- msgid ""
273
- "By default once a post is shared it will not be shared again until you stop/"
274
- "start the plugin"
275
- msgstr ""
276
- "Par défaut, une fois qu'un message est partagé, il ne sera plus partagé tant "
277
- "que vous n'aurez pas arrêté/démarré le plug-in"
278
-
279
- #: inc/config.php:289
280
- msgid "Google Analytics Campaign Tracking"
281
- msgstr "Suivi de campagne Google Analytics"
282
-
283
- #: inc/config.php:293
284
- msgid ""
285
- "Enabling Campaign Tracking you would be able to see how much traffic Revive "
286
- "Old Post generated."
287
- msgstr ""
288
- "En activant le Suivi de campagne, vous pouvez voir le trafic généré par "
289
- "Rétablir ancien message."
290
-
291
- #: inc/config.php:309
292
- msgid "Exclude Specific Categories"
293
- msgstr "Exclure des catégories spécifiques"
294
-
295
- #: inc/config.php:313
296
- msgid ""
297
- "Select which categories do you want to exclude to share from? Blank - None"
298
- msgstr ""
299
- "Sélectionnez les catégories que vous souhaitez exclure du partage : Vide - "
300
- "Aucun"
301
-
302
- #: inc/core.php:81
303
- msgid "Tweet Old Post is already active!"
304
- msgstr "Ancien tweet déjà actif !"
305
-
306
- #: inc/core.php:101
307
- msgid "Tweet Old Post is already inactive!"
308
- msgstr "Ancien tweet déjà inactif !"
309
-
310
- #: inc/core.php:871
311
- msgid "Custom Tweet User Interval"
312
- msgstr "Intervalle utilisateur du tweet personnalisé"
313
-
314
- #: inc/core.php:1187
315
- msgid "Could not connect to Twitter!"
316
- msgstr "Impossible de se connecter à Twitter !"
317
-
318
- #: inc/core.php:1349
319
- msgid ""
320
- " We just fixed the interrupted posting issue and scheduling issue, if you "
321
- "don't see any tweets you need to re-authentificate your twitter accounts. | "
322
- "<a href=\""
323
- msgstr ""
324
- " Nous venons de corriger le problème de publication et de programmation. Si "
325
- "vous ne voyez aucun tweet, vous devez authentifier à nouveau vos comptes "
326
- "Twitter. | <a href=\""
327
-
328
- #: inc/core.php:1441
329
- msgid "This is only available in the"
330
- msgstr "Ceci est uniquement disponible dans la"
331
-
332
- #: inc/core.php:1441
333
- msgid "PRO version"
334
- msgstr "Version PRO"
335
-
336
- #: inc/core.php:1679
337
- msgid "Exclude Posts"
338
- msgstr "Exclure messages"
339
-
340
- #: inc/core.php:1679
341
- msgid "ExcludePosts"
342
- msgstr "ExcludePosts"
343
-
344
- #: inc/exclude-posts.php:24
345
- msgid "Tweet Old Post Options Updated."
346
- msgstr "Options des anciens tweets mises à jour."
347
-
348
- #: inc/exclude-posts.php:63
349
- msgid "No post selected please select a post to be excluded."
350
- msgstr "Aucun message sélectionné. Veuillez sélectionner un message à exclure."
351
-
352
- #: inc/exclude-posts.php:70
353
- msgid "Posts excluded successfully."
354
- msgstr "Messages exclus avec succès."
355
-
356
- #: inc/exclude-posts.php:155
357
- msgid "Selected Categories"
358
- msgstr "Catégories sélectionnées"
359
-
360
- #: inc/exclude-posts.php:157
361
- msgid "Filter"
362
- msgstr "Filtrer"
363
-
364
- #: inc/exclude-posts.php:168
365
- msgid "&laquo;"
366
- msgstr "&laquo;"
367
-
368
- #: inc/exclude-posts.php:169
369
- msgid "&raquo;"
370
- msgstr "&raquo;"
371
-
372
- #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
373
- #, php-format
374
- msgid "Displaying %s&#8211;%s of %s"
375
- msgstr "Affichez %s&#8211;%s de %s"
376
-
377
- #: inc/exclude-posts.php:356
378
- msgid "No Posts found. Review your search or filter criteria/term."
379
- msgstr ""
380
- "Aucun message trouvé. Passez en revue votre recherche ou les critères/termes "
381
- "de recherche."
382
-
383
- #: inc/exclude-posts.php:363
384
- msgid ""
385
- "You do not have enough permission to set the option. Please contact your "
386
- "admin."
387
- msgstr ""
388
- "Vous n'avez pas suffisamment de droits pour définir cette option. Veuillez "
389
- "contacter votre administrateur."
390
-
391
- #: inc/view-exclude.php:4 inc/view.php:3
392
- msgid "After 6 months of hard work, we have just released"
393
- msgstr "Après 6 mois de travail acharné, nous venons de publier"
394
-
395
- #: inc/view-exclude.php:4 inc/view.php:3
396
- msgid "the island of WordPress themes."
397
- msgstr "l'île de thèmes WordPress."
398
-
399
- #: inc/view-exclude.php:5 inc/view.php:4
400
- msgid "Show Me"
401
- msgstr "Montrez-moi"
402
-
403
- #: inc/view-exclude.php:11 inc/view.php:10
404
- msgid "Revive Old Post PRO"
405
- msgstr "Rétablir ancien message PRO"
406
-
407
- #: inc/view-exclude.php:15 inc/view.php:14
408
- msgid "by"
409
- msgstr "par"
410
-
411
- #: inc/view-exclude.php:18 inc/view.php:17
412
- msgid "Show your love"
413
- msgstr "Montrez votre amour"
414
-
415
- #: inc/view-exclude.php:19 inc/view.php:18
416
- msgid "Leave A Review"
417
- msgstr "Laisser un avis"
418
-
419
- #: inc/view-exclude.php:30
420
- msgid "Revive Old Post is set to share on a"
421
- msgstr "Rétablir ancien message est configuré pour partager sur une"
422
-
423
- #: inc/view-exclude.php:32 inc/view.php:31
424
- msgid "hours interval, "
425
- msgstr "intervalle d'heures, "
426
-
427
- #: inc/view-exclude.php:33 inc/view.php:32
428
- msgid "and the next share will take place in: "
429
- msgstr "et le prochain partage aura lieu à : "
430
-
431
- #: inc/view-exclude.php:38
432
- msgid "Revive Old Post is not set to share!"
433
- msgstr "Rétablir ancien message n'est pas configuré pour partager !"
434
-
435
- #: inc/view-exclude.php:42
436
- msgid ""
437
- "You have selected following POST IDs to be excluded from tweeting: <span "
438
- "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
439
- "Note: If you have made any change and dint hit 'Exclude Selected' button "
440
- "changes will not be saved. "
441
- msgstr ""
442
- "Vous avez sélectionné les ID MESSAGE suivants pour être exclus de Twitter : "
443
- "<span id='excludeList' style='font-weight:bold;font-style:italic;'> </ "
444
- "span>. \n"
445
- " Remarque : Si vous avez apporté des modifications et appuyé sur le bouton "
446
- "'Exclus sélectionnés' , les modifications ne seront pas enregistrées. "
447
-
448
- #: inc/view.php:29
449
- msgid "Revive Old Post is set to post on a"
450
- msgstr "Rétablir ancien message est configuré pour publier sur un "
451
-
452
- #: inc/view.php:37
453
- msgid "Revive Old Post is not set to post!"
454
- msgstr "Rétablir ancien message n'est pas configuré pour publier !"
455
-
456
- #: inc/view.php:42
457
- msgid ""
458
- "Once you click start sharing a post will be sent in 15 sec, also here you "
459
- "can see the error message if is any."
460
- msgstr ""
461
- "Une fois que vous cliquez sur Démarrer le partage, un message sera envoyé "
462
- "dans les 15 secondes. Vous pouvez également voir ici le message d'erreur, le "
463
- "cas échéant."
464
-
465
- #: inc/view.php:52
466
- msgid "Twitter Login"
467
- msgstr "Connexion à Twitter"
468
-
469
- #: inc/view.php:53
470
- msgid "Login using your Twitter account."
471
- msgstr "Connectez-vous en utilisant votre compte Twitter."
472
-
473
- #: inc/view.php:77 inc/view.php:111
474
- msgid "Add Account"
475
- msgstr "Ajouter un compte"
476
-
477
- #: inc/view.php:84
478
- msgid "Facebook Login"
479
- msgstr "Connexion à Facebook"
480
-
481
- #: inc/view.php:85
482
- msgid "Login using your Facebook account."
483
- msgstr "Connectez-vous en utilisant votre compte Facebook."
484
-
485
- #: inc/view.php:109
486
- msgid "Authorize"
487
- msgstr "Autoriser"
488
-
489
- #: inc/view.php:118
490
- msgid "Linkedin Login"
491
- msgstr "Connexion à Linkedin "
492
-
493
- #: inc/view.php:119
494
- msgid "Login using your Linkedin account."
495
- msgstr "Connectez-vous en utilisant votre compte Linkedin."
496
-
497
- #: inc/view.php:141
498
- msgid "Add account"
499
- msgstr "Ajouter le compte"
500
-
501
- #: inc/view.php:154
502
- msgid "Select All"
503
- msgstr "Tout sélectionner"
504
-
505
- #: inc/view.php:165
506
- msgid "Reset"
507
- msgstr "Réinitialiser"
508
-
509
- #: inc/view.php:166
510
- msgid "Save"
511
- msgstr "Enregistrer"
512
-
513
- #: inc/view.php:167
514
- msgid "Start Sharing"
515
- msgstr "Démarrer le partage"
516
-
517
- #: inc/view.php:168
518
- msgid "Stop Sharing"
519
- msgstr "Arrêter le partage"
520
-
521
- #: inc/view.php:169
522
- msgid "See Sample Post"
523
- msgstr "Voir l'exemple de message"
524
-
525
- #: inc/view.php:171
526
- msgid ""
527
- "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
528
- msgstr ""
529
- "Nous ne sommes en aucun cas affiliés ou en partenariat avec Twitter/Facebook/"
530
- "Linkedin."
531
-
532
- #: inc/view.php:176
533
- msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
534
- msgstr ""
535
- "Passez à la version supérieur de Tweet Old Post pour seulement 9,99 $ - "
536
- "Passez à la version PRO maintenant !"
537
-
538
- #: inc/view.php:177
539
- msgid "ThemeIsle - Deadly Simple WordPress Themes"
540
- msgstr "ThemeIsle - thèmes WordPress ultra simples"
541
-
542
- #: inc/view.php:178
543
- msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
544
- msgstr ""
545
- "ThemeIsle - Faites la promotion de nos thèmes et plugins et obtenez une "
546
- "commission de  55 %"
547
-
548
- #. Description of the plugin/theme
549
- msgid ""
550
- "Wordpress plugin that helps you to keeps your old posts alive by sharing "
551
- "them and driving more traffic to them from twitter/facebook or linkedin. It "
552
- "also helps you to promote your content. You can set time and no of posts to "
553
- "share to drive more traffic.For questions, comments, or feature requests, <a "
554
- "href=\"http://themeisle.com/contact/?"
555
- "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
556
- msgstr ""
557
- "Plugin wordpress qui vous permet de conserver vos anciens messages en les "
558
- "partageant et en générant plus de trafic vers à partir de twitter/facebook "
559
- "ou linkedin. Il permet  également de promouvoir votre contenu. Vous pouvez "
560
- "régler l'heure et le nombre de messages à partager pour générer davantage de "
561
- "trafic. Si vous avez des questions, des commentaires ou des demandes sur "
562
- "les fonctionnalités, <a href=\"http://themeisle.com/contact/?"
563
- "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contactez- </ "
564
- "A> nous!"
1
+ # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
+ # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
+ "POT-Creation-Date: 2014-07-12 23:21+0100\n"
8
+ "PO-Revision-Date: 2014-07-18 00:30+0100\n"
9
+ "Last-Translator: Ionut <friends@themeisle.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
+ "X-Generator: Poedit 1.5.5\n"
15
+ "X-Poedit-KeywordsList: _;__;_e\n"
16
+ "X-Poedit-Basepath: ../\n"
17
+ "X-Poedit-SearchPath-0: .\n"
18
+ "X-Poedit-SearchPath-1: inc\n"
19
+
20
+ #: inc/class-remote-notification-client.php:260
21
+ msgid "Dismiss notification"
22
+ msgstr "Rejeter la notification"
23
+
24
+ #: inc/class-remote-notification-client.php:262
25
+ msgid "Dismiss"
26
+ msgstr "Rejeter"
27
+
28
+ #: inc/config.php:24
29
+ msgid "Post Content"
30
+ msgstr "Envoyer le contenu"
31
+
32
+ #: inc/config.php:28
33
+ msgid "What do you want to share?"
34
+ msgstr "Que voulez-vous partager ?"
35
+
36
+ #: inc/config.php:30
37
+ msgid "Title Only"
38
+ msgstr "Seulement le titre"
39
+
40
+ #: inc/config.php:31
41
+ msgid "Body Only"
42
+ msgstr "Seulement le corps"
43
+
44
+ #: inc/config.php:32
45
+ msgid "Title & Body"
46
+ msgstr "Titre et corps"
47
+
48
+ #: inc/config.php:33
49
+ msgid "Custom Field"
50
+ msgstr "Champ personnalisé"
51
+
52
+ #: inc/config.php:39
53
+ msgid "Post Content Custom Field"
54
+ msgstr "Envoyer le champ personnalisé du contenu"
55
+
56
+ #: inc/config.php:43
57
+ msgid "Which custom field do you want to fetch info from?"
58
+ msgstr "De quel champ personnalisé voulez-vous récupérer des informations ?"
59
+
60
+ #: inc/config.php:49
61
+ msgid "Additional Text"
62
+ msgstr "Texte supplémentaire"
63
+
64
+ #: inc/config.php:53
65
+ msgid "Text added to your auto posts"
66
+ msgstr "Texte ajouté à vos messages automatiques"
67
+
68
+ #: inc/config.php:59
69
+ msgid "Additional Text At"
70
+ msgstr "Texte supplémentaire"
71
+
72
+ #: inc/config.php:63
73
+ msgid "Where do you want the text to be added?"
74
+ msgstr "Où voulez-vous ajouter le texte ?"
75
+
76
+ #: inc/config.php:65
77
+ msgid "Beginning of Post"
78
+ msgstr "Début du message"
79
+
80
+ #: inc/config.php:66
81
+ msgid "End of Post"
82
+ msgstr "Fin du message"
83
+
84
+ #: inc/config.php:72
85
+ msgid "Include Link"
86
+ msgstr "Inclure lien"
87
+
88
+ #: inc/config.php:76
89
+ msgid "Include a link to your post?"
90
+ msgstr "Inclure un lien vers votre message ?"
91
+
92
+ #: inc/config.php:78
93
+ msgid "Yes"
94
+ msgstr "Oui"
95
+
96
+ #: inc/config.php:79
97
+ msgid "No"
98
+ msgstr "Non"
99
+
100
+ #: inc/config.php:85
101
+ msgid "Fetch URL From Custom Field"
102
+ msgstr "Récupérer l'URL du champ personnalisé"
103
+
104
+ #: inc/config.php:89
105
+ msgid "URL will be fetched from a custom field."
106
+ msgstr "L'URL sera récupéré à partir d'un champ personnalisé."
107
+
108
+ #: inc/config.php:95
109
+ msgid "URL Custom Field"
110
+ msgstr "Champ personnalisé de l'URL"
111
+
112
+ #: inc/config.php:99
113
+ msgid "URL will be fetched from the specified custom field."
114
+ msgstr "L'URL sera extraite du champ personnalisé spécifié."
115
+
116
+ #: inc/config.php:105
117
+ msgid "Use URL Shortner"
118
+ msgstr "Utiliser URL de Shortner"
119
+
120
+ #: inc/config.php:117
121
+ msgid "URL Shortner Service"
122
+ msgstr "URL du service Shortner"
123
+
124
+ #: inc/config.php:121
125
+ msgid "Shorten the link to your post."
126
+ msgstr "Raccourcir le lien vers votre message."
127
+
128
+ #: inc/config.php:123
129
+ msgid "wp short url"
130
+ msgstr "url courte wp"
131
+
132
+ #: inc/config.php:125
133
+ msgid "is.gd"
134
+ msgstr "is.gd"
135
+
136
+ #: inc/config.php:126
137
+ msgid "bit.ly"
138
+ msgstr "bit.ly"
139
+
140
+ #: inc/config.php:138
141
+ msgid "Bitly Key"
142
+ msgstr "Clé Bitly"
143
+
144
+ #: inc/config.php:148
145
+ msgid "Bitly User"
146
+ msgstr "Utilisateur Bitly"
147
+
148
+ #: inc/config.php:158
149
+ msgid "Hashtags"
150
+ msgstr "Hashtags"
151
+
152
+ #: inc/config.php:162
153
+ msgid "Include #hashtags in your auto posts?"
154
+ msgstr "Inclure # hashtags dans vos messages d'automatiques ?"
155
+
156
+ #: inc/config.php:164
157
+ msgid "Don't add any hashtags"
158
+ msgstr "Ne pas ajouter de hashtags"
159
+
160
+ #: inc/config.php:165
161
+ msgid "Common hashtags for all shares"
162
+ msgstr "Hashtags communs pour tous les partages"
163
+
164
+ #: inc/config.php:166
165
+ msgid "Create hashtags from Categories"
166
+ msgstr "Créer hashtags à partir de Catégories"
167
+
168
+ #: inc/config.php:167
169
+ msgid "Create hashtags from Tags"
170
+ msgstr "Créer hashtags à partir de Onglets"
171
+
172
+ #: inc/config.php:168
173
+ msgid "Create hashtags from Custom Fields"
174
+ msgstr "Créer hashtags à  partir de Champs personnalisés"
175
+
176
+ #: inc/config.php:174
177
+ msgid "Common Hashtags"
178
+ msgstr "Hashtags communs"
179
+
180
+ #: inc/config.php:178
181
+ msgid "Specify which hashtags you want to be used. eg. #example, #example2"
182
+ msgstr ""
183
+ "Spécifier les hashtags que vous voulez utiliser. Ex :  # exemple, # exemple2"
184
+
185
+ #: inc/config.php:184
186
+ msgid "Maximum Hashtags Length"
187
+ msgstr "Longueur maximale des hashtags"
188
+
189
+ #: inc/config.php:188
190
+ msgid "Set to 0 (characters) to include all."
191
+ msgstr "Fixé à 0 (caractères) pour tous les inclure."
192
+
193
+ #: inc/config.php:194
194
+ msgid "Hashtag Custom Field"
195
+ msgstr " Champ personnalisé de Hashtag"
196
+
197
+ #: inc/config.php:198
198
+ msgid "Fetch hashtags from specified custom field"
199
+ msgstr "Récupérer les hashtags à partir du champ personnalisé spécifié"
200
+
201
+ #: inc/config.php:204
202
+ msgid "Minimum interval between shares"
203
+ msgstr "Intervalle minimum entre les partages"
204
+
205
+ #: inc/config.php:208
206
+ msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
207
+ msgstr ""
208
+ "Délai minimum entre les partages (heure/heures), 0,4 peut également être "
209
+ "utilisé."
210
+
211
+ #: inc/config.php:214
212
+ msgid "Minimum age of post to be eligible for sharing"
213
+ msgstr "Ancienneté minimum du message pour pouvoir être partagé"
214
+
215
+ #: inc/config.php:218 inc/config.php:228
216
+ msgid "Day/Days - 0 for Disabled"
217
+ msgstr "J/Jours - 0 pour handicapés"
218
+
219
+ #: inc/config.php:224
220
+ msgid "Maximum age of post to be eligible for sharing"
221
+ msgstr "Ancienneté maximum du message pour être partagé"
222
+
223
+ #: inc/config.php:234
224
+ msgid "Number of Posts to share"
225
+ msgstr "Nombre de messages à partager"
226
+
227
+ #: inc/config.php:238
228
+ msgid "Number of posts to share each time"
229
+ msgstr "Nombre de messages à partager à chaque fois"
230
+
231
+ #: inc/config.php:244
232
+ msgid "Post Type"
233
+ msgstr "Type de message"
234
+
235
+ #: inc/config.php:248
236
+ msgid "What type of items do you want to share?"
237
+ msgstr "Quel type d'éléments voulez-vous partager ?"
238
+
239
+ #: inc/config.php:250
240
+ msgid "Post Only"
241
+ msgstr "Message uniquement"
242
+
243
+ #: inc/config.php:251
244
+ msgid "Page Only"
245
+ msgstr "Page uniquement"
246
+
247
+ #: inc/config.php:252 inc/config.php:259
248
+ msgid "Custom Post Type"
249
+ msgstr "Type de message personnalisé"
250
+
251
+ #: inc/config.php:253
252
+ msgid "Post and Page"
253
+ msgstr "Message et page"
254
+
255
+ #: inc/config.php:263
256
+ msgid "Select which custom post type"
257
+ msgstr "Sélectionner le type de message personnalisé"
258
+
259
+ #: inc/config.php:269
260
+ msgid "Post with Image"
261
+ msgstr "Message avec image"
262
+
263
+ #: inc/config.php:273
264
+ msgid "Check if you want to add the post featured image to the share"
265
+ msgstr "Vérifiez si vous voulez ajouter l'image du message au partage"
266
+
267
+ #: inc/config.php:279
268
+ msgid "Share old posts more than once"
269
+ msgstr "Partager d'anciens messages plus d'une fois"
270
+
271
+ #: inc/config.php:283
272
+ msgid ""
273
+ "By default once a post is shared it will not be shared again until you stop/"
274
+ "start the plugin"
275
+ msgstr ""
276
+ "Par défaut, une fois qu'un message est partagé, il ne sera plus partagé tant "
277
+ "que vous n'aurez pas arrêté/démarré le plug-in"
278
+
279
+ #: inc/config.php:289
280
+ msgid "Google Analytics Campaign Tracking"
281
+ msgstr "Suivi de campagne Google Analytics"
282
+
283
+ #: inc/config.php:293
284
+ msgid ""
285
+ "Enabling Campaign Tracking you would be able to see how much traffic Revive "
286
+ "Old Post generated."
287
+ msgstr ""
288
+ "En activant le Suivi de campagne, vous pouvez voir le trafic généré par "
289
+ "Rétablir ancien message."
290
+
291
+ #: inc/config.php:309
292
+ msgid "Exclude Specific Categories"
293
+ msgstr "Exclure des catégories spécifiques"
294
+
295
+ #: inc/config.php:313
296
+ msgid ""
297
+ "Select which categories do you want to exclude to share from? Blank - None"
298
+ msgstr ""
299
+ "Sélectionnez les catégories que vous souhaitez exclure du partage : Vide - "
300
+ "Aucun"
301
+
302
+ #: inc/core.php:81
303
+ msgid "Tweet Old Post is already active!"
304
+ msgstr "Ancien tweet déjà actif !"
305
+
306
+ #: inc/core.php:101
307
+ msgid "Tweet Old Post is already inactive!"
308
+ msgstr "Ancien tweet déjà inactif !"
309
+
310
+ #: inc/core.php:871
311
+ msgid "Custom Tweet User Interval"
312
+ msgstr "Intervalle utilisateur du tweet personnalisé"
313
+
314
+ #: inc/core.php:1187
315
+ msgid "Could not connect to Twitter!"
316
+ msgstr "Impossible de se connecter à Twitter !"
317
+
318
+ #: inc/core.php:1349
319
+ msgid ""
320
+ " We just fixed the interrupted posting issue and scheduling issue, if you "
321
+ "don't see any tweets you need to re-authentificate your twitter accounts. | "
322
+ "<a href=\""
323
+ msgstr ""
324
+ " Nous venons de corriger le problème de publication et de programmation. Si "
325
+ "vous ne voyez aucun tweet, vous devez authentifier à nouveau vos comptes "
326
+ "Twitter. | <a href=\""
327
+
328
+ #: inc/core.php:1441
329
+ msgid "This is only available in the"
330
+ msgstr "Ceci est uniquement disponible dans la"
331
+
332
+ #: inc/core.php:1441
333
+ msgid "PRO version"
334
+ msgstr "Version PRO"
335
+
336
+ #: inc/core.php:1679
337
+ msgid "Exclude Posts"
338
+ msgstr "Exclure messages"
339
+
340
+ #: inc/core.php:1679
341
+ msgid "ExcludePosts"
342
+ msgstr "ExcludePosts"
343
+
344
+ #: inc/exclude-posts.php:24
345
+ msgid "Tweet Old Post Options Updated."
346
+ msgstr "Options des anciens tweets mises à jour."
347
+
348
+ #: inc/exclude-posts.php:63
349
+ msgid "No post selected please select a post to be excluded."
350
+ msgstr "Aucun message sélectionné. Veuillez sélectionner un message à exclure."
351
+
352
+ #: inc/exclude-posts.php:70
353
+ msgid "Posts excluded successfully."
354
+ msgstr "Messages exclus avec succès."
355
+
356
+ #: inc/exclude-posts.php:155
357
+ msgid "Selected Categories"
358
+ msgstr "Catégories sélectionnées"
359
+
360
+ #: inc/exclude-posts.php:157
361
+ msgid "Filter"
362
+ msgstr "Filtrer"
363
+
364
+ #: inc/exclude-posts.php:168
365
+ msgid "&laquo;"
366
+ msgstr "&laquo;"
367
+
368
+ #: inc/exclude-posts.php:169
369
+ msgid "&raquo;"
370
+ msgstr "&raquo;"
371
+
372
+ #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
373
+ #, php-format
374
+ msgid "Displaying %s&#8211;%s of %s"
375
+ msgstr "Affichez %s&#8211;%s de %s"
376
+
377
+ #: inc/exclude-posts.php:356
378
+ msgid "No Posts found. Review your search or filter criteria/term."
379
+ msgstr ""
380
+ "Aucun message trouvé. Passez en revue votre recherche ou les critères/termes "
381
+ "de recherche."
382
+
383
+ #: inc/exclude-posts.php:363
384
+ msgid ""
385
+ "You do not have enough permission to set the option. Please contact your "
386
+ "admin."
387
+ msgstr ""
388
+ "Vous n'avez pas suffisamment de droits pour définir cette option. Veuillez "
389
+ "contacter votre administrateur."
390
+
391
+ #: inc/view-exclude.php:4 inc/view.php:3
392
+ msgid "After 6 months of hard work, we have just released"
393
+ msgstr "Après 6 mois de travail acharné, nous venons de publier"
394
+
395
+ #: inc/view-exclude.php:4 inc/view.php:3
396
+ msgid "the island of WordPress themes."
397
+ msgstr "l'île de thèmes WordPress."
398
+
399
+ #: inc/view-exclude.php:5 inc/view.php:4
400
+ msgid "Show Me"
401
+ msgstr "Montrez-moi"
402
+
403
+ #: inc/view-exclude.php:11 inc/view.php:10
404
+ msgid "Revive Old Post PRO"
405
+ msgstr "Rétablir ancien message PRO"
406
+
407
+ #: inc/view-exclude.php:15 inc/view.php:14
408
+ msgid "by"
409
+ msgstr "par"
410
+
411
+ #: inc/view-exclude.php:18 inc/view.php:17
412
+ msgid "Show your love"
413
+ msgstr "Montrez votre amour"
414
+
415
+ #: inc/view-exclude.php:19 inc/view.php:18
416
+ msgid "Leave A Review"
417
+ msgstr "Laisser un avis"
418
+
419
+ #: inc/view-exclude.php:30
420
+ msgid "Revive Old Post is set to share on a"
421
+ msgstr "Rétablir ancien message est configuré pour partager sur une"
422
+
423
+ #: inc/view-exclude.php:32 inc/view.php:31
424
+ msgid "hours interval, "
425
+ msgstr "intervalle d'heures, "
426
+
427
+ #: inc/view-exclude.php:33 inc/view.php:32
428
+ msgid "and the next share will take place in: "
429
+ msgstr "et le prochain partage aura lieu à : "
430
+
431
+ #: inc/view-exclude.php:38
432
+ msgid "Revive Old Post is not set to share!"
433
+ msgstr "Rétablir ancien message n'est pas configuré pour partager !"
434
+
435
+ #: inc/view-exclude.php:42
436
+ msgid ""
437
+ "You have selected following POST IDs to be excluded from tweeting: <span "
438
+ "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
439
+ "Note: If you have made any change and dint hit 'Exclude Selected' button "
440
+ "changes will not be saved. "
441
+ msgstr ""
442
+ "Vous avez sélectionné les ID MESSAGE suivants pour être exclus de Twitter : "
443
+ "<span id='excludeList' style='font-weight:bold;font-style:italic;'> </ "
444
+ "span>. \n"
445
+ " Remarque : Si vous avez apporté des modifications et appuyé sur le bouton "
446
+ "'Exclus sélectionnés' , les modifications ne seront pas enregistrées. "
447
+
448
+ #: inc/view.php:29
449
+ msgid "Revive Old Post is set to post on a"
450
+ msgstr "Rétablir ancien message est configuré pour publier sur un "
451
+
452
+ #: inc/view.php:37
453
+ msgid "Revive Old Post is not set to post!"
454
+ msgstr "Rétablir ancien message n'est pas configuré pour publier !"
455
+
456
+ #: inc/view.php:42
457
+ msgid ""
458
+ "Once you click start sharing a post will be sent in 15 sec, also here you "
459
+ "can see the error message if is any."
460
+ msgstr ""
461
+ "Une fois que vous cliquez sur Démarrer le partage, un message sera envoyé "
462
+ "dans les 15 secondes. Vous pouvez également voir ici le message d'erreur, le "
463
+ "cas échéant."
464
+
465
+ #: inc/view.php:52
466
+ msgid "Twitter Login"
467
+ msgstr "Connexion à Twitter"
468
+
469
+ #: inc/view.php:53
470
+ msgid "Login using your Twitter account."
471
+ msgstr "Connectez-vous en utilisant votre compte Twitter."
472
+
473
+ #: inc/view.php:77 inc/view.php:111
474
+ msgid "Add Account"
475
+ msgstr "Ajouter un compte"
476
+
477
+ #: inc/view.php:84
478
+ msgid "Facebook Login"
479
+ msgstr "Connexion à Facebook"
480
+
481
+ #: inc/view.php:85
482
+ msgid "Login using your Facebook account."
483
+ msgstr "Connectez-vous en utilisant votre compte Facebook."
484
+
485
+ #: inc/view.php:109
486
+ msgid "Authorize"
487
+ msgstr "Autoriser"
488
+
489
+ #: inc/view.php:118
490
+ msgid "Linkedin Login"
491
+ msgstr "Connexion à Linkedin "
492
+
493
+ #: inc/view.php:119
494
+ msgid "Login using your Linkedin account."
495
+ msgstr "Connectez-vous en utilisant votre compte Linkedin."
496
+
497
+ #: inc/view.php:141
498
+ msgid "Add account"
499
+ msgstr "Ajouter le compte"
500
+
501
+ #: inc/view.php:154
502
+ msgid "Select All"
503
+ msgstr "Tout sélectionner"
504
+
505
+ #: inc/view.php:165
506
+ msgid "Reset"
507
+ msgstr "Réinitialiser"
508
+
509
+ #: inc/view.php:166
510
+ msgid "Save"
511
+ msgstr "Enregistrer"
512
+
513
+ #: inc/view.php:167
514
+ msgid "Start Sharing"
515
+ msgstr "Démarrer le partage"
516
+
517
+ #: inc/view.php:168
518
+ msgid "Stop Sharing"
519
+ msgstr "Arrêter le partage"
520
+
521
+ #: inc/view.php:169
522
+ msgid "See Sample Post"
523
+ msgstr "Voir l'exemple de message"
524
+
525
+ #: inc/view.php:171
526
+ msgid ""
527
+ "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
528
+ msgstr ""
529
+ "Nous ne sommes en aucun cas affiliés ou en partenariat avec Twitter/Facebook/"
530
+ "Linkedin."
531
+
532
+ #: inc/view.php:176
533
+ msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
534
+ msgstr ""
535
+ "Passez à la version supérieur de Tweet Old Post pour seulement 9,99 $ - "
536
+ "Passez à la version PRO maintenant !"
537
+
538
+ #: inc/view.php:177
539
+ msgid "ThemeIsle - Deadly Simple WordPress Themes"
540
+ msgstr "ThemeIsle - thèmes WordPress ultra simples"
541
+
542
+ #: inc/view.php:178
543
+ msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
544
+ msgstr ""
545
+ "ThemeIsle - Faites la promotion de nos thèmes et plugins et obtenez une "
546
+ "commission de  55 %"
547
+
548
+ #. Description of the plugin/theme
549
+ msgid ""
550
+ "Wordpress plugin that helps you to keeps your old posts alive by sharing "
551
+ "them and driving more traffic to them from twitter/facebook or linkedin. It "
552
+ "also helps you to promote your content. You can set time and no of posts to "
553
+ "share to drive more traffic.For questions, comments, or feature requests, <a "
554
+ "href=\"http://themeisle.com/contact/?"
555
+ "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
556
+ msgstr ""
557
+ "Plugin wordpress qui vous permet de conserver vos anciens messages en les "
558
+ "partageant et en générant plus de trafic vers à partir de twitter/facebook "
559
+ "ou linkedin. Il permet  également de promouvoir votre contenu. Vous pouvez "
560
+ "régler l'heure et le nombre de messages à partager pour générer davantage de "
561
+ "trafic. Si vous avez des questions, des commentaires ou des demandes sur "
562
+ "les fonctionnalités, <a href=\"http://themeisle.com/contact/?"
563
+ "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contactez- </ "
564
+ "A> nous!"
languages/tweet-old-post-pt_BR.po CHANGED
@@ -1,686 +1,686 @@
1
- # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
- # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
- "POT-Creation-Date: 2014-07-16 00:01+0100\n"
8
- "PO-Revision-Date: 2014-07-16 00:07+0100\n"
9
- "Last-Translator: Ionut <friends@themeisle.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
- "X-Generator: Poedit 1.5.7\n"
15
- "X-Poedit-KeywordsList: _;__;_e\n"
16
- "X-Poedit-Basepath: ../\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
- "X-Poedit-SearchPath-1: inc\n"
19
-
20
- #: inc/class-remote-notification-client.php:260
21
- msgid "Dismiss notification"
22
- msgstr "Dispensar notificação"
23
-
24
- #: inc/class-remote-notification-client.php:262
25
- msgid "Dismiss"
26
- msgstr "Dispensar"
27
-
28
- #: inc/config.php:24
29
- msgid "Post Content"
30
- msgstr "Conteúdo da Publicação"
31
-
32
- #: inc/config.php:28
33
- msgid "What do you want to share?"
34
- msgstr "O que você gostaria de compartilhar?"
35
-
36
- #: inc/config.php:30
37
- msgid "Title Only"
38
- msgstr "Apenas Título"
39
-
40
- #: inc/config.php:31
41
- msgid "Body Only"
42
- msgstr "Apenas Mensagem"
43
-
44
- #: inc/config.php:32
45
- msgid "Title & Body"
46
- msgstr "Título e Mensagem"
47
-
48
- #: inc/config.php:33
49
- msgid "Custom Field"
50
- msgstr "Campo Personalizado"
51
-
52
- #: inc/config.php:39
53
- msgid "Post Content Custom Field"
54
- msgstr "Campo Personalizado do Conteúdo da Publicação"
55
-
56
- #: inc/config.php:43
57
- msgid "Which custom field do you want to fetch info from?"
58
- msgstr "Você deseja extrair informações de qual campo personalizado?"
59
-
60
- #: inc/config.php:49
61
- msgid "Additional Text"
62
- msgstr "Texto Adicional"
63
-
64
- #: inc/config.php:53
65
- msgid "Text added to your auto posts"
66
- msgstr "Texto adicionado às suas publicações automáticas"
67
-
68
- #: inc/config.php:59
69
- msgid "Additional Text At"
70
- msgstr "Texto Adicional em"
71
-
72
- #: inc/config.php:63
73
- msgid "Where do you want the text to be added?"
74
- msgstr "Onde você deseja que o texto seja adicionado?"
75
-
76
- #: inc/config.php:65
77
- msgid "Beginning of Post"
78
- msgstr "Início da Publicação"
79
-
80
- #: inc/config.php:66
81
- msgid "End of Post"
82
- msgstr "Fim da Publicação"
83
-
84
- #: inc/config.php:72
85
- msgid "Include Link"
86
- msgstr "Incluir Link"
87
-
88
- #: inc/config.php:76
89
- msgid "Include a link to your post?"
90
- msgstr "Incluir um link para sua publicação?"
91
-
92
- #: inc/config.php:78
93
- msgid "Yes"
94
- msgstr "Sim"
95
-
96
- #: inc/config.php:79
97
- msgid "No"
98
- msgstr "Não"
99
-
100
- #: inc/config.php:85
101
- msgid "Fetch URL From Custom Field"
102
- msgstr "Extrair URL de Campo Personalizado"
103
-
104
- #: inc/config.php:89
105
- msgid "URL will be fetched from a custom field."
106
- msgstr "A URL será extraída de um campo personalizado."
107
-
108
- #: inc/config.php:95
109
- msgid "URL Custom Field"
110
- msgstr "Campo Personalizado da URL"
111
-
112
- #: inc/config.php:99
113
- msgid "URL will be fetched from the specified custom field."
114
- msgstr "A URL será extraída do campo personalizado especificado."
115
-
116
- #: inc/config.php:105
117
- msgid "Use URL Shortner"
118
- msgstr "Usar Encurtador de URL"
119
-
120
- #: inc/config.php:117
121
- msgid "URL Shortner Service"
122
- msgstr "Serviço de Encurtador de URL"
123
-
124
- #: inc/config.php:121
125
- msgid "Shorten the link to your post."
126
- msgstr "Encurte o link para sua publicação."
127
-
128
- #: inc/config.php:123
129
- msgid "wp short url"
130
- msgstr "url curta wp"
131
-
132
- #: inc/config.php:125
133
- msgid "is.gd"
134
- msgstr "is.gd"
135
-
136
- #: inc/config.php:126
137
- msgid "bit.ly"
138
- msgstr "bit.ly"
139
-
140
- #: inc/config.php:138
141
- msgid "Bitly Key"
142
- msgstr "Chave do Bitly"
143
-
144
- #: inc/config.php:148
145
- msgid "Bitly User"
146
- msgstr "Usuário do Bitly"
147
-
148
- #: inc/config.php:158
149
- msgid "Hashtags"
150
- msgstr "Hashtags"
151
-
152
- #: inc/config.php:162
153
- msgid "Include #hashtags in your auto posts?"
154
- msgstr "Incluir #hashtags em suas publicações automáticas?"
155
-
156
- #: inc/config.php:164
157
- msgid "Don't add any hashtags"
158
- msgstr "Não adicione nenhuma hashtag"
159
-
160
- #: inc/config.php:165
161
- msgid "Common hashtags for all shares"
162
- msgstr "Hashtags comuns para todos os compartilhamentos"
163
-
164
- #: inc/config.php:166
165
- msgid "Create hashtags from Categories"
166
- msgstr "Criar hashtags de Categorias"
167
-
168
- #: inc/config.php:167
169
- msgid "Create hashtags from Tags"
170
- msgstr "Criar hashtags de Marcações"
171
-
172
- #: inc/config.php:168
173
- msgid "Create hashtags from Custom Fields"
174
- msgstr "Criar hashtags de Campos Personalizados"
175
-
176
- #: inc/config.php:174
177
- msgid "Common Hashtags"
178
- msgstr "Hashtags Comuns"
179
-
180
- #: inc/config.php:178
181
- msgid "Specify which hashtags you want to be used. eg. #example, #example2"
182
- msgstr ""
183
- "Especifique quais hashtags você quer que sejam usadas. como #exemplo, "
184
- "#exemplo2"
185
-
186
- #: inc/config.php:184
187
- msgid "Maximum Hashtags Length"
188
- msgstr "Extensão Máxima das Hashtags"
189
-
190
- #: inc/config.php:188
191
- msgid "Set to 0 (characters) to include all."
192
- msgstr "Definir para 0 (caracteres) para incluir todos."
193
-
194
- #: inc/config.php:194
195
- msgid "Hashtag Custom Field"
196
- msgstr "Campo Personalizado de Hashtag"
197
-
198
- #: inc/config.php:198
199
- msgid "Fetch hashtags from specified custom field"
200
- msgstr "Extraia hashtags do campo personalizado especificado"
201
-
202
- #: inc/config.php:204
203
- msgid "Minimum interval between shares"
204
- msgstr "Intervalo mínimo entre compartilhamentos"
205
-
206
- #: inc/config.php:208
207
- msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
208
- msgstr ""
209
- "Tempo mínimo entre compartilhamentos (Hora/Horas), 0,4 também pode ser usado."
210
-
211
- #: inc/config.php:214
212
- msgid "Minimum age of post to be eligible for sharing"
213
- msgstr "Idade mínima da publicação para ser elegível para compartilhar"
214
-
215
- #: inc/config.php:218 inc/config.php:228
216
- msgid "Day/Days - 0 for Disabled"
217
- msgstr "Dia/Dias - 0 para Desativada"
218
-
219
- #: inc/config.php:224
220
- msgid "Maximum age of post to be eligible for sharing"
221
- msgstr "Idade máxima da publicação para ser elegível para compartilhar"
222
-
223
- #: inc/config.php:234
224
- msgid "Number of Posts to share"
225
- msgstr "Número de Publicações a compartilhar"
226
-
227
- #: inc/config.php:238
228
- msgid "Number of posts to share each time"
229
- msgstr "Número de publicações a compartilhar cada vez"
230
-
231
- #: inc/config.php:246
232
- msgid "Post with Image"
233
- msgstr "Publicar com Imagem"
234
-
235
- #: inc/config.php:250
236
- msgid "Check if you want to add the post featured image to the share"
237
- msgstr ""
238
- "Marque se deseja adicionar ao compartilhamento a imagem em destaque na "
239
- "publicação"
240
-
241
- #: inc/config.php:256
242
- msgid "Share old posts more than once"
243
- msgstr "Compartilhar publicações antigas mais de uma vez"
244
-
245
- #: inc/config.php:260
246
- msgid ""
247
- "By default once a post is shared it will not be shared again until you stop/"
248
- "start the plugin"
249
- msgstr ""
250
- "Por padrão, quando uma publicação é compartilhada, ela não será "
251
- "compartilhada novamente até você parar/iniciar o plugin"
252
-
253
- #: inc/config.php:268
254
- msgid "Post Type"
255
- msgstr "Tipo de Publicação"
256
-
257
- #: inc/config.php:272
258
- msgid "What type of items do you want to share?"
259
- msgstr "Que tipo de itens que você deseja compartilhar?"
260
-
261
- #: inc/config.php:279
262
- msgid "Google Analytics Campaign Tracking"
263
- msgstr "Monitoramento de Campanha do Google Analytics"
264
-
265
- #: inc/config.php:283
266
- msgid ""
267
- "Enabling Campaign Tracking you would be able to see how much traffic Revive "
268
- "Old Post generated."
269
- msgstr ""
270
- "Ao ativar o Monitoramento de Campanha, você pode ver quanto tráfego foi "
271
- "gerado pelo Reativar Publicação Antiga."
272
-
273
- #: inc/config.php:289
274
- msgid "Exclude Specific Categories"
275
- msgstr "Excluir Categorias Específicas"
276
-
277
- #: inc/config.php:293
278
- msgid ""
279
- "Select which categories do you want to exclude to share from? Blank - None"
280
- msgstr ""
281
- "Selecione as categorias que você deseja excluir do compartilhamento. Em "
282
- "branco - Nenhuma"
283
-
284
- #: inc/core.php:81
285
- msgid "Tweet Old Post is already active!"
286
- msgstr "Tweetar Publicação Antiga já está ativo!"
287
-
288
- #: inc/core.php:101
289
- #, fuzzy
290
- msgid "ROP is already inactive!"
291
- msgstr "Tweetar Publicação Antiga já está inativo!"
292
-
293
- #: inc/core.php:811
294
- msgid "Custom Tweet User Interval"
295
- msgstr "Intervalo do Usuário do Tweet Personalizado"
296
-
297
- #: inc/core.php:1127
298
- msgid "Could not connect to Twitter!"
299
- msgstr "Não foi possível conectar ao Twitter!"
300
-
301
- #: inc/core.php:1385
302
- msgid "This is only available in the"
303
- msgstr "Isso só está disponível na"
304
-
305
- #: inc/core.php:1385
306
- msgid "PRO version"
307
- msgstr "versão PRO"
308
-
309
- #: inc/core.php:1644
310
- msgid "Exclude Posts"
311
- msgstr "Excluir Publicações"
312
-
313
- #: inc/exclude-posts.php:24
314
- msgid "Tweet Old Post Options Updated."
315
- msgstr "Opções de Tweetar Publicação Antiga Atualizadas."
316
-
317
- #: inc/exclude-posts.php:63
318
- msgid "No post selected please select a post to be excluded."
319
- msgstr ""
320
- "Nenhuma publicação selecionada; selecione uma publicação a ser excluída."
321
-
322
- #: inc/exclude-posts.php:70
323
- msgid "Posts excluded successfully."
324
- msgstr "Publicações excluídas com sucesso."
325
-
326
- #: inc/exclude-posts.php:155
327
- msgid "Selected Categories"
328
- msgstr "Categorias Selecionadas"
329
-
330
- #: inc/exclude-posts.php:157
331
- msgid "Filter"
332
- msgstr "Filtrar"
333
-
334
- #: inc/exclude-posts.php:168
335
- msgid "&laquo;"
336
- msgstr "«"
337
-
338
- #: inc/exclude-posts.php:169
339
- msgid "&raquo;"
340
- msgstr "»"
341
-
342
- #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
343
- #, php-format
344
- msgid "Displaying %s&#8211;%s of %s"
345
- msgstr "Exibindo %s&#8211;%s de %s"
346
-
347
- #: inc/exclude-posts.php:356
348
- msgid "No Posts found. Review your search or filter criteria/term."
349
- msgstr ""
350
- "Nenhuma publicação encontrada. Revise seus critérios/termos de pesquisa ou "
351
- "de filtro."
352
-
353
- #: inc/exclude-posts.php:363
354
- msgid ""
355
- "You do not have enough permission to set the option. Please contact your "
356
- "admin."
357
- msgstr ""
358
- "Você não tem permissão suficiente para configurar a opção. Entre em contato "
359
- "com seu administrador."
360
-
361
- #: inc/view-exclude.php:4 inc/view.php:3
362
- msgid "After 6 months of hard work, we have just released"
363
- msgstr "Depois de 6 meses de trabalho duro, acabamos de lançar"
364
-
365
- #: inc/view-exclude.php:4 inc/view.php:3
366
- msgid "the island of WordPress themes."
367
- msgstr "nossos temas de WordPress."
368
-
369
- #: inc/view-exclude.php:5 inc/view.php:4
370
- msgid "Show Me"
371
- msgstr "Mostrar"
372
-
373
- #: inc/view-exclude.php:15 inc/view.php:14
374
- msgid "by"
375
- msgstr "por"
376
-
377
- #: inc/view-exclude.php:18 inc/view.php:17
378
- msgid "Show your love"
379
- msgstr "Você gostou?"
380
-
381
- #: inc/view-exclude.php:19 inc/view.php:18
382
- msgid "Leave A Review"
383
- msgstr "Faça uma Avaliação"
384
-
385
- #: inc/view-exclude.php:30
386
- msgid "Revive Old Post is set to share on a"
387
- msgstr "Reativar Publicação Antiga está definido para compartilhar em um"
388
-
389
- #: inc/view-exclude.php:32 inc/view.php:31
390
- msgid "hours interval, "
391
- msgstr "intervalo de horas, "
392
-
393
- #: inc/view-exclude.php:33 inc/view.php:32
394
- msgid "and the next share will take place in: "
395
- msgstr "e o próximo compartilhamento será feito em: "
396
-
397
- #: inc/view-exclude.php:38
398
- msgid "Revive Old Post is not set to share!"
399
- msgstr "Reativar Publicação Antiga não está definido para compartilhar!"
400
-
401
- #: inc/view-exclude.php:42
402
- #, fuzzy
403
- msgid ""
404
- "You have selected following POST IDs to be excluded from tweeting: <span "
405
- "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
406
- "Note: If you have made any change and dint hit 'Exclude Selected' button "
407
- "changes will not be saved. "
408
- msgstr ""
409
- "Você selecionou os seguintes IDs de PUBLICAÇÃO a serem excluídos dos tweets: "
410
- "<span id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
411
- "Observação: Se você fez alguma alteração e não pressionou o botão \"Excluir "
412
- "Selecionados\", as alterações não serão salvas. "
413
-
414
- #: inc/view.php:29
415
- msgid "Revive Old Post is set to post on a"
416
- msgstr "Reativar Publicação Antiga está definido para publicar em um"
417
-
418
- #: inc/view.php:37
419
- msgid "Revive Old Post is not set to post!"
420
- msgstr "Reativar Publicação Antiga não está definido para publicar!"
421
-
422
- #: inc/view.php:42
423
- msgid ""
424
- "Once you click start sharing a post will be sent in 15 sec, also here you "
425
- "can see the error message if is any."
426
- msgstr ""
427
- "Depois de clicar em Iniciar Compartilhamento, uma publicação será enviada em "
428
- "15 segundos; você também pode ver aqui a mensagem de erro, se for o caso."
429
-
430
- #: inc/view.php:52
431
- msgid "Twitter Login"
432
- msgstr "Login do Twitter"
433
-
434
- #: inc/view.php:53
435
- msgid "Login using your Twitter account."
436
- msgstr "Fazer login usando sua conta do Twitter."
437
-
438
- #: inc/view.php:77 inc/view.php:111
439
- msgid "Add Account"
440
- msgstr "Adicionar Conta"
441
-
442
- #: inc/view.php:84
443
- msgid "Facebook Login"
444
- msgstr "Login do Facebook"
445
-
446
- #: inc/view.php:85
447
- msgid "Login using your Facebook account."
448
- msgstr "Fazer login usando sua conta do Facebook."
449
-
450
- #: inc/view.php:109
451
- msgid "Authorize"
452
- msgstr "Autorizar"
453
-
454
- #: inc/view.php:118
455
- msgid "Linkedin Login"
456
- msgstr "Login do Linkedin"
457
-
458
- #: inc/view.php:119
459
- msgid "Login using your Linkedin account."
460
- msgstr "Fazer login usando sua conta do Linkedin."
461
-
462
- #: inc/view.php:141
463
- msgid "Add account"
464
- msgstr "Adicionar conta"
465
-
466
- #: inc/view.php:154
467
- msgid "Select All"
468
- msgstr "Selecionar Tudo"
469
-
470
- #: inc/view.php:165
471
- msgid "Reset"
472
- msgstr "Redefinir"
473
-
474
- #: inc/view.php:166
475
- msgid "Save"
476
- msgstr "Salvar"
477
-
478
- #: inc/view.php:167
479
- msgid "Start Sharing"
480
- msgstr "Iniciar Compartilhamento"
481
-
482
- #: inc/view.php:168
483
- msgid "Stop Sharing"
484
- msgstr "Parar Compartilhamento"
485
-
486
- #: inc/view.php:169
487
- msgid "See Sample Post"
488
- msgstr "Ver Amostra de Publicação"
489
-
490
- #: inc/view.php:171
491
- msgid ""
492
- "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
493
- msgstr ""
494
- "Não somos de nenhuma forma afiliados ou parceiros do Twitter/Facebook/"
495
- "Linkedin."
496
-
497
- #: inc/view.php:176
498
- msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
499
- msgstr ""
500
- "Faça Upgrade de Tweetar Publicação Antiga por apenas $9,99 - Faça Upgrade "
501
- "para Pro Agora!"
502
-
503
- #: inc/view.php:177
504
- msgid "ThemeIsle - Deadly Simple WordPress Themes"
505
- msgstr "ThemeIsle - Temas de WordPress Extremamente Simples"
506
-
507
- #: inc/view.php:178
508
- msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
509
- msgstr "ThemeIsle - Promova Nossos Temas e Plugins e Ganhe 55% de Comissão"
510
-
511
- #: inc/view.php:185
512
- #, fuzzy
513
- msgid "Sample Post Preview"
514
- msgstr "Ver Amostra de Publicação"
515
-
516
- #: inc/view.php:187 inc/view.php:196 inc/view.php:242 inc/view.php:289
517
- msgid "Close preview"
518
- msgstr ""
519
-
520
- #: inc/view.php:188
521
- msgid "Share now"
522
- msgstr ""
523
-
524
- #: inc/view.php:194
525
- msgid "Choose a Profile or Page"
526
- msgstr ""
527
-
528
- #: inc/view.php:202
529
- msgid "Add Your Facebook Account Following The Instructions On The Left"
530
- msgstr ""
531
-
532
- #: inc/view.php:206 inc/view.php:252
533
- msgid "Go on"
534
- msgstr ""
535
-
536
- #: inc/view.php:207
537
- msgid "Click on <strong>Create New App</strong> from the top right corner"
538
- msgstr ""
539
-
540
- #: inc/view.php:208
541
- msgid ""
542
- "Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and "
543
- "click on Create App"
544
- msgstr ""
545
-
546
- #: inc/view.php:209
547
- msgid ""
548
- "Once you arrive on the app dashboard, copy your <strong>App ID</strong> and "
549
- "<strong>App Secret</strong> in the fields on the right"
550
- msgstr ""
551
-
552
- #: inc/view.php:210
553
- msgid ""
554
- "Go on Settings tab from the left sidebar menu add the contact email and "
555
- "click on <strong>Add Platform</strong> and select <strong>Website</strong>"
556
- msgstr ""
557
-
558
- #: inc/view.php:211
559
- msgid ""
560
- "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into App "
561
- "Domains and Site URL fields and <strong>Save</strong>"
562
- msgstr ""
563
-
564
- #: inc/view.php:212
565
- msgid ""
566
- "Go on Status & Review tab and set your app live from the top-right switch."
567
- msgstr ""
568
-
569
- #: inc/view.php:213 inc/view.php:259
570
- msgid "Now everything is done, click on <strong>Authorize App</strong> button."
571
- msgstr ""
572
-
573
- #: inc/view.php:219
574
- #, fuzzy
575
- msgid "Facebook App ID"
576
- msgstr "Login do Facebook"
577
-
578
- #: inc/view.php:220
579
- msgid "ID from your app created on facebook website."
580
- msgstr ""
581
-
582
- #: inc/view.php:231
583
- msgid "Facebook App Secret"
584
- msgstr ""
585
-
586
- #: inc/view.php:232
587
- msgid "Secret from your app created on facebook website. "
588
- msgstr ""
589
-
590
- #: inc/view.php:240 inc/view.php:287
591
- #, fuzzy
592
- msgid "Authorize App"
593
- msgstr "Autorizar"
594
-
595
- #: inc/view.php:248
596
- msgid "Add Your Linkedin Account Following The Instructions On The Left"
597
- msgstr ""
598
-
599
- #: inc/view.php:253
600
- msgid ""
601
- "Enter the required details and pay special attention to the further fields :"
602
- msgstr ""
603
-
604
- #: inc/view.php:254
605
- msgid "Make sure you set Live Status to LIVE"
606
- msgstr ""
607
-
608
- #: inc/view.php:255
609
- msgid "Default Scope should have r_basicprofile and rw_nus checked"
610
- msgstr ""
611
-
612
- #: inc/view.php:256
613
- msgid ""
614
- "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into OAuth "
615
- "2.0 Redirect URLs"
616
- msgstr ""
617
-
618
- #: inc/view.php:257
619
- msgid ""
620
- "Once all required fields are filled click on Add Application button, get the "
621
- "API Key and Secret Key and paste them in the fields on the right"
622
- msgstr ""
623
-
624
- #: inc/view.php:265
625
- #, fuzzy
626
- msgid "Linkedin API Key"
627
- msgstr "Login do Linkedin"
628
-
629
- #: inc/view.php:266
630
- msgid "API Key that you get once you create an app"
631
- msgstr ""
632
-
633
- #: inc/view.php:277
634
- msgid "Linkedin Secret Key"
635
- msgstr ""
636
-
637
- #: inc/view.php:278
638
- msgid "Secret Key that you get once you create an app"
639
- msgstr ""
640
-
641
- #. Description of the plugin/theme
642
- msgid ""
643
- "Wordpress plugin that helps you to keeps your old posts alive by sharing "
644
- "them and driving more traffic to them from twitter/facebook or linkedin. It "
645
- "also helps you to promote your content. You can set time and no of posts to "
646
- "share to drive more traffic.For questions, comments, or feature requests, <a "
647
- "href=\"https://themeisle.com/contact/?"
648
- "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
649
- msgstr ""
650
- "Plugin do Wordpress que ajuda você a manter suas publicações antigas ativas "
651
- "por compartilhá-las e gerar mais tráfego para elas usando o Twitter/Facebook "
652
- "ou LinkedIn. Ele também ajuda a promover seu conteúdo. Você pode definir a "
653
- "hora e o número de publicações a compartilhar para gerar mais tráfego. Par "
654
- "dúvidas, comentários ou solicitações de recursos, <a href=\"https://themeisle."
655
- "com/contact/?utm_source=plugindesc&utm_medium=announce&utm_campaign=top"
656
- "\">contate-nos</a>!"
657
-
658
- #~ msgid "Post Only"
659
- #~ msgstr "Apenas Publicação"
660
-
661
- #~ msgid "Page Only"
662
- #~ msgstr "Apenas Página"
663
-
664
- #~ msgid "Custom Post Type"
665
- #~ msgstr "Tipo de Publicação Personalizada"
666
-
667
- #~ msgid "Post and Page"
668
- #~ msgstr "Publicação e Página"
669
-
670
- #~ msgid "Select which custom post type"
671
- #~ msgstr "Selecione o tipo de publicação personalizada"
672
-
673
- #~ msgid ""
674
- #~ " We just fixed the interrupted posting issue and scheduling issue, if you "
675
- #~ "don't see any tweets you need to re-authentificate your twitter accounts. "
676
- #~ "| <a href=\""
677
- #~ msgstr ""
678
- #~ " Nós corrigimos o problema de interrupção da publicação e o problema de "
679
- #~ "agendamento; se você não vir nenhum tweet, precisará autentificar "
680
- #~ "novamente suas contas do Twitter. | <a href=\""
681
-
682
- #~ msgid "ExcludePosts"
683
- #~ msgstr "ExcluirPublicações"
684
-
685
- #~ msgid "Revive Old Post PRO"
686
- #~ msgstr "Reativar Publicação Antiga PRO"
1
+ # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
+ # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
+ "POT-Creation-Date: 2014-07-16 00:01+0100\n"
8
+ "PO-Revision-Date: 2014-07-16 00:07+0100\n"
9
+ "Last-Translator: Ionut <friends@themeisle.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
+ "X-Generator: Poedit 1.5.7\n"
15
+ "X-Poedit-KeywordsList: _;__;_e\n"
16
+ "X-Poedit-Basepath: ../\n"
17
+ "X-Poedit-SearchPath-0: .\n"
18
+ "X-Poedit-SearchPath-1: inc\n"
19
+
20
+ #: inc/class-remote-notification-client.php:260
21
+ msgid "Dismiss notification"
22
+ msgstr "Dispensar notificação"
23
+
24
+ #: inc/class-remote-notification-client.php:262
25
+ msgid "Dismiss"
26
+ msgstr "Dispensar"
27
+
28
+ #: inc/config.php:24
29
+ msgid "Post Content"
30
+ msgstr "Conteúdo da Publicação"
31
+
32
+ #: inc/config.php:28
33
+ msgid "What do you want to share?"
34
+ msgstr "O que você gostaria de compartilhar?"
35
+
36
+ #: inc/config.php:30
37
+ msgid "Title Only"
38
+ msgstr "Apenas Título"
39
+
40
+ #: inc/config.php:31
41
+ msgid "Body Only"
42
+ msgstr "Apenas Mensagem"
43
+
44
+ #: inc/config.php:32
45
+ msgid "Title & Body"
46
+ msgstr "Título e Mensagem"
47
+
48
+ #: inc/config.php:33
49
+ msgid "Custom Field"
50
+ msgstr "Campo Personalizado"
51
+
52
+ #: inc/config.php:39
53
+ msgid "Post Content Custom Field"
54
+ msgstr "Campo Personalizado do Conteúdo da Publicação"
55
+
56
+ #: inc/config.php:43
57
+ msgid "Which custom field do you want to fetch info from?"
58
+ msgstr "Você deseja extrair informações de qual campo personalizado?"
59
+
60
+ #: inc/config.php:49
61
+ msgid "Additional Text"
62
+ msgstr "Texto Adicional"
63
+
64
+ #: inc/config.php:53
65
+ msgid "Text added to your auto posts"
66
+ msgstr "Texto adicionado às suas publicações automáticas"
67
+
68
+ #: inc/config.php:59
69
+ msgid "Additional Text At"
70
+ msgstr "Texto Adicional em"
71
+
72
+ #: inc/config.php:63
73
+ msgid "Where do you want the text to be added?"
74
+ msgstr "Onde você deseja que o texto seja adicionado?"
75
+
76
+ #: inc/config.php:65
77
+ msgid "Beginning of Post"
78
+ msgstr "Início da Publicação"
79
+
80
+ #: inc/config.php:66
81
+ msgid "End of Post"
82
+ msgstr "Fim da Publicação"
83
+
84
+ #: inc/config.php:72
85
+ msgid "Include Link"
86
+ msgstr "Incluir Link"
87
+
88
+ #: inc/config.php:76
89
+ msgid "Include a link to your post?"
90
+ msgstr "Incluir um link para sua publicação?"
91
+
92
+ #: inc/config.php:78
93
+ msgid "Yes"
94
+ msgstr "Sim"
95
+
96
+ #: inc/config.php:79
97
+ msgid "No"
98
+ msgstr "Não"
99
+
100
+ #: inc/config.php:85
101
+ msgid "Fetch URL From Custom Field"
102
+ msgstr "Extrair URL de Campo Personalizado"
103
+
104
+ #: inc/config.php:89
105
+ msgid "URL will be fetched from a custom field."
106
+ msgstr "A URL será extraída de um campo personalizado."
107
+
108
+ #: inc/config.php:95
109
+ msgid "URL Custom Field"
110
+ msgstr "Campo Personalizado da URL"
111
+
112
+ #: inc/config.php:99
113
+ msgid "URL will be fetched from the specified custom field."
114
+ msgstr "A URL será extraída do campo personalizado especificado."
115
+
116
+ #: inc/config.php:105
117
+ msgid "Use URL Shortner"
118
+ msgstr "Usar Encurtador de URL"
119
+
120
+ #: inc/config.php:117
121
+ msgid "URL Shortner Service"
122
+ msgstr "Serviço de Encurtador de URL"
123
+
124
+ #: inc/config.php:121
125
+ msgid "Shorten the link to your post."
126
+ msgstr "Encurte o link para sua publicação."
127
+
128
+ #: inc/config.php:123
129
+ msgid "wp short url"
130
+ msgstr "url curta wp"
131
+
132
+ #: inc/config.php:125
133
+ msgid "is.gd"
134
+ msgstr "is.gd"
135
+
136
+ #: inc/config.php:126
137
+ msgid "bit.ly"
138
+ msgstr "bit.ly"
139
+
140
+ #: inc/config.php:138
141
+ msgid "Bitly Key"
142
+ msgstr "Chave do Bitly"
143
+
144
+ #: inc/config.php:148
145
+ msgid "Bitly User"
146
+ msgstr "Usuário do Bitly"
147
+
148
+ #: inc/config.php:158
149
+ msgid "Hashtags"
150
+ msgstr "Hashtags"
151
+
152
+ #: inc/config.php:162
153
+ msgid "Include #hashtags in your auto posts?"
154
+ msgstr "Incluir #hashtags em suas publicações automáticas?"
155
+
156
+ #: inc/config.php:164
157
+ msgid "Don't add any hashtags"
158
+ msgstr "Não adicione nenhuma hashtag"
159
+
160
+ #: inc/config.php:165
161
+ msgid "Common hashtags for all shares"
162
+ msgstr "Hashtags comuns para todos os compartilhamentos"
163
+
164
+ #: inc/config.php:166
165
+ msgid "Create hashtags from Categories"
166
+ msgstr "Criar hashtags de Categorias"
167
+
168
+ #: inc/config.php:167
169
+ msgid "Create hashtags from Tags"
170
+ msgstr "Criar hashtags de Marcações"
171
+
172
+ #: inc/config.php:168
173
+ msgid "Create hashtags from Custom Fields"
174
+ msgstr "Criar hashtags de Campos Personalizados"
175
+
176
+ #: inc/config.php:174
177
+ msgid "Common Hashtags"
178
+ msgstr "Hashtags Comuns"
179
+
180
+ #: inc/config.php:178
181
+ msgid "Specify which hashtags you want to be used. eg. #example, #example2"
182
+ msgstr ""
183
+ "Especifique quais hashtags você quer que sejam usadas. como #exemplo, "
184
+ "#exemplo2"
185
+
186
+ #: inc/config.php:184
187
+ msgid "Maximum Hashtags Length"
188
+ msgstr "Extensão Máxima das Hashtags"
189
+
190
+ #: inc/config.php:188
191
+ msgid "Set to 0 (characters) to include all."
192
+ msgstr "Definir para 0 (caracteres) para incluir todos."
193
+
194
+ #: inc/config.php:194
195
+ msgid "Hashtag Custom Field"
196
+ msgstr "Campo Personalizado de Hashtag"
197
+
198
+ #: inc/config.php:198
199
+ msgid "Fetch hashtags from specified custom field"
200
+ msgstr "Extraia hashtags do campo personalizado especificado"
201
+
202
+ #: inc/config.php:204
203
+ msgid "Minimum interval between shares"
204
+ msgstr "Intervalo mínimo entre compartilhamentos"
205
+
206
+ #: inc/config.php:208
207
+ msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
208
+ msgstr ""
209
+ "Tempo mínimo entre compartilhamentos (Hora/Horas), 0,4 também pode ser usado."
210
+
211
+ #: inc/config.php:214
212
+ msgid "Minimum age of post to be eligible for sharing"
213
+ msgstr "Idade mínima da publicação para ser elegível para compartilhar"
214
+
215
+ #: inc/config.php:218 inc/config.php:228
216
+ msgid "Day/Days - 0 for Disabled"
217
+ msgstr "Dia/Dias - 0 para Desativada"
218
+
219
+ #: inc/config.php:224
220
+ msgid "Maximum age of post to be eligible for sharing"
221
+ msgstr "Idade máxima da publicação para ser elegível para compartilhar"
222
+
223
+ #: inc/config.php:234
224
+ msgid "Number of Posts to share"
225
+ msgstr "Número de Publicações a compartilhar"
226
+
227
+ #: inc/config.php:238
228
+ msgid "Number of posts to share each time"
229
+ msgstr "Número de publicações a compartilhar cada vez"
230
+
231
+ #: inc/config.php:246
232
+ msgid "Post with Image"
233
+ msgstr "Publicar com Imagem"
234
+
235
+ #: inc/config.php:250
236
+ msgid "Check if you want to add the post featured image to the share"
237
+ msgstr ""
238
+ "Marque se deseja adicionar ao compartilhamento a imagem em destaque na "
239
+ "publicação"
240
+
241
+ #: inc/config.php:256
242
+ msgid "Share old posts more than once"
243
+ msgstr "Compartilhar publicações antigas mais de uma vez"
244
+
245
+ #: inc/config.php:260
246
+ msgid ""
247
+ "By default once a post is shared it will not be shared again until you stop/"
248
+ "start the plugin"
249
+ msgstr ""
250
+ "Por padrão, quando uma publicação é compartilhada, ela não será "
251
+ "compartilhada novamente até você parar/iniciar o plugin"
252
+
253
+ #: inc/config.php:268
254
+ msgid "Post Type"
255
+ msgstr "Tipo de Publicação"
256
+
257
+ #: inc/config.php:272
258
+ msgid "What type of items do you want to share?"
259
+ msgstr "Que tipo de itens que você deseja compartilhar?"
260
+
261
+ #: inc/config.php:279
262
+ msgid "Google Analytics Campaign Tracking"
263
+ msgstr "Monitoramento de Campanha do Google Analytics"
264
+
265
+ #: inc/config.php:283
266
+ msgid ""
267
+ "Enabling Campaign Tracking you would be able to see how much traffic Revive "
268
+ "Old Post generated."
269
+ msgstr ""
270
+ "Ao ativar o Monitoramento de Campanha, você pode ver quanto tráfego foi "
271
+ "gerado pelo Reativar Publicação Antiga."
272
+
273
+ #: inc/config.php:289
274
+ msgid "Exclude Specific Categories"
275
+ msgstr "Excluir Categorias Específicas"
276
+
277
+ #: inc/config.php:293
278
+ msgid ""
279
+ "Select which categories do you want to exclude to share from? Blank - None"
280
+ msgstr ""
281
+ "Selecione as categorias que você deseja excluir do compartilhamento. Em "
282
+ "branco - Nenhuma"
283
+
284
+ #: inc/core.php:81
285
+ msgid "Tweet Old Post is already active!"
286
+ msgstr "Tweetar Publicação Antiga já está ativo!"
287
+
288
+ #: inc/core.php:101
289
+ #, fuzzy
290
+ msgid "ROP is already inactive!"
291
+ msgstr "Tweetar Publicação Antiga já está inativo!"
292
+
293
+ #: inc/core.php:811
294
+ msgid "Custom Tweet User Interval"
295
+ msgstr "Intervalo do Usuário do Tweet Personalizado"
296
+
297
+ #: inc/core.php:1127
298
+ msgid "Could not connect to Twitter!"
299
+ msgstr "Não foi possível conectar ao Twitter!"
300
+
301
+ #: inc/core.php:1385
302
+ msgid "This is only available in the"
303
+ msgstr "Isso só está disponível na"
304
+
305
+ #: inc/core.php:1385
306
+ msgid "PRO version"
307
+ msgstr "versão PRO"
308
+
309
+ #: inc/core.php:1644
310
+ msgid "Exclude Posts"
311
+ msgstr "Excluir Publicações"
312
+
313
+ #: inc/exclude-posts.php:24
314
+ msgid "Tweet Old Post Options Updated."
315
+ msgstr "Opções de Tweetar Publicação Antiga Atualizadas."
316
+
317
+ #: inc/exclude-posts.php:63
318
+ msgid "No post selected please select a post to be excluded."
319
+ msgstr ""
320
+ "Nenhuma publicação selecionada; selecione uma publicação a ser excluída."
321
+
322
+ #: inc/exclude-posts.php:70
323
+ msgid "Posts excluded successfully."
324
+ msgstr "Publicações excluídas com sucesso."
325
+
326
+ #: inc/exclude-posts.php:155
327
+ msgid "Selected Categories"
328
+ msgstr "Categorias Selecionadas"
329
+
330
+ #: inc/exclude-posts.php:157
331
+ msgid "Filter"
332
+ msgstr "Filtrar"
333
+
334
+ #: inc/exclude-posts.php:168
335
+ msgid "&laquo;"
336
+ msgstr "«"
337
+
338
+ #: inc/exclude-posts.php:169
339
+ msgid "&raquo;"
340
+ msgstr "»"
341
+
342
+ #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
343
+ #, php-format
344
+ msgid "Displaying %s&#8211;%s of %s"
345
+ msgstr "Exibindo %s&#8211;%s de %s"
346
+
347
+ #: inc/exclude-posts.php:356
348
+ msgid "No Posts found. Review your search or filter criteria/term."
349
+ msgstr ""
350
+ "Nenhuma publicação encontrada. Revise seus critérios/termos de pesquisa ou "
351
+ "de filtro."
352
+
353
+ #: inc/exclude-posts.php:363
354
+ msgid ""
355
+ "You do not have enough permission to set the option. Please contact your "
356
+ "admin."
357
+ msgstr ""
358
+ "Você não tem permissão suficiente para configurar a opção. Entre em contato "
359
+ "com seu administrador."
360
+
361
+ #: inc/view-exclude.php:4 inc/view.php:3
362
+ msgid "After 6 months of hard work, we have just released"
363
+ msgstr "Depois de 6 meses de trabalho duro, acabamos de lançar"
364
+
365
+ #: inc/view-exclude.php:4 inc/view.php:3
366
+ msgid "the island of WordPress themes."
367
+ msgstr "nossos temas de WordPress."
368
+
369
+ #: inc/view-exclude.php:5 inc/view.php:4
370
+ msgid "Show Me"
371
+ msgstr "Mostrar"
372
+
373
+ #: inc/view-exclude.php:15 inc/view.php:14
374
+ msgid "by"
375
+ msgstr "por"
376
+
377
+ #: inc/view-exclude.php:18 inc/view.php:17
378
+ msgid "Show your love"
379
+ msgstr "Você gostou?"
380
+
381
+ #: inc/view-exclude.php:19 inc/view.php:18
382
+ msgid "Leave A Review"
383
+ msgstr "Faça uma Avaliação"
384
+
385
+ #: inc/view-exclude.php:30
386
+ msgid "Revive Old Post is set to share on a"
387
+ msgstr "Reativar Publicação Antiga está definido para compartilhar em um"
388
+
389
+ #: inc/view-exclude.php:32 inc/view.php:31
390
+ msgid "hours interval, "
391
+ msgstr "intervalo de horas, "
392
+
393
+ #: inc/view-exclude.php:33 inc/view.php:32
394
+ msgid "and the next share will take place in: "
395
+ msgstr "e o próximo compartilhamento será feito em: "
396
+
397
+ #: inc/view-exclude.php:38
398
+ msgid "Revive Old Post is not set to share!"
399
+ msgstr "Reativar Publicação Antiga não está definido para compartilhar!"
400
+
401
+ #: inc/view-exclude.php:42
402
+ #, fuzzy
403
+ msgid ""
404
+ "You have selected following POST IDs to be excluded from tweeting: <span "
405
+ "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
406
+ "Note: If you have made any change and dint hit 'Exclude Selected' button "
407
+ "changes will not be saved. "
408
+ msgstr ""
409
+ "Você selecionou os seguintes IDs de PUBLICAÇÃO a serem excluídos dos tweets: "
410
+ "<span id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
411
+ "Observação: Se você fez alguma alteração e não pressionou o botão \"Excluir "
412
+ "Selecionados\", as alterações não serão salvas. "
413
+
414
+ #: inc/view.php:29
415
+ msgid "Revive Old Post is set to post on a"
416
+ msgstr "Reativar Publicação Antiga está definido para publicar em um"
417
+
418
+ #: inc/view.php:37
419
+ msgid "Revive Old Post is not set to post!"
420
+ msgstr "Reativar Publicação Antiga não está definido para publicar!"
421
+
422
+ #: inc/view.php:42
423
+ msgid ""
424
+ "Once you click start sharing a post will be sent in 15 sec, also here you "
425
+ "can see the error message if is any."
426
+ msgstr ""
427
+ "Depois de clicar em Iniciar Compartilhamento, uma publicação será enviada em "
428
+ "15 segundos; você também pode ver aqui a mensagem de erro, se for o caso."
429
+
430
+ #: inc/view.php:52
431
+ msgid "Twitter Login"
432
+ msgstr "Login do Twitter"
433
+
434
+ #: inc/view.php:53
435
+ msgid "Login using your Twitter account."
436
+ msgstr "Fazer login usando sua conta do Twitter."
437
+
438
+ #: inc/view.php:77 inc/view.php:111
439
+ msgid "Add Account"
440
+ msgstr "Adicionar Conta"
441
+
442
+ #: inc/view.php:84
443
+ msgid "Facebook Login"
444
+ msgstr "Login do Facebook"
445
+
446
+ #: inc/view.php:85
447
+ msgid "Login using your Facebook account."
448
+ msgstr "Fazer login usando sua conta do Facebook."
449
+
450
+ #: inc/view.php:109
451
+ msgid "Authorize"
452
+ msgstr "Autorizar"
453
+
454
+ #: inc/view.php:118
455
+ msgid "Linkedin Login"
456
+ msgstr "Login do Linkedin"
457
+
458
+ #: inc/view.php:119
459
+ msgid "Login using your Linkedin account."
460
+ msgstr "Fazer login usando sua conta do Linkedin."
461
+
462
+ #: inc/view.php:141
463
+ msgid "Add account"
464
+ msgstr "Adicionar conta"
465
+
466
+ #: inc/view.php:154
467
+ msgid "Select All"
468
+ msgstr "Selecionar Tudo"
469
+
470
+ #: inc/view.php:165
471
+ msgid "Reset"
472
+ msgstr "Redefinir"
473
+
474
+ #: inc/view.php:166
475
+ msgid "Save"
476
+ msgstr "Salvar"
477
+
478
+ #: inc/view.php:167
479
+ msgid "Start Sharing"
480
+ msgstr "Iniciar Compartilhamento"
481
+
482
+ #: inc/view.php:168
483
+ msgid "Stop Sharing"
484
+ msgstr "Parar Compartilhamento"
485
+
486
+ #: inc/view.php:169
487
+ msgid "See Sample Post"
488
+ msgstr "Ver Amostra de Publicação"
489
+
490
+ #: inc/view.php:171
491
+ msgid ""
492
+ "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
493
+ msgstr ""
494
+ "Não somos de nenhuma forma afiliados ou parceiros do Twitter/Facebook/"
495
+ "Linkedin."
496
+
497
+ #: inc/view.php:176
498
+ msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
499
+ msgstr ""
500
+ "Faça Upgrade de Tweetar Publicação Antiga por apenas $9,99 - Faça Upgrade "
501
+ "para Pro Agora!"
502
+
503
+ #: inc/view.php:177
504
+ msgid "ThemeIsle - Deadly Simple WordPress Themes"
505
+ msgstr "ThemeIsle - Temas de WordPress Extremamente Simples"
506
+
507
+ #: inc/view.php:178
508
+ msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
509
+ msgstr "ThemeIsle - Promova Nossos Temas e Plugins e Ganhe 55% de Comissão"
510
+
511
+ #: inc/view.php:185
512
+ #, fuzzy
513
+ msgid "Sample Post Preview"
514
+ msgstr "Ver Amostra de Publicação"
515
+
516
+ #: inc/view.php:187 inc/view.php:196 inc/view.php:242 inc/view.php:289
517
+ msgid "Close preview"
518
+ msgstr ""
519
+
520
+ #: inc/view.php:188
521
+ msgid "Share now"
522
+ msgstr ""
523
+
524
+ #: inc/view.php:194
525
+ msgid "Choose a Profile or Page"
526
+ msgstr ""
527
+
528
+ #: inc/view.php:202
529
+ msgid "Add Your Facebook Account Following The Instructions On The Left"
530
+ msgstr ""
531
+
532
+ #: inc/view.php:206 inc/view.php:252
533
+ msgid "Go on"
534
+ msgstr ""
535
+
536
+ #: inc/view.php:207
537
+ msgid "Click on <strong>Create New App</strong> from the top right corner"
538
+ msgstr ""
539
+
540
+ #: inc/view.php:208
541
+ msgid ""
542
+ "Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and "
543
+ "click on Create App"
544
+ msgstr ""
545
+
546
+ #: inc/view.php:209
547
+ msgid ""
548
+ "Once you arrive on the app dashboard, copy your <strong>App ID</strong> and "
549
+ "<strong>App Secret</strong> in the fields on the right"
550
+ msgstr ""
551
+
552
+ #: inc/view.php:210
553
+ msgid ""
554
+ "Go on Settings tab from the left sidebar menu add the contact email and "
555
+ "click on <strong>Add Platform</strong> and select <strong>Website</strong>"
556
+ msgstr ""
557
+
558
+ #: inc/view.php:211
559
+ msgid ""
560
+ "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into App "
561
+ "Domains and Site URL fields and <strong>Save</strong>"
562
+ msgstr ""
563
+
564
+ #: inc/view.php:212
565
+ msgid ""
566
+ "Go on Status & Review tab and set your app live from the top-right switch."
567
+ msgstr ""
568
+
569
+ #: inc/view.php:213 inc/view.php:259
570
+ msgid "Now everything is done, click on <strong>Authorize App</strong> button."
571
+ msgstr ""
572
+
573
+ #: inc/view.php:219
574
+ #, fuzzy
575
+ msgid "Facebook App ID"
576
+ msgstr "Login do Facebook"
577
+
578
+ #: inc/view.php:220
579
+ msgid "ID from your app created on facebook website."
580
+ msgstr ""
581
+
582
+ #: inc/view.php:231
583
+ msgid "Facebook App Secret"
584
+ msgstr ""
585
+
586
+ #: inc/view.php:232
587
+ msgid "Secret from your app created on facebook website. "
588
+ msgstr ""
589
+
590
+ #: inc/view.php:240 inc/view.php:287
591
+ #, fuzzy
592
+ msgid "Authorize App"
593
+ msgstr "Autorizar"
594
+
595
+ #: inc/view.php:248
596
+ msgid "Add Your Linkedin Account Following The Instructions On The Left"
597
+ msgstr ""
598
+
599
+ #: inc/view.php:253
600
+ msgid ""
601
+ "Enter the required details and pay special attention to the further fields :"
602
+ msgstr ""
603
+
604
+ #: inc/view.php:254
605
+ msgid "Make sure you set Live Status to LIVE"
606
+ msgstr ""
607
+
608
+ #: inc/view.php:255
609
+ msgid "Default Scope should have r_basicprofile and rw_nus checked"
610
+ msgstr ""
611
+
612
+ #: inc/view.php:256
613
+ msgid ""
614
+ "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into OAuth "
615
+ "2.0 Redirect URLs"
616
+ msgstr ""
617
+
618
+ #: inc/view.php:257
619
+ msgid ""
620
+ "Once all required fields are filled click on Add Application button, get the "
621
+ "API Key and Secret Key and paste them in the fields on the right"
622
+ msgstr ""
623
+
624
+ #: inc/view.php:265
625
+ #, fuzzy
626
+ msgid "Linkedin API Key"
627
+ msgstr "Login do Linkedin"
628
+
629
+ #: inc/view.php:266
630
+ msgid "API Key that you get once you create an app"
631
+ msgstr ""
632
+
633
+ #: inc/view.php:277
634
+ msgid "Linkedin Secret Key"
635
+ msgstr ""
636
+
637
+ #: inc/view.php:278
638
+ msgid "Secret Key that you get once you create an app"
639
+ msgstr ""
640
+
641
+ #. Description of the plugin/theme
642
+ msgid ""
643
+ "Wordpress plugin that helps you to keeps your old posts alive by sharing "
644
+ "them and driving more traffic to them from twitter/facebook or linkedin. It "
645
+ "also helps you to promote your content. You can set time and no of posts to "
646
+ "share to drive more traffic.For questions, comments, or feature requests, <a "
647
+ "href=\"https://themeisle.com/contact/?"
648
+ "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
649
+ msgstr ""
650
+ "Plugin do Wordpress que ajuda você a manter suas publicações antigas ativas "
651
+ "por compartilhá-las e gerar mais tráfego para elas usando o Twitter/Facebook "
652
+ "ou LinkedIn. Ele também ajuda a promover seu conteúdo. Você pode definir a "
653
+ "hora e o número de publicações a compartilhar para gerar mais tráfego. Par "
654
+ "dúvidas, comentários ou solicitações de recursos, <a href=\"https://themeisle."
655
+ "com/contact/?utm_source=plugindesc&utm_medium=announce&utm_campaign=top"
656
+ "\">contate-nos</a>!"
657
+
658
+ #~ msgid "Post Only"
659
+ #~ msgstr "Apenas Publicação"
660
+
661
+ #~ msgid "Page Only"
662
+ #~ msgstr "Apenas Página"
663
+
664
+ #~ msgid "Custom Post Type"
665
+ #~ msgstr "Tipo de Publicação Personalizada"
666
+
667
+ #~ msgid "Post and Page"
668
+ #~ msgstr "Publicação e Página"
669
+
670
+ #~ msgid "Select which custom post type"
671
+ #~ msgstr "Selecione o tipo de publicação personalizada"
672
+
673
+ #~ msgid ""
674
+ #~ " We just fixed the interrupted posting issue and scheduling issue, if you "
675
+ #~ "don't see any tweets you need to re-authentificate your twitter accounts. "
676
+ #~ "| <a href=\""
677
+ #~ msgstr ""
678
+ #~ " Nós corrigimos o problema de interrupção da publicação e o problema de "
679
+ #~ "agendamento; se você não vir nenhum tweet, precisará autentificar "
680
+ #~ "novamente suas contas do Twitter. | <a href=\""
681
+
682
+ #~ msgid "ExcludePosts"
683
+ #~ msgstr "ExcluirPublicações"
684
+
685
+ #~ msgid "Revive Old Post PRO"
686
+ #~ msgstr "Reativar Publicação Antiga PRO"
languages/tweet-old-post-pt_PT.po CHANGED
@@ -1,686 +1,686 @@
1
- # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
- # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
- "POT-Creation-Date: 2014-07-16 00:01+0100\n"
8
- "PO-Revision-Date: 2014-07-16 00:07+0100\n"
9
- "Last-Translator: Ionut <friends@themeisle.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
- "X-Generator: Poedit 1.5.7\n"
15
- "X-Poedit-KeywordsList: _;__;_e\n"
16
- "X-Poedit-Basepath: ../\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
- "X-Poedit-SearchPath-1: inc\n"
19
-
20
- #: inc/class-remote-notification-client.php:260
21
- msgid "Dismiss notification"
22
- msgstr "Dispensar notificação"
23
-
24
- #: inc/class-remote-notification-client.php:262
25
- msgid "Dismiss"
26
- msgstr "Dispensar"
27
-
28
- #: inc/config.php:24
29
- msgid "Post Content"
30
- msgstr "Conteúdo da Publicação"
31
-
32
- #: inc/config.php:28
33
- msgid "What do you want to share?"
34
- msgstr "O que você gostaria de compartilhar?"
35
-
36
- #: inc/config.php:30
37
- msgid "Title Only"
38
- msgstr "Apenas Título"
39
-
40
- #: inc/config.php:31
41
- msgid "Body Only"
42
- msgstr "Apenas Mensagem"
43
-
44
- #: inc/config.php:32
45
- msgid "Title & Body"
46
- msgstr "Título e Mensagem"
47
-
48
- #: inc/config.php:33
49
- msgid "Custom Field"
50
- msgstr "Campo Personalizado"
51
-
52
- #: inc/config.php:39
53
- msgid "Post Content Custom Field"
54
- msgstr "Campo Personalizado do Conteúdo da Publicação"
55
-
56
- #: inc/config.php:43
57
- msgid "Which custom field do you want to fetch info from?"
58
- msgstr "Você deseja extrair informações de qual campo personalizado?"
59
-
60
- #: inc/config.php:49
61
- msgid "Additional Text"
62
- msgstr "Texto Adicional"
63
-
64
- #: inc/config.php:53
65
- msgid "Text added to your auto posts"
66
- msgstr "Texto adicionado às suas publicações automáticas"
67
-
68
- #: inc/config.php:59
69
- msgid "Additional Text At"
70
- msgstr "Texto Adicional em"
71
-
72
- #: inc/config.php:63
73
- msgid "Where do you want the text to be added?"
74
- msgstr "Onde você deseja que o texto seja adicionado?"
75
-
76
- #: inc/config.php:65
77
- msgid "Beginning of Post"
78
- msgstr "Início da Publicação"
79
-
80
- #: inc/config.php:66
81
- msgid "End of Post"
82
- msgstr "Fim da Publicação"
83
-
84
- #: inc/config.php:72
85
- msgid "Include Link"
86
- msgstr "Incluir Link"
87
-
88
- #: inc/config.php:76
89
- msgid "Include a link to your post?"
90
- msgstr "Incluir um link para sua publicação?"
91
-
92
- #: inc/config.php:78
93
- msgid "Yes"
94
- msgstr "Sim"
95
-
96
- #: inc/config.php:79
97
- msgid "No"
98
- msgstr "Não"
99
-
100
- #: inc/config.php:85
101
- msgid "Fetch URL From Custom Field"
102
- msgstr "Extrair URL de Campo Personalizado"
103
-
104
- #: inc/config.php:89
105
- msgid "URL will be fetched from a custom field."
106
- msgstr "A URL será extraída de um campo personalizado."
107
-
108
- #: inc/config.php:95
109
- msgid "URL Custom Field"
110
- msgstr "Campo Personalizado da URL"
111
-
112
- #: inc/config.php:99
113
- msgid "URL will be fetched from the specified custom field."
114
- msgstr "A URL será extraída do campo personalizado especificado."
115
-
116
- #: inc/config.php:105
117
- msgid "Use URL Shortner"
118
- msgstr "Usar Encurtador de URL"
119
-
120
- #: inc/config.php:117
121
- msgid "URL Shortner Service"
122
- msgstr "Serviço de Encurtador de URL"
123
-
124
- #: inc/config.php:121
125
- msgid "Shorten the link to your post."
126
- msgstr "Encurte o link para sua publicação."
127
-
128
- #: inc/config.php:123
129
- msgid "wp short url"
130
- msgstr "url curta wp"
131
-
132
- #: inc/config.php:125
133
- msgid "is.gd"
134
- msgstr "is.gd"
135
-
136
- #: inc/config.php:126
137
- msgid "bit.ly"
138
- msgstr "bit.ly"
139
-
140
- #: inc/config.php:138
141
- msgid "Bitly Key"
142
- msgstr "Chave do Bitly"
143
-
144
- #: inc/config.php:148
145
- msgid "Bitly User"
146
- msgstr "Usuário do Bitly"
147
-
148
- #: inc/config.php:158
149
- msgid "Hashtags"
150
- msgstr "Hashtags"
151
-
152
- #: inc/config.php:162
153
- msgid "Include #hashtags in your auto posts?"
154
- msgstr "Incluir #hashtags em suas publicações automáticas?"
155
-
156
- #: inc/config.php:164
157
- msgid "Don't add any hashtags"
158
- msgstr "Não adicione nenhuma hashtag"
159
-
160
- #: inc/config.php:165
161
- msgid "Common hashtags for all shares"
162
- msgstr "Hashtags comuns para todos os compartilhamentos"
163
-
164
- #: inc/config.php:166
165
- msgid "Create hashtags from Categories"
166
- msgstr "Criar hashtags de Categorias"
167
-
168
- #: inc/config.php:167
169
- msgid "Create hashtags from Tags"
170
- msgstr "Criar hashtags de Marcações"
171
-
172
- #: inc/config.php:168
173
- msgid "Create hashtags from Custom Fields"
174
- msgstr "Criar hashtags de Campos Personalizados"
175
-
176
- #: inc/config.php:174
177
- msgid "Common Hashtags"
178
- msgstr "Hashtags Comuns"
179
-
180
- #: inc/config.php:178
181
- msgid "Specify which hashtags you want to be used. eg. #example, #example2"
182
- msgstr ""
183
- "Especifique quais hashtags você quer que sejam usadas. como #exemplo, "
184
- "#exemplo2"
185
-
186
- #: inc/config.php:184
187
- msgid "Maximum Hashtags Length"
188
- msgstr "Extensão Máxima das Hashtags"
189
-
190
- #: inc/config.php:188
191
- msgid "Set to 0 (characters) to include all."
192
- msgstr "Definir para 0 (caracteres) para incluir todos."
193
-
194
- #: inc/config.php:194
195
- msgid "Hashtag Custom Field"
196
- msgstr "Campo Personalizado de Hashtag"
197
-
198
- #: inc/config.php:198
199
- msgid "Fetch hashtags from specified custom field"
200
- msgstr "Extraia hashtags do campo personalizado especificado"
201
-
202
- #: inc/config.php:204
203
- msgid "Minimum interval between shares"
204
- msgstr "Intervalo mínimo entre compartilhamentos"
205
-
206
- #: inc/config.php:208
207
- msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
208
- msgstr ""
209
- "Tempo mínimo entre compartilhamentos (Hora/Horas), 0,4 também pode ser usado."
210
-
211
- #: inc/config.php:214
212
- msgid "Minimum age of post to be eligible for sharing"
213
- msgstr "Idade mínima da publicação para ser elegível para compartilhar"
214
-
215
- #: inc/config.php:218 inc/config.php:228
216
- msgid "Day/Days - 0 for Disabled"
217
- msgstr "Dia/Dias - 0 para Desativada"
218
-
219
- #: inc/config.php:224
220
- msgid "Maximum age of post to be eligible for sharing"
221
- msgstr "Idade máxima da publicação para ser elegível para compartilhar"
222
-
223
- #: inc/config.php:234
224
- msgid "Number of Posts to share"
225
- msgstr "Número de Publicações a compartilhar"
226
-
227
- #: inc/config.php:238
228
- msgid "Number of posts to share each time"
229
- msgstr "Número de publicações a compartilhar cada vez"
230
-
231
- #: inc/config.php:246
232
- msgid "Post with Image"
233
- msgstr "Publicar com Imagem"
234
-
235
- #: inc/config.php:250
236
- msgid "Check if you want to add the post featured image to the share"
237
- msgstr ""
238
- "Marque se deseja adicionar ao compartilhamento a imagem em destaque na "
239
- "publicação"
240
-
241
- #: inc/config.php:256
242
- msgid "Share old posts more than once"
243
- msgstr "Compartilhar publicações antigas mais de uma vez"
244
-
245
- #: inc/config.php:260
246
- msgid ""
247
- "By default once a post is shared it will not be shared again until you stop/"
248
- "start the plugin"
249
- msgstr ""
250
- "Por padrão, quando uma publicação é compartilhada, ela não será "
251
- "compartilhada novamente até você parar/iniciar o plugin"
252
-
253
- #: inc/config.php:268
254
- msgid "Post Type"
255
- msgstr "Tipo de Publicação"
256
-
257
- #: inc/config.php:272
258
- msgid "What type of items do you want to share?"
259
- msgstr "Que tipo de itens que você deseja compartilhar?"
260
-
261
- #: inc/config.php:279
262
- msgid "Google Analytics Campaign Tracking"
263
- msgstr "Monitoramento de Campanha do Google Analytics"
264
-
265
- #: inc/config.php:283
266
- msgid ""
267
- "Enabling Campaign Tracking you would be able to see how much traffic Revive "
268
- "Old Post generated."
269
- msgstr ""
270
- "Ao ativar o Monitoramento de Campanha, você pode ver quanto tráfego foi "
271
- "gerado pelo Reativar Publicação Antiga."
272
-
273
- #: inc/config.php:289
274
- msgid "Exclude Specific Categories"
275
- msgstr "Excluir Categorias Específicas"
276
-
277
- #: inc/config.php:293
278
- msgid ""
279
- "Select which categories do you want to exclude to share from? Blank - None"
280
- msgstr ""
281
- "Selecione as categorias que você deseja excluir do compartilhamento. Em "
282
- "branco - Nenhuma"
283
-
284
- #: inc/core.php:81
285
- msgid "Tweet Old Post is already active!"
286
- msgstr "Tweetar Publicação Antiga já está ativo!"
287
-
288
- #: inc/core.php:101
289
- #, fuzzy
290
- msgid "ROP is already inactive!"
291
- msgstr "Tweetar Publicação Antiga já está inativo!"
292
-
293
- #: inc/core.php:811
294
- msgid "Custom Tweet User Interval"
295
- msgstr "Intervalo do Usuário do Tweet Personalizado"
296
-
297
- #: inc/core.php:1127
298
- msgid "Could not connect to Twitter!"
299
- msgstr "Não foi possível conectar ao Twitter!"
300
-
301
- #: inc/core.php:1385
302
- msgid "This is only available in the"
303
- msgstr "Isso só está disponível na"
304
-
305
- #: inc/core.php:1385
306
- msgid "PRO version"
307
- msgstr "versão PRO"
308
-
309
- #: inc/core.php:1644
310
- msgid "Exclude Posts"
311
- msgstr "Excluir Publicações"
312
-
313
- #: inc/exclude-posts.php:24
314
- msgid "Tweet Old Post Options Updated."
315
- msgstr "Opções de Tweetar Publicação Antiga Atualizadas."
316
-
317
- #: inc/exclude-posts.php:63
318
- msgid "No post selected please select a post to be excluded."
319
- msgstr ""
320
- "Nenhuma publicação selecionada; selecione uma publicação a ser excluída."
321
-
322
- #: inc/exclude-posts.php:70
323
- msgid "Posts excluded successfully."
324
- msgstr "Publicações excluídas com sucesso."
325
-
326
- #: inc/exclude-posts.php:155
327
- msgid "Selected Categories"
328
- msgstr "Categorias Selecionadas"
329
-
330
- #: inc/exclude-posts.php:157
331
- msgid "Filter"
332
- msgstr "Filtrar"
333
-
334
- #: inc/exclude-posts.php:168
335
- msgid "&laquo;"
336
- msgstr "«"
337
-
338
- #: inc/exclude-posts.php:169
339
- msgid "&raquo;"
340
- msgstr "»"
341
-
342
- #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
343
- #, php-format
344
- msgid "Displaying %s&#8211;%s of %s"
345
- msgstr "Exibindo %s&#8211;%s de %s"
346
-
347
- #: inc/exclude-posts.php:356
348
- msgid "No Posts found. Review your search or filter criteria/term."
349
- msgstr ""
350
- "Nenhuma publicação encontrada. Revise seus critérios/termos de pesquisa ou "
351
- "de filtro."
352
-
353
- #: inc/exclude-posts.php:363
354
- msgid ""
355
- "You do not have enough permission to set the option. Please contact your "
356
- "admin."
357
- msgstr ""
358
- "Você não tem permissão suficiente para configurar a opção. Entre em contato "
359
- "com seu administrador."
360
-
361
- #: inc/view-exclude.php:4 inc/view.php:3
362
- msgid "After 6 months of hard work, we have just released"
363
- msgstr "Depois de 6 meses de trabalho duro, acabamos de lançar"
364
-
365
- #: inc/view-exclude.php:4 inc/view.php:3
366
- msgid "the island of WordPress themes."
367
- msgstr "nossos temas de WordPress."
368
-
369
- #: inc/view-exclude.php:5 inc/view.php:4
370
- msgid "Show Me"
371
- msgstr "Mostrar"
372
-
373
- #: inc/view-exclude.php:15 inc/view.php:14
374
- msgid "by"
375
- msgstr "por"
376
-
377
- #: inc/view-exclude.php:18 inc/view.php:17
378
- msgid "Show your love"
379
- msgstr "Você gostou?"
380
-
381
- #: inc/view-exclude.php:19 inc/view.php:18
382
- msgid "Leave A Review"
383
- msgstr "Faça uma Avaliação"
384
-
385
- #: inc/view-exclude.php:30
386
- msgid "Revive Old Post is set to share on a"
387
- msgstr "Reativar Publicação Antiga está definido para compartilhar em um"
388
-
389
- #: inc/view-exclude.php:32 inc/view.php:31
390
- msgid "hours interval, "
391
- msgstr "intervalo de horas, "
392
-
393
- #: inc/view-exclude.php:33 inc/view.php:32
394
- msgid "and the next share will take place in: "
395
- msgstr "e o próximo compartilhamento será feito em: "
396
-
397
- #: inc/view-exclude.php:38
398
- msgid "Revive Old Post is not set to share!"
399
- msgstr "Reativar Publicação Antiga não está definido para compartilhar!"
400
-
401
- #: inc/view-exclude.php:42
402
- #, fuzzy
403
- msgid ""
404
- "You have selected following POST IDs to be excluded from tweeting: <span "
405
- "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
406
- "Note: If you have made any change and dint hit 'Exclude Selected' button "
407
- "changes will not be saved. "
408
- msgstr ""
409
- "Você selecionou os seguintes IDs de PUBLICAÇÃO a serem excluídos dos tweets: "
410
- "<span id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
411
- "Observação: Se você fez alguma alteração e não pressionou o botão \"Excluir "
412
- "Selecionados\", as alterações não serão salvas. "
413
-
414
- #: inc/view.php:29
415
- msgid "Revive Old Post is set to post on a"
416
- msgstr "Reativar Publicação Antiga está definido para publicar em um"
417
-
418
- #: inc/view.php:37
419
- msgid "Revive Old Post is not set to post!"
420
- msgstr "Reativar Publicação Antiga não está definido para publicar!"
421
-
422
- #: inc/view.php:42
423
- msgid ""
424
- "Once you click start sharing a post will be sent in 15 sec, also here you "
425
- "can see the error message if is any."
426
- msgstr ""
427
- "Depois de clicar em Iniciar Compartilhamento, uma publicação será enviada em "
428
- "15 segundos; você também pode ver aqui a mensagem de erro, se for o caso."
429
-
430
- #: inc/view.php:52
431
- msgid "Twitter Login"
432
- msgstr "Login do Twitter"
433
-
434
- #: inc/view.php:53
435
- msgid "Login using your Twitter account."
436
- msgstr "Fazer login usando sua conta do Twitter."
437
-
438
- #: inc/view.php:77 inc/view.php:111
439
- msgid "Add Account"
440
- msgstr "Adicionar Conta"
441
-
442
- #: inc/view.php:84
443
- msgid "Facebook Login"
444
- msgstr "Login do Facebook"
445
-
446
- #: inc/view.php:85
447
- msgid "Login using your Facebook account."
448
- msgstr "Fazer login usando sua conta do Facebook."
449
-
450
- #: inc/view.php:109
451
- msgid "Authorize"
452
- msgstr "Autorizar"
453
-
454
- #: inc/view.php:118
455
- msgid "Linkedin Login"
456
- msgstr "Login do Linkedin"
457
-
458
- #: inc/view.php:119
459
- msgid "Login using your Linkedin account."
460
- msgstr "Fazer login usando sua conta do Linkedin."
461
-
462
- #: inc/view.php:141
463
- msgid "Add account"
464
- msgstr "Adicionar conta"
465
-
466
- #: inc/view.php:154
467
- msgid "Select All"
468
- msgstr "Selecionar Tudo"
469
-
470
- #: inc/view.php:165
471
- msgid "Reset"
472
- msgstr "Redefinir"
473
-
474
- #: inc/view.php:166
475
- msgid "Save"
476
- msgstr "Salvar"
477
-
478
- #: inc/view.php:167
479
- msgid "Start Sharing"
480
- msgstr "Iniciar Compartilhamento"
481
-
482
- #: inc/view.php:168
483
- msgid "Stop Sharing"
484
- msgstr "Parar Compartilhamento"
485
-
486
- #: inc/view.php:169
487
- msgid "See Sample Post"
488
- msgstr "Ver Amostra de Publicação"
489
-
490
- #: inc/view.php:171
491
- msgid ""
492
- "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
493
- msgstr ""
494
- "Não somos de nenhuma forma afiliados ou parceiros do Twitter/Facebook/"
495
- "Linkedin."
496
-
497
- #: inc/view.php:176
498
- msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
499
- msgstr ""
500
- "Faça Upgrade de Tweetar Publicação Antiga por apenas $9,99 - Faça Upgrade "
501
- "para Pro Agora!"
502
-
503
- #: inc/view.php:177
504
- msgid "ThemeIsle - Deadly Simple WordPress Themes"
505
- msgstr "ThemeIsle - Temas de WordPress Extremamente Simples"
506
-
507
- #: inc/view.php:178
508
- msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
509
- msgstr "ThemeIsle - Promova Nossos Temas e Plugins e Ganhe 55% de Comissão"
510
-
511
- #: inc/view.php:185
512
- #, fuzzy
513
- msgid "Sample Post Preview"
514
- msgstr "Ver Amostra de Publicação"
515
-
516
- #: inc/view.php:187 inc/view.php:196 inc/view.php:242 inc/view.php:289
517
- msgid "Close preview"
518
- msgstr ""
519
-
520
- #: inc/view.php:188
521
- msgid "Share now"
522
- msgstr ""
523
-
524
- #: inc/view.php:194
525
- msgid "Choose a Profile or Page"
526
- msgstr ""
527
-
528
- #: inc/view.php:202
529
- msgid "Add Your Facebook Account Following The Instructions On The Left"
530
- msgstr ""
531
-
532
- #: inc/view.php:206 inc/view.php:252
533
- msgid "Go on"
534
- msgstr ""
535
-
536
- #: inc/view.php:207
537
- msgid "Click on <strong>Create New App</strong> from the top right corner"
538
- msgstr ""
539
-
540
- #: inc/view.php:208
541
- msgid ""
542
- "Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and "
543
- "click on Create App"
544
- msgstr ""
545
-
546
- #: inc/view.php:209
547
- msgid ""
548
- "Once you arrive on the app dashboard, copy your <strong>App ID</strong> and "
549
- "<strong>App Secret</strong> in the fields on the right"
550
- msgstr ""
551
-
552
- #: inc/view.php:210
553
- msgid ""
554
- "Go on Settings tab from the left sidebar menu add the contact email and "
555
- "click on <strong>Add Platform</strong> and select <strong>Website</strong>"
556
- msgstr ""
557
-
558
- #: inc/view.php:211
559
- msgid ""
560
- "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into App "
561
- "Domains and Site URL fields and <strong>Save</strong>"
562
- msgstr ""
563
-
564
- #: inc/view.php:212
565
- msgid ""
566
- "Go on Status & Review tab and set your app live from the top-right switch."
567
- msgstr ""
568
-
569
- #: inc/view.php:213 inc/view.php:259
570
- msgid "Now everything is done, click on <strong>Authorize App</strong> button."
571
- msgstr ""
572
-
573
- #: inc/view.php:219
574
- #, fuzzy
575
- msgid "Facebook App ID"
576
- msgstr "Login do Facebook"
577
-
578
- #: inc/view.php:220
579
- msgid "ID from your app created on facebook website."
580
- msgstr ""
581
-
582
- #: inc/view.php:231
583
- msgid "Facebook App Secret"
584
- msgstr ""
585
-
586
- #: inc/view.php:232
587
- msgid "Secret from your app created on facebook website. "
588
- msgstr ""
589
-
590
- #: inc/view.php:240 inc/view.php:287
591
- #, fuzzy
592
- msgid "Authorize App"
593
- msgstr "Autorizar"
594
-
595
- #: inc/view.php:248
596
- msgid "Add Your Linkedin Account Following The Instructions On The Left"
597
- msgstr ""
598
-
599
- #: inc/view.php:253
600
- msgid ""
601
- "Enter the required details and pay special attention to the further fields :"
602
- msgstr ""
603
-
604
- #: inc/view.php:254
605
- msgid "Make sure you set Live Status to LIVE"
606
- msgstr ""
607
-
608
- #: inc/view.php:255
609
- msgid "Default Scope should have r_basicprofile and rw_nus checked"
610
- msgstr ""
611
-
612
- #: inc/view.php:256
613
- msgid ""
614
- "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into OAuth "
615
- "2.0 Redirect URLs"
616
- msgstr ""
617
-
618
- #: inc/view.php:257
619
- msgid ""
620
- "Once all required fields are filled click on Add Application button, get the "
621
- "API Key and Secret Key and paste them in the fields on the right"
622
- msgstr ""
623
-
624
- #: inc/view.php:265
625
- #, fuzzy
626
- msgid "Linkedin API Key"
627
- msgstr "Login do Linkedin"
628
-
629
- #: inc/view.php:266
630
- msgid "API Key that you get once you create an app"
631
- msgstr ""
632
-
633
- #: inc/view.php:277
634
- msgid "Linkedin Secret Key"
635
- msgstr ""
636
-
637
- #: inc/view.php:278
638
- msgid "Secret Key that you get once you create an app"
639
- msgstr ""
640
-
641
- #. Description of the plugin/theme
642
- msgid ""
643
- "Wordpress plugin that helps you to keeps your old posts alive by sharing "
644
- "them and driving more traffic to them from twitter/facebook or linkedin. It "
645
- "also helps you to promote your content. You can set time and no of posts to "
646
- "share to drive more traffic.For questions, comments, or feature requests, <a "
647
- "href=\"https://themeisle.com/contact/?"
648
- "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
649
- msgstr ""
650
- "Plugin do Wordpress que ajuda você a manter suas publicações antigas ativas "
651
- "por compartilhá-las e gerar mais tráfego para elas usando o Twitter/Facebook "
652
- "ou LinkedIn. Ele também ajuda a promover seu conteúdo. Você pode definir a "
653
- "hora e o número de publicações a compartilhar para gerar mais tráfego. Par "
654
- "dúvidas, comentários ou solicitações de recursos, <a href=\"https://themeisle."
655
- "com/contact/?utm_source=plugindesc&utm_medium=announce&utm_campaign=top"
656
- "\">contate-nos</a>!"
657
-
658
- #~ msgid "Post Only"
659
- #~ msgstr "Apenas Publicação"
660
-
661
- #~ msgid "Page Only"
662
- #~ msgstr "Apenas Página"
663
-
664
- #~ msgid "Custom Post Type"
665
- #~ msgstr "Tipo de Publicação Personalizada"
666
-
667
- #~ msgid "Post and Page"
668
- #~ msgstr "Publicação e Página"
669
-
670
- #~ msgid "Select which custom post type"
671
- #~ msgstr "Selecione o tipo de publicação personalizada"
672
-
673
- #~ msgid ""
674
- #~ " We just fixed the interrupted posting issue and scheduling issue, if you "
675
- #~ "don't see any tweets you need to re-authentificate your twitter accounts. "
676
- #~ "| <a href=\""
677
- #~ msgstr ""
678
- #~ " Nós corrigimos o problema de interrupção da publicação e o problema de "
679
- #~ "agendamento; se você não vir nenhum tweet, precisará autentificar "
680
- #~ "novamente suas contas do Twitter. | <a href=\""
681
-
682
- #~ msgid "ExcludePosts"
683
- #~ msgstr "ExcluirPublicações"
684
-
685
- #~ msgid "Revive Old Post PRO"
686
- #~ msgstr "Reativar Publicação Antiga PRO"
1
+ # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
+ # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
+ "POT-Creation-Date: 2014-07-16 00:01+0100\n"
8
+ "PO-Revision-Date: 2014-07-16 00:07+0100\n"
9
+ "Last-Translator: Ionut <friends@themeisle.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
+ "X-Generator: Poedit 1.5.7\n"
15
+ "X-Poedit-KeywordsList: _;__;_e\n"
16
+ "X-Poedit-Basepath: ../\n"
17
+ "X-Poedit-SearchPath-0: .\n"
18
+ "X-Poedit-SearchPath-1: inc\n"
19
+
20
+ #: inc/class-remote-notification-client.php:260
21
+ msgid "Dismiss notification"
22
+ msgstr "Dispensar notificação"
23
+
24
+ #: inc/class-remote-notification-client.php:262
25
+ msgid "Dismiss"
26
+ msgstr "Dispensar"
27
+
28
+ #: inc/config.php:24
29
+ msgid "Post Content"
30
+ msgstr "Conteúdo da Publicação"
31
+
32
+ #: inc/config.php:28
33
+ msgid "What do you want to share?"
34
+ msgstr "O que você gostaria de compartilhar?"
35
+
36
+ #: inc/config.php:30
37
+ msgid "Title Only"
38
+ msgstr "Apenas Título"
39
+
40
+ #: inc/config.php:31
41
+ msgid "Body Only"
42
+ msgstr "Apenas Mensagem"
43
+
44
+ #: inc/config.php:32
45
+ msgid "Title & Body"
46
+ msgstr "Título e Mensagem"
47
+
48
+ #: inc/config.php:33
49
+ msgid "Custom Field"
50
+ msgstr "Campo Personalizado"
51
+
52
+ #: inc/config.php:39
53
+ msgid "Post Content Custom Field"
54
+ msgstr "Campo Personalizado do Conteúdo da Publicação"
55
+
56
+ #: inc/config.php:43
57
+ msgid "Which custom field do you want to fetch info from?"
58
+ msgstr "Você deseja extrair informações de qual campo personalizado?"
59
+
60
+ #: inc/config.php:49
61
+ msgid "Additional Text"
62
+ msgstr "Texto Adicional"
63
+
64
+ #: inc/config.php:53
65
+ msgid "Text added to your auto posts"
66
+ msgstr "Texto adicionado às suas publicações automáticas"
67
+
68
+ #: inc/config.php:59
69
+ msgid "Additional Text At"
70
+ msgstr "Texto Adicional em"
71
+
72
+ #: inc/config.php:63
73
+ msgid "Where do you want the text to be added?"
74
+ msgstr "Onde você deseja que o texto seja adicionado?"
75
+
76
+ #: inc/config.php:65
77
+ msgid "Beginning of Post"
78
+ msgstr "Início da Publicação"
79
+
80
+ #: inc/config.php:66
81
+ msgid "End of Post"
82
+ msgstr "Fim da Publicação"
83
+
84
+ #: inc/config.php:72
85
+ msgid "Include Link"
86
+ msgstr "Incluir Link"
87
+
88
+ #: inc/config.php:76
89
+ msgid "Include a link to your post?"
90
+ msgstr "Incluir um link para sua publicação?"
91
+
92
+ #: inc/config.php:78
93
+ msgid "Yes"
94
+ msgstr "Sim"
95
+
96
+ #: inc/config.php:79
97
+ msgid "No"
98
+ msgstr "Não"
99
+
100
+ #: inc/config.php:85
101
+ msgid "Fetch URL From Custom Field"
102
+ msgstr "Extrair URL de Campo Personalizado"
103
+
104
+ #: inc/config.php:89
105
+ msgid "URL will be fetched from a custom field."
106
+ msgstr "A URL será extraída de um campo personalizado."
107
+
108
+ #: inc/config.php:95
109
+ msgid "URL Custom Field"
110
+ msgstr "Campo Personalizado da URL"
111
+
112
+ #: inc/config.php:99
113
+ msgid "URL will be fetched from the specified custom field."
114
+ msgstr "A URL será extraída do campo personalizado especificado."
115
+
116
+ #: inc/config.php:105
117
+ msgid "Use URL Shortner"
118
+ msgstr "Usar Encurtador de URL"
119
+
120
+ #: inc/config.php:117
121
+ msgid "URL Shortner Service"
122
+ msgstr "Serviço de Encurtador de URL"
123
+
124
+ #: inc/config.php:121
125
+ msgid "Shorten the link to your post."
126
+ msgstr "Encurte o link para sua publicação."
127
+
128
+ #: inc/config.php:123
129
+ msgid "wp short url"
130
+ msgstr "url curta wp"
131
+
132
+ #: inc/config.php:125
133
+ msgid "is.gd"
134
+ msgstr "is.gd"
135
+
136
+ #: inc/config.php:126
137
+ msgid "bit.ly"
138
+ msgstr "bit.ly"
139
+
140
+ #: inc/config.php:138
141
+ msgid "Bitly Key"
142
+ msgstr "Chave do Bitly"
143
+
144
+ #: inc/config.php:148
145
+ msgid "Bitly User"
146
+ msgstr "Usuário do Bitly"
147
+
148
+ #: inc/config.php:158
149
+ msgid "Hashtags"
150
+ msgstr "Hashtags"
151
+
152
+ #: inc/config.php:162
153
+ msgid "Include #hashtags in your auto posts?"
154
+ msgstr "Incluir #hashtags em suas publicações automáticas?"
155
+
156
+ #: inc/config.php:164
157
+ msgid "Don't add any hashtags"
158
+ msgstr "Não adicione nenhuma hashtag"
159
+
160
+ #: inc/config.php:165
161
+ msgid "Common hashtags for all shares"
162
+ msgstr "Hashtags comuns para todos os compartilhamentos"
163
+
164
+ #: inc/config.php:166
165
+ msgid "Create hashtags from Categories"
166
+ msgstr "Criar hashtags de Categorias"
167
+
168
+ #: inc/config.php:167
169
+ msgid "Create hashtags from Tags"
170
+ msgstr "Criar hashtags de Marcações"
171
+
172
+ #: inc/config.php:168
173
+ msgid "Create hashtags from Custom Fields"
174
+ msgstr "Criar hashtags de Campos Personalizados"
175
+
176
+ #: inc/config.php:174
177
+ msgid "Common Hashtags"
178
+ msgstr "Hashtags Comuns"
179
+
180
+ #: inc/config.php:178
181
+ msgid "Specify which hashtags you want to be used. eg. #example, #example2"
182
+ msgstr ""
183
+ "Especifique quais hashtags você quer que sejam usadas. como #exemplo, "
184
+ "#exemplo2"
185
+
186
+ #: inc/config.php:184
187
+ msgid "Maximum Hashtags Length"
188
+ msgstr "Extensão Máxima das Hashtags"
189
+
190
+ #: inc/config.php:188
191
+ msgid "Set to 0 (characters) to include all."
192
+ msgstr "Definir para 0 (caracteres) para incluir todos."
193
+
194
+ #: inc/config.php:194
195
+ msgid "Hashtag Custom Field"
196
+ msgstr "Campo Personalizado de Hashtag"
197
+
198
+ #: inc/config.php:198
199
+ msgid "Fetch hashtags from specified custom field"
200
+ msgstr "Extraia hashtags do campo personalizado especificado"
201
+
202
+ #: inc/config.php:204
203
+ msgid "Minimum interval between shares"
204
+ msgstr "Intervalo mínimo entre compartilhamentos"
205
+
206
+ #: inc/config.php:208
207
+ msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
208
+ msgstr ""
209
+ "Tempo mínimo entre compartilhamentos (Hora/Horas), 0,4 também pode ser usado."
210
+
211
+ #: inc/config.php:214
212
+ msgid "Minimum age of post to be eligible for sharing"
213
+ msgstr "Idade mínima da publicação para ser elegível para compartilhar"
214
+
215
+ #: inc/config.php:218 inc/config.php:228
216
+ msgid "Day/Days - 0 for Disabled"
217
+ msgstr "Dia/Dias - 0 para Desativada"
218
+
219
+ #: inc/config.php:224
220
+ msgid "Maximum age of post to be eligible for sharing"
221
+ msgstr "Idade máxima da publicação para ser elegível para compartilhar"
222
+
223
+ #: inc/config.php:234
224
+ msgid "Number of Posts to share"
225
+ msgstr "Número de Publicações a compartilhar"
226
+
227
+ #: inc/config.php:238
228
+ msgid "Number of posts to share each time"
229
+ msgstr "Número de publicações a compartilhar cada vez"
230
+
231
+ #: inc/config.php:246
232
+ msgid "Post with Image"
233
+ msgstr "Publicar com Imagem"
234
+
235
+ #: inc/config.php:250
236
+ msgid "Check if you want to add the post featured image to the share"
237
+ msgstr ""
238
+ "Marque se deseja adicionar ao compartilhamento a imagem em destaque na "
239
+ "publicação"
240
+
241
+ #: inc/config.php:256
242
+ msgid "Share old posts more than once"
243
+ msgstr "Compartilhar publicações antigas mais de uma vez"
244
+
245
+ #: inc/config.php:260
246
+ msgid ""
247
+ "By default once a post is shared it will not be shared again until you stop/"
248
+ "start the plugin"
249
+ msgstr ""
250
+ "Por padrão, quando uma publicação é compartilhada, ela não será "
251
+ "compartilhada novamente até você parar/iniciar o plugin"
252
+
253
+ #: inc/config.php:268
254
+ msgid "Post Type"
255
+ msgstr "Tipo de Publicação"
256
+
257
+ #: inc/config.php:272
258
+ msgid "What type of items do you want to share?"
259
+ msgstr "Que tipo de itens que você deseja compartilhar?"
260
+
261
+ #: inc/config.php:279
262
+ msgid "Google Analytics Campaign Tracking"
263
+ msgstr "Monitoramento de Campanha do Google Analytics"
264
+
265
+ #: inc/config.php:283
266
+ msgid ""
267
+ "Enabling Campaign Tracking you would be able to see how much traffic Revive "
268
+ "Old Post generated."
269
+ msgstr ""
270
+ "Ao ativar o Monitoramento de Campanha, você pode ver quanto tráfego foi "
271
+ "gerado pelo Reativar Publicação Antiga."
272
+
273
+ #: inc/config.php:289
274
+ msgid "Exclude Specific Categories"
275
+ msgstr "Excluir Categorias Específicas"
276
+
277
+ #: inc/config.php:293
278
+ msgid ""
279
+ "Select which categories do you want to exclude to share from? Blank - None"
280
+ msgstr ""
281
+ "Selecione as categorias que você deseja excluir do compartilhamento. Em "
282
+ "branco - Nenhuma"
283
+
284
+ #: inc/core.php:81
285
+ msgid "Tweet Old Post is already active!"
286
+ msgstr "Tweetar Publicação Antiga já está ativo!"
287
+
288
+ #: inc/core.php:101
289
+ #, fuzzy
290
+ msgid "ROP is already inactive!"
291
+ msgstr "Tweetar Publicação Antiga já está inativo!"
292
+
293
+ #: inc/core.php:811
294
+ msgid "Custom Tweet User Interval"
295
+ msgstr "Intervalo do Usuário do Tweet Personalizado"
296
+
297
+ #: inc/core.php:1127
298
+ msgid "Could not connect to Twitter!"
299
+ msgstr "Não foi possível conectar ao Twitter!"
300
+
301
+ #: inc/core.php:1385
302
+ msgid "This is only available in the"
303
+ msgstr "Isso só está disponível na"
304
+
305
+ #: inc/core.php:1385
306
+ msgid "PRO version"
307
+ msgstr "versão PRO"
308
+
309
+ #: inc/core.php:1644
310
+ msgid "Exclude Posts"
311
+ msgstr "Excluir Publicações"
312
+
313
+ #: inc/exclude-posts.php:24
314
+ msgid "Tweet Old Post Options Updated."
315
+ msgstr "Opções de Tweetar Publicação Antiga Atualizadas."
316
+
317
+ #: inc/exclude-posts.php:63
318
+ msgid "No post selected please select a post to be excluded."
319
+ msgstr ""
320
+ "Nenhuma publicação selecionada; selecione uma publicação a ser excluída."
321
+
322
+ #: inc/exclude-posts.php:70
323
+ msgid "Posts excluded successfully."
324
+ msgstr "Publicações excluídas com sucesso."
325
+
326
+ #: inc/exclude-posts.php:155
327
+ msgid "Selected Categories"
328
+ msgstr "Categorias Selecionadas"
329
+
330
+ #: inc/exclude-posts.php:157
331
+ msgid "Filter"
332
+ msgstr "Filtrar"
333
+
334
+ #: inc/exclude-posts.php:168
335
+ msgid "&laquo;"
336
+ msgstr "«"
337
+
338
+ #: inc/exclude-posts.php:169
339
+ msgid "&raquo;"
340
+ msgstr "»"
341
+
342
+ #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
343
+ #, php-format
344
+ msgid "Displaying %s&#8211;%s of %s"
345
+ msgstr "Exibindo %s&#8211;%s de %s"
346
+
347
+ #: inc/exclude-posts.php:356
348
+ msgid "No Posts found. Review your search or filter criteria/term."
349
+ msgstr ""
350
+ "Nenhuma publicação encontrada. Revise seus critérios/termos de pesquisa ou "
351
+ "de filtro."
352
+
353
+ #: inc/exclude-posts.php:363
354
+ msgid ""
355
+ "You do not have enough permission to set the option. Please contact your "
356
+ "admin."
357
+ msgstr ""
358
+ "Você não tem permissão suficiente para configurar a opção. Entre em contato "
359
+ "com seu administrador."
360
+
361
+ #: inc/view-exclude.php:4 inc/view.php:3
362
+ msgid "After 6 months of hard work, we have just released"
363
+ msgstr "Depois de 6 meses de trabalho duro, acabamos de lançar"
364
+
365
+ #: inc/view-exclude.php:4 inc/view.php:3
366
+ msgid "the island of WordPress themes."
367
+ msgstr "nossos temas de WordPress."
368
+
369
+ #: inc/view-exclude.php:5 inc/view.php:4
370
+ msgid "Show Me"
371
+ msgstr "Mostrar"
372
+
373
+ #: inc/view-exclude.php:15 inc/view.php:14
374
+ msgid "by"
375
+ msgstr "por"
376
+
377
+ #: inc/view-exclude.php:18 inc/view.php:17
378
+ msgid "Show your love"
379
+ msgstr "Você gostou?"
380
+
381
+ #: inc/view-exclude.php:19 inc/view.php:18
382
+ msgid "Leave A Review"
383
+ msgstr "Faça uma Avaliação"
384
+
385
+ #: inc/view-exclude.php:30
386
+ msgid "Revive Old Post is set to share on a"
387
+ msgstr "Reativar Publicação Antiga está definido para compartilhar em um"
388
+
389
+ #: inc/view-exclude.php:32 inc/view.php:31
390
+ msgid "hours interval, "
391
+ msgstr "intervalo de horas, "
392
+
393
+ #: inc/view-exclude.php:33 inc/view.php:32
394
+ msgid "and the next share will take place in: "
395
+ msgstr "e o próximo compartilhamento será feito em: "
396
+
397
+ #: inc/view-exclude.php:38
398
+ msgid "Revive Old Post is not set to share!"
399
+ msgstr "Reativar Publicação Antiga não está definido para compartilhar!"
400
+
401
+ #: inc/view-exclude.php:42
402
+ #, fuzzy
403
+ msgid ""
404
+ "You have selected following POST IDs to be excluded from tweeting: <span "
405
+ "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
406
+ "Note: If you have made any change and dint hit 'Exclude Selected' button "
407
+ "changes will not be saved. "
408
+ msgstr ""
409
+ "Você selecionou os seguintes IDs de PUBLICAÇÃO a serem excluídos dos tweets: "
410
+ "<span id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
411
+ "Observação: Se você fez alguma alteração e não pressionou o botão \"Excluir "
412
+ "Selecionados\", as alterações não serão salvas. "
413
+
414
+ #: inc/view.php:29
415
+ msgid "Revive Old Post is set to post on a"
416
+ msgstr "Reativar Publicação Antiga está definido para publicar em um"
417
+
418
+ #: inc/view.php:37
419
+ msgid "Revive Old Post is not set to post!"
420
+ msgstr "Reativar Publicação Antiga não está definido para publicar!"
421
+
422
+ #: inc/view.php:42
423
+ msgid ""
424
+ "Once you click start sharing a post will be sent in 15 sec, also here you "
425
+ "can see the error message if is any."
426
+ msgstr ""
427
+ "Depois de clicar em Iniciar Compartilhamento, uma publicação será enviada em "
428
+ "15 segundos; você também pode ver aqui a mensagem de erro, se for o caso."
429
+
430
+ #: inc/view.php:52
431
+ msgid "Twitter Login"
432
+ msgstr "Login do Twitter"
433
+
434
+ #: inc/view.php:53
435
+ msgid "Login using your Twitter account."
436
+ msgstr "Fazer login usando sua conta do Twitter."
437
+
438
+ #: inc/view.php:77 inc/view.php:111
439
+ msgid "Add Account"
440
+ msgstr "Adicionar Conta"
441
+
442
+ #: inc/view.php:84
443
+ msgid "Facebook Login"
444
+ msgstr "Login do Facebook"
445
+
446
+ #: inc/view.php:85
447
+ msgid "Login using your Facebook account."
448
+ msgstr "Fazer login usando sua conta do Facebook."
449
+
450
+ #: inc/view.php:109
451
+ msgid "Authorize"
452
+ msgstr "Autorizar"
453
+
454
+ #: inc/view.php:118
455
+ msgid "Linkedin Login"
456
+ msgstr "Login do Linkedin"
457
+
458
+ #: inc/view.php:119
459
+ msgid "Login using your Linkedin account."
460
+ msgstr "Fazer login usando sua conta do Linkedin."
461
+
462
+ #: inc/view.php:141
463
+ msgid "Add account"
464
+ msgstr "Adicionar conta"
465
+
466
+ #: inc/view.php:154
467
+ msgid "Select All"
468
+ msgstr "Selecionar Tudo"
469
+
470
+ #: inc/view.php:165
471
+ msgid "Reset"
472
+ msgstr "Redefinir"
473
+
474
+ #: inc/view.php:166
475
+ msgid "Save"
476
+ msgstr "Salvar"
477
+
478
+ #: inc/view.php:167
479
+ msgid "Start Sharing"
480
+ msgstr "Iniciar Compartilhamento"
481
+
482
+ #: inc/view.php:168
483
+ msgid "Stop Sharing"
484
+ msgstr "Parar Compartilhamento"
485
+
486
+ #: inc/view.php:169
487
+ msgid "See Sample Post"
488
+ msgstr "Ver Amostra de Publicação"
489
+
490
+ #: inc/view.php:171
491
+ msgid ""
492
+ "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
493
+ msgstr ""
494
+ "Não somos de nenhuma forma afiliados ou parceiros do Twitter/Facebook/"
495
+ "Linkedin."
496
+
497
+ #: inc/view.php:176
498
+ msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
499
+ msgstr ""
500
+ "Faça Upgrade de Tweetar Publicação Antiga por apenas $9,99 - Faça Upgrade "
501
+ "para Pro Agora!"
502
+
503
+ #: inc/view.php:177
504
+ msgid "ThemeIsle - Deadly Simple WordPress Themes"
505
+ msgstr "ThemeIsle - Temas de WordPress Extremamente Simples"
506
+
507
+ #: inc/view.php:178
508
+ msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
509
+ msgstr "ThemeIsle - Promova Nossos Temas e Plugins e Ganhe 55% de Comissão"
510
+
511
+ #: inc/view.php:185
512
+ #, fuzzy
513
+ msgid "Sample Post Preview"
514
+ msgstr "Ver Amostra de Publicação"
515
+
516
+ #: inc/view.php:187 inc/view.php:196 inc/view.php:242 inc/view.php:289
517
+ msgid "Close preview"
518
+ msgstr ""
519
+
520
+ #: inc/view.php:188
521
+ msgid "Share now"
522
+ msgstr ""
523
+
524
+ #: inc/view.php:194
525
+ msgid "Choose a Profile or Page"
526
+ msgstr ""
527
+
528
+ #: inc/view.php:202
529
+ msgid "Add Your Facebook Account Following The Instructions On The Left"
530
+ msgstr ""
531
+
532
+ #: inc/view.php:206 inc/view.php:252
533
+ msgid "Go on"
534
+ msgstr ""
535
+
536
+ #: inc/view.php:207
537
+ msgid "Click on <strong>Create New App</strong> from the top right corner"
538
+ msgstr ""
539
+
540
+ #: inc/view.php:208
541
+ msgid ""
542
+ "Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and "
543
+ "click on Create App"
544
+ msgstr ""
545
+
546
+ #: inc/view.php:209
547
+ msgid ""
548
+ "Once you arrive on the app dashboard, copy your <strong>App ID</strong> and "
549
+ "<strong>App Secret</strong> in the fields on the right"
550
+ msgstr ""
551
+
552
+ #: inc/view.php:210
553
+ msgid ""
554
+ "Go on Settings tab from the left sidebar menu add the contact email and "
555
+ "click on <strong>Add Platform</strong> and select <strong>Website</strong>"
556
+ msgstr ""
557
+
558
+ #: inc/view.php:211
559
+ msgid ""
560
+ "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into App "
561
+ "Domains and Site URL fields and <strong>Save</strong>"
562
+ msgstr ""
563
+
564
+ #: inc/view.php:212
565
+ msgid ""
566
+ "Go on Status & Review tab and set your app live from the top-right switch."
567
+ msgstr ""
568
+
569
+ #: inc/view.php:213 inc/view.php:259
570
+ msgid "Now everything is done, click on <strong>Authorize App</strong> button."
571
+ msgstr ""
572
+
573
+ #: inc/view.php:219
574
+ #, fuzzy
575
+ msgid "Facebook App ID"
576
+ msgstr "Login do Facebook"
577
+
578
+ #: inc/view.php:220
579
+ msgid "ID from your app created on facebook website."
580
+ msgstr ""
581
+
582
+ #: inc/view.php:231
583
+ msgid "Facebook App Secret"
584
+ msgstr ""
585
+
586
+ #: inc/view.php:232
587
+ msgid "Secret from your app created on facebook website. "
588
+ msgstr ""
589
+
590
+ #: inc/view.php:240 inc/view.php:287
591
+ #, fuzzy
592
+ msgid "Authorize App"
593
+ msgstr "Autorizar"
594
+
595
+ #: inc/view.php:248
596
+ msgid "Add Your Linkedin Account Following The Instructions On The Left"
597
+ msgstr ""
598
+
599
+ #: inc/view.php:253
600
+ msgid ""
601
+ "Enter the required details and pay special attention to the further fields :"
602
+ msgstr ""
603
+
604
+ #: inc/view.php:254
605
+ msgid "Make sure you set Live Status to LIVE"
606
+ msgstr ""
607
+
608
+ #: inc/view.php:255
609
+ msgid "Default Scope should have r_basicprofile and rw_nus checked"
610
+ msgstr ""
611
+
612
+ #: inc/view.php:256
613
+ msgid ""
614
+ "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into OAuth "
615
+ "2.0 Redirect URLs"
616
+ msgstr ""
617
+
618
+ #: inc/view.php:257
619
+ msgid ""
620
+ "Once all required fields are filled click on Add Application button, get the "
621
+ "API Key and Secret Key and paste them in the fields on the right"
622
+ msgstr ""
623
+
624
+ #: inc/view.php:265
625
+ #, fuzzy
626
+ msgid "Linkedin API Key"
627
+ msgstr "Login do Linkedin"
628
+
629
+ #: inc/view.php:266
630
+ msgid "API Key that you get once you create an app"
631
+ msgstr ""
632
+
633
+ #: inc/view.php:277
634
+ msgid "Linkedin Secret Key"
635
+ msgstr ""
636
+
637
+ #: inc/view.php:278
638
+ msgid "Secret Key that you get once you create an app"
639
+ msgstr ""
640
+
641
+ #. Description of the plugin/theme
642
+ msgid ""
643
+ "Wordpress plugin that helps you to keeps your old posts alive by sharing "
644
+ "them and driving more traffic to them from twitter/facebook or linkedin. It "
645
+ "also helps you to promote your content. You can set time and no of posts to "
646
+ "share to drive more traffic.For questions, comments, or feature requests, <a "
647
+ "href=\"https://themeisle.com/contact/?"
648
+ "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
649
+ msgstr ""
650
+ "Plugin do Wordpress que ajuda você a manter suas publicações antigas ativas "
651
+ "por compartilhá-las e gerar mais tráfego para elas usando o Twitter/Facebook "
652
+ "ou LinkedIn. Ele também ajuda a promover seu conteúdo. Você pode definir a "
653
+ "hora e o número de publicações a compartilhar para gerar mais tráfego. Par "
654
+ "dúvidas, comentários ou solicitações de recursos, <a href=\"https://themeisle."
655
+ "com/contact/?utm_source=plugindesc&utm_medium=announce&utm_campaign=top"
656
+ "\">contate-nos</a>!"
657
+
658
+ #~ msgid "Post Only"
659
+ #~ msgstr "Apenas Publicação"
660
+
661
+ #~ msgid "Page Only"
662
+ #~ msgstr "Apenas Página"
663
+
664
+ #~ msgid "Custom Post Type"
665
+ #~ msgstr "Tipo de Publicação Personalizada"
666
+
667
+ #~ msgid "Post and Page"
668
+ #~ msgstr "Publicação e Página"
669
+
670
+ #~ msgid "Select which custom post type"
671
+ #~ msgstr "Selecione o tipo de publicação personalizada"
672
+
673
+ #~ msgid ""
674
+ #~ " We just fixed the interrupted posting issue and scheduling issue, if you "
675
+ #~ "don't see any tweets you need to re-authentificate your twitter accounts. "
676
+ #~ "| <a href=\""
677
+ #~ msgstr ""
678
+ #~ " Nós corrigimos o problema de interrupção da publicação e o problema de "
679
+ #~ "agendamento; se você não vir nenhum tweet, precisará autentificar "
680
+ #~ "novamente suas contas do Twitter. | <a href=\""
681
+
682
+ #~ msgid "ExcludePosts"
683
+ #~ msgstr "ExcluirPublicações"
684
+
685
+ #~ msgid "Revive Old Post PRO"
686
+ #~ msgstr "Reativar Publicação Antiga PRO"
languages/tweet-old-post-sk_SK.po CHANGED
@@ -1,658 +1,658 @@
1
- # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
- # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
- "POT-Creation-Date: 2014-07-15 23:58+0100\n"
8
- "PO-Revision-Date: 2014-08-05 13:28+0100\n"
9
- "Last-Translator: Patrik Žec (PATWIST) <patrik.zec@gmail.com>\n"
10
- "Language-Team: Patrik Žec (PATWIST), www.patwist.com <patrik.zec@gmail.com>\n"
11
- "MIME-Version: 1.0\n"
12
- "Content-Type: text/plain; charset=UTF-8\n"
13
- "Content-Transfer-Encoding: 8bit\n"
14
- "X-Generator: Poedit 1.6.4\n"
15
- "X-Poedit-KeywordsList: _;__;_e\n"
16
- "X-Poedit-Basepath: ../\n"
17
- "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18
- "Language: sk_SK\n"
19
- "X-Poedit-SearchPath-0: .\n"
20
- "X-Poedit-SearchPath-1: inc\n"
21
-
22
- #: inc/class-remote-notification-client.php:260
23
- msgid "Dismiss notification"
24
- msgstr "Zamietnuť oznámenia"
25
-
26
- #: inc/class-remote-notification-client.php:262
27
- msgid "Dismiss"
28
- msgstr "Zamietnuť"
29
-
30
- #: inc/config.php:24
31
- msgid "Post Content"
32
- msgstr "Obsah príspevku"
33
-
34
- #: inc/config.php:28
35
- msgid "What do you want to share?"
36
- msgstr "Čo chcete zdieľať?"
37
-
38
- #: inc/config.php:30
39
- msgid "Title Only"
40
- msgstr "Len názov"
41
-
42
- #: inc/config.php:31
43
- msgid "Body Only"
44
- msgstr "Len obsah"
45
-
46
- #: inc/config.php:32
47
- msgid "Title & Body"
48
- msgstr "Názov a obsah"
49
-
50
- #: inc/config.php:33
51
- msgid "Custom Field"
52
- msgstr "Vlastne pole"
53
-
54
- #: inc/config.php:39
55
- msgid "Post Content Custom Field"
56
- msgstr "Vlastné polia obsahu príspevku"
57
-
58
- #: inc/config.php:43
59
- msgid "Which custom field do you want to fetch info from?"
60
- msgstr "Ktoré vlastné pole chcete vložiť do príspevku?"
61
-
62
- #: inc/config.php:49
63
- msgid "Additional Text"
64
- msgstr "Ďalší text"
65
-
66
- #: inc/config.php:53
67
- msgid "Text added to your auto posts"
68
- msgstr "Text pridaný do príspevkov"
69
-
70
- #: inc/config.php:59
71
- msgid "Additional Text At"
72
- msgstr "Ďalší text"
73
-
74
- #: inc/config.php:63
75
- msgid "Where do you want the text to be added?"
76
- msgstr "Kam chcete text pridať?"
77
-
78
- #: inc/config.php:65
79
- msgid "Beginning of Post"
80
- msgstr "Začiatok príspevku"
81
-
82
- #: inc/config.php:66
83
- msgid "End of Post"
84
- msgstr "Koniec príspevku"
85
-
86
- #: inc/config.php:72
87
- msgid "Include Link"
88
- msgstr "Vložiť odkaz"
89
-
90
- #: inc/config.php:76
91
- msgid "Include a link to your post?"
92
- msgstr "Vložiť odkaz do príspevku?"
93
-
94
- #: inc/config.php:78
95
- msgid "Yes"
96
- msgstr "Áno"
97
-
98
- #: inc/config.php:79
99
- msgid "No"
100
- msgstr "Nie"
101
-
102
- #: inc/config.php:85
103
- msgid "Fetch URL From Custom Field"
104
- msgstr "Načítať URL z vlastného poľa"
105
-
106
- #: inc/config.php:89
107
- msgid "URL will be fetched from a custom field."
108
- msgstr "URL bude načítaná z vlastného poľa"
109
-
110
- #: inc/config.php:95
111
- msgid "URL Custom Field"
112
- msgstr "URL vlastného poľa"
113
-
114
- #: inc/config.php:99
115
- msgid "URL will be fetched from the specified custom field."
116
- msgstr "URL bude načítaná z vlastného poľa"
117
-
118
- #: inc/config.php:105
119
- msgid "Use URL Shortner"
120
- msgstr "Použiť skracovač odkazov"
121
-
122
- #: inc/config.php:117
123
- msgid "URL Shortner Service"
124
- msgstr "Služba na skrátenie odkazov"
125
-
126
- #: inc/config.php:121
127
- msgid "Shorten the link to your post."
128
- msgstr "Skrátenie odkazu v príspevku."
129
-
130
- #: inc/config.php:123
131
- msgid "wp short url"
132
- msgstr "wp short url"
133
-
134
- #: inc/config.php:125
135
- msgid "is.gd"
136
- msgstr "is.gd"
137
-
138
- #: inc/config.php:126
139
- msgid "bit.ly"
140
- msgstr "bit.ly"
141
-
142
- #: inc/config.php:138
143
- msgid "Bitly Key"
144
- msgstr "Bitly kľúč"
145
-
146
- #: inc/config.php:148
147
- msgid "Bitly User"
148
- msgstr "Bitly používateľ"
149
-
150
- #: inc/config.php:158
151
- msgid "Hashtags"
152
- msgstr "Hashtagy"
153
-
154
- #: inc/config.php:162
155
- msgid "Include #hashtags in your auto posts?"
156
- msgstr "Zahrnúť #hashtagy do príspevkov?"
157
-
158
- #: inc/config.php:164
159
- msgid "Don't add any hashtags"
160
- msgstr "Nepridávať hashtagy"
161
-
162
- #: inc/config.php:165
163
- msgid "Common hashtags for all shares"
164
- msgstr "Spoločné hashtagy pre všetky zdieľania"
165
-
166
- #: inc/config.php:166
167
- msgid "Create hashtags from Categories"
168
- msgstr "Použiť hashtagy z názvov kategórií"
169
-
170
- #: inc/config.php:167
171
- msgid "Create hashtags from Tags"
172
- msgstr "Použiť hashtagy zo štítkov"
173
-
174
- #: inc/config.php:168
175
- msgid "Create hashtags from Custom Fields"
176
- msgstr "Použiť hashtagy z vlastných polí"
177
-
178
- #: inc/config.php:174
179
- msgid "Common Hashtags"
180
- msgstr "Spoločné hashtagy"
181
-
182
- #: inc/config.php:178
183
- msgid "Specify which hashtags you want to be used. eg. #example, #example2"
184
- msgstr "Vyberte ktoré hashtagy chcete použiť. napríklad. #priklad1, #priklad2"
185
-
186
- #: inc/config.php:184
187
- msgid "Maximum Hashtags Length"
188
- msgstr "Maximálna dĺžka hashtagu"
189
-
190
- #: inc/config.php:188
191
- msgid "Set to 0 (characters) to include all."
192
- msgstr "Zadajte 0 znakov pre vloženie akéhokoľvek dlhého hashtagu."
193
-
194
- #: inc/config.php:194
195
- msgid "Hashtag Custom Field"
196
- msgstr "Vlastné polia hashtagy"
197
-
198
- #: inc/config.php:198
199
- msgid "Fetch hashtags from specified custom field"
200
- msgstr "Načítať hashtagy z vlastného poľa"
201
-
202
- #: inc/config.php:204
203
- msgid "Minimum interval between shares"
204
- msgstr "Minimálny interval medzi zdieľaniami"
205
-
206
- #: inc/config.php:208
207
- msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
208
- msgstr ""
209
- "Minimálny časový interval medzi zdieľaniami (Hodina/Hodiny), 0.3 pre pol "
210
- "hodiny"
211
-
212
- #: inc/config.php:214
213
- msgid "Minimum age of post to be eligible for sharing"
214
- msgstr "Minimálny vek príspevku aby mohol byť zdieľaný"
215
-
216
- #: inc/config.php:218 inc/config.php:228
217
- msgid "Day/Days - 0 for Disabled"
218
- msgstr "Deň/Dni - 0 pre zrušenie"
219
-
220
- #: inc/config.php:224
221
- msgid "Maximum age of post to be eligible for sharing"
222
- msgstr "Maximálny vek príspevku aby mohol byť zdieľaný"
223
-
224
- #: inc/config.php:234
225
- msgid "Number of Posts to share"
226
- msgstr "Počet príspevkov pre zdieľanie"
227
-
228
- #: inc/config.php:238
229
- msgid "Number of posts to share each time"
230
- msgstr "Počet príspevkov pre zdieľanie v určitom čase"
231
-
232
- #: inc/config.php:246
233
- msgid "Post with Image"
234
- msgstr "Príspevkov z obrázkom"
235
-
236
- #: inc/config.php:250
237
- msgid "Check if you want to add the post featured image to the share"
238
- msgstr "Zariačknite ak chcete pridať obrázok na zdieľanie"
239
-
240
- #: inc/config.php:256
241
- msgid "Share old posts more than once"
242
- msgstr "Zdieľať staré príspevky viackrát"
243
-
244
- #: inc/config.php:260
245
- msgid ""
246
- "By default once a post is shared it will not be shared again until you stop/"
247
- "start the plugin"
248
- msgstr ""
249
- "Predvolené nastavenie je že ak sa raz príspevok zdieľa nebude zdieľaný "
250
- "viackrát pokiaľ nedeaktivujete a aktivujete plugin."
251
-
252
- #: inc/config.php:268
253
- msgid "Post Type"
254
- msgstr "Typ príspevku"
255
-
256
- #: inc/config.php:272
257
- msgid "What type of items do you want to share?"
258
- msgstr "Aký typ položiek chcete zdieľať?"
259
-
260
- #: inc/config.php:279
261
- msgid "Google Analytics Campaign Tracking"
262
- msgstr "Google Analytics sledovacia kampaň"
263
-
264
- #: inc/config.php:283
265
- msgid ""
266
- "Enabling Campaign Tracking you would be able to see how much traffic Revive "
267
- "Old Post generated."
268
- msgstr ""
269
- "Povolením sledovania budete môcť vidieť koľko návštevnosti máte vďaka Revive "
270
- "Old Post."
271
-
272
- #: inc/config.php:289
273
- msgid "Exclude Specific Categories"
274
- msgstr "Vylúčenie špecifických kategórií"
275
-
276
- #: inc/config.php:293
277
- msgid ""
278
- "Select which categories do you want to exclude to share from? Blank - None"
279
- msgstr "Vyberte, ktoré kategórie chcete vylúčiť zo zdieľania, prázdne - žiadne"
280
-
281
- #: inc/core.php:81
282
- msgid "Tweet Old Post is already active!"
283
- msgstr "Tweet Old Post už je aktívny!"
284
-
285
- #: inc/core.php:101
286
- msgid "ROP is already inactive!"
287
- msgstr "ROP už je neaktívne!"
288
-
289
- #: inc/core.php:811
290
- msgid "Custom Tweet User Interval"
291
- msgstr "Vlastný interval tweetovania"
292
-
293
- #: inc/core.php:1127
294
- msgid "Could not connect to Twitter!"
295
- msgstr "Nedá sa pripojiť na Twitter!"
296
-
297
- #: inc/core.php:1385
298
- msgid "This is only available in the"
299
- msgstr "K dispozícií len v"
300
-
301
- #: inc/core.php:1385
302
- msgid "PRO version"
303
- msgstr "PRO verzia"
304
-
305
- #: inc/core.php:1644
306
- msgid "Exclude Posts"
307
- msgstr "Vylúčiť príspevky"
308
-
309
- #: inc/exclude-posts.php:24
310
- msgid "Tweet Old Post Options Updated."
311
- msgstr "Nastavenia Tweet Ols Post aktualizované."
312
-
313
- #: inc/exclude-posts.php:63
314
- msgid "No post selected please select a post to be excluded."
315
- msgstr ""
316
- "Nie sú vybrané žiadne príspevky, prosím vyberte príspevky, ktoré majú byť "
317
- "vylúčené."
318
-
319
- #: inc/exclude-posts.php:70
320
- msgid "Posts excluded successfully."
321
- msgstr "Úspešné vylúčenie príspevkov."
322
-
323
- #: inc/exclude-posts.php:155
324
- msgid "Selected Categories"
325
- msgstr "Vybrané kategórie"
326
-
327
- #: inc/exclude-posts.php:157
328
- msgid "Filter"
329
- msgstr "Filter"
330
-
331
- #: inc/exclude-posts.php:168
332
- msgid "&laquo;"
333
- msgstr "&laquo;"
334
-
335
- #: inc/exclude-posts.php:169
336
- msgid "&raquo;"
337
- msgstr "&raquo;"
338
-
339
- #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
340
- #, php-format
341
- msgid "Displaying %s&#8211;%s of %s"
342
- msgstr "Zobrazujem %s&#8211;%s z %s"
343
-
344
- #: inc/exclude-posts.php:356
345
- msgid "No Posts found. Review your search or filter criteria/term."
346
- msgstr "Nenájdené žiadne príspevky. Skontrolujte zadané kritéria."
347
-
348
- #: inc/exclude-posts.php:363
349
- msgid ""
350
- "You do not have enough permission to set the option. Please contact your "
351
- "admin."
352
- msgstr "Nemáte dostatočné povolenia na nastavenie. Prosím kontakujte správcu."
353
-
354
- #: inc/view-exclude.php:4 inc/view.php:3
355
- msgid "After 6 months of hard work, we have just released"
356
- msgstr "Po 6. mesiacoch tvrdej práce sme práve vydali"
357
-
358
- #: inc/view-exclude.php:4 inc/view.php:3
359
- msgid "the island of WordPress themes."
360
- msgstr "ostrov WordPress tém."
361
-
362
- #: inc/view-exclude.php:5 inc/view.php:4
363
- msgid "Show Me"
364
- msgstr "Zobraziť"
365
-
366
- #: inc/view-exclude.php:15 inc/view.php:14
367
- msgid "by"
368
- msgstr "podľa"
369
-
370
- #: inc/view-exclude.php:18 inc/view.php:17
371
- msgid "Show your love"
372
- msgstr "Ukážte svoju lásku"
373
-
374
- #: inc/view-exclude.php:19 inc/view.php:18
375
- msgid "Leave A Review"
376
- msgstr "Zanechať hodnotenie/komentár"
377
-
378
- #: inc/view-exclude.php:30
379
- msgid "Revive Old Post is set to share on a"
380
- msgstr "Revive Old Post je nastavený pre zdieľanie na"
381
-
382
- #: inc/view-exclude.php:32 inc/view.php:31
383
- msgid "hours interval, "
384
- msgstr "hodinové intervaly,"
385
-
386
- #: inc/view-exclude.php:33 inc/view.php:32
387
- msgid "and the next share will take place in: "
388
- msgstr "a ďalšie zdieľanie bude v:"
389
-
390
- #: inc/view-exclude.php:38
391
- msgid "Revive Old Post is not set to share!"
392
- msgstr "Revive Old Post nie je nastavený na zdieľanie"
393
-
394
- #: inc/view-exclude.php:42
395
- msgid ""
396
- "You have selected following POST IDs to be excluded from tweeting: <span "
397
- "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
398
- "Note: If you have made any change and dint hit 'Exclude Selected' button "
399
- "changes will not be saved. "
400
- msgstr ""
401
- "Vybrali ste nasledujúce ID príspevkov, ktoré budú vylúčené zo zdieľania: "
402
- "<span id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
403
- "Poznámka: Ak ste vykonali akékoľvek zmeny a neklikli na tlačidlo \"Vylúčiť "
404
- "vybrané\", zmeny nebudú uložené."
405
-
406
- #: inc/view.php:29
407
- msgid "Revive Old Post is set to post on a"
408
- msgstr "Revive Old Post je nastavený na zdieľanie na"
409
-
410
- #: inc/view.php:37
411
- msgid "Revive Old Post is not set to post!"
412
- msgstr "Revive Old Post nie je nastavený na zdieľanie!"
413
-
414
- #: inc/view.php:42
415
- msgid ""
416
- "Once you click start sharing a post will be sent in 15 sec, also here you "
417
- "can see the error message if is any."
418
- msgstr ""
419
- "Po kliknutí na tlačidlo spustiť zdieľanie bude príspevok zdieľaný za 15 "
420
- "sekúnd, taktiež tu budete môcť vidieť prípadne chybové hlásenia."
421
-
422
- #: inc/view.php:52
423
- msgid "Twitter Login"
424
- msgstr "Twitter prihlásenie"
425
-
426
- #: inc/view.php:53
427
- msgid "Login using your Twitter account."
428
- msgstr "Prihlásiť sa pomocou Twitter účtu."
429
-
430
- #: inc/view.php:77 inc/view.php:111
431
- msgid "Add Account"
432
- msgstr "Pridať účet"
433
-
434
- #: inc/view.php:84
435
- msgid "Facebook Login"
436
- msgstr "Facebook prihlásenie"
437
-
438
- #: inc/view.php:85
439
- msgid "Login using your Facebook account."
440
- msgstr "Prihlásiť sa pomocou Facebook účtu."
441
-
442
- #: inc/view.php:109
443
- msgid "Authorize"
444
- msgstr "Autorizovať"
445
-
446
- #: inc/view.php:118
447
- msgid "Linkedin Login"
448
- msgstr "Linkedin prihlásenie"
449
-
450
- #: inc/view.php:119
451
- msgid "Login using your Linkedin account."
452
- msgstr "Prihlásiť sa pomocou LinkedIn účtu."
453
-
454
- #: inc/view.php:141
455
- msgid "Add account"
456
- msgstr "Pridať účet"
457
-
458
- #: inc/view.php:154
459
- msgid "Select All"
460
- msgstr "Vybrať všetko"
461
-
462
- #: inc/view.php:165
463
- msgid "Reset"
464
- msgstr "Obnoviť"
465
-
466
- #: inc/view.php:166
467
- msgid "Save"
468
- msgstr "Uložiť"
469
-
470
- #: inc/view.php:167
471
- msgid "Start Sharing"
472
- msgstr "Spustiť zdieľanie"
473
-
474
- #: inc/view.php:168
475
- msgid "Stop Sharing"
476
- msgstr "Vypnúť zdieľanie"
477
-
478
- #: inc/view.php:169
479
- msgid "See Sample Post"
480
- msgstr "Pozrieť ukážkový príspevok"
481
-
482
- #: inc/view.php:171
483
- msgid ""
484
- "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
485
- msgstr "Nie sme partnerom Twitteru/Facebooku/LinkedInu."
486
-
487
- #: inc/view.php:176
488
- msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
489
- msgstr "Prejdite na PRO verziu Tweet Old Post len za 9,99$!"
490
-
491
- #: inc/view.php:177
492
- msgid "ThemeIsle - Deadly Simple WordPress Themes"
493
- msgstr "ThemeIsle - Jednoduché WordPress témy"
494
-
495
- #: inc/view.php:178
496
- msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
497
- msgstr "ThemeIsle - Propagujte naše témy a pluginy a získajte 55% províziu"
498
-
499
- #: inc/view.php:185
500
- msgid "Sample Post Preview"
501
- msgstr "Ukážka príspevku"
502
-
503
- #: inc/view.php:187 inc/view.php:196 inc/view.php:242 inc/view.php:289
504
- msgid "Close preview"
505
- msgstr "Zatvoriť ukážku"
506
-
507
- #: inc/view.php:188
508
- msgid "Share now"
509
- msgstr "Zdieľať teraz"
510
-
511
- #: inc/view.php:194
512
- msgid "Choose a Profile or Page"
513
- msgstr "Vyberte profil alebo stránku"
514
-
515
- #: inc/view.php:202
516
- msgid "Add Your Facebook Account Following The Instructions On The Left"
517
- msgstr "Pridajte svoj ​Facebook účet podľa pokynov na ľavej strane"
518
-
519
- #: inc/view.php:206 inc/view.php:252
520
- msgid "Go on"
521
- msgstr "Prejsť na"
522
-
523
- #: inc/view.php:207
524
- msgid "Click on <strong>Create New App</strong> from the top right corner"
525
- msgstr ""
526
- "Kliknite na <strong>Vytvoriť novú aplikáciu</strong> v pravom hornom horu"
527
-
528
- #: inc/view.php:208
529
- msgid ""
530
- "Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and "
531
- "click on Create App"
532
- msgstr ""
533
- "Zadajte <strong>Zobraziť názov</strong>a <strong>Meno</strong> a kliknite na "
534
- "Vytvoriť aplikáciu"
535
-
536
- #: inc/view.php:209
537
- msgid ""
538
- "Once you arrive on the app dashboard, copy your <strong>App ID</strong> and "
539
- "<strong>App Secret</strong> in the fields on the right"
540
- msgstr ""
541
- "Ak sa dostanete do nástenky aplikácie, skopárojtu vaše <strong>ID aplikácie</"
542
- "strong> a <strong>Secret kľúč</strong> do polí napravo"
543
-
544
- #: inc/view.php:210
545
- msgid ""
546
- "Go on Settings tab from the left sidebar menu add the contact email and "
547
- "click on <strong>Add Platform</strong> and select <strong>Website</strong>"
548
- msgstr ""
549
- "Prejdite do nastavení v ľavom bočnom menu, pridajte kontaktný e-mail a "
550
- "kliknite na <strong>Pridať platformu</strong> a vyberte <strong>Webstránku</"
551
- "strong>"
552
-
553
- #: inc/view.php:211
554
- msgid ""
555
- "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into App "
556
- "Domains and Site URL fields and <strong>Save</strong>"
557
- msgstr ""
558
- "Kopírovať/vložiť túto URL : <strong><?php echo SETTINGSURL; ?></strong> do "
559
- "domén aplikácie a poľa pre URL stránky a <strong>Uložiť</strong>"
560
-
561
- #: inc/view.php:212
562
- msgid ""
563
- "Go on Status & Review tab and set your app live from the top-right switch."
564
- msgstr ""
565
- "Prejdite na kartu Stav & Revízia a spustite vašu aplikáciu napravo hore."
566
-
567
- #: inc/view.php:213 inc/view.php:259
568
- msgid "Now everything is done, click on <strong>Authorize App</strong> button."
569
- msgstr ""
570
- "Teraz je všetko dokončené, kliknite na tlačidlo <strong>Autorizácia "
571
- "aplikácie</ strong>."
572
-
573
- #: inc/view.php:219
574
- msgid "Facebook App ID"
575
- msgstr "Facebook aplik. ID"
576
-
577
- #: inc/view.php:220
578
- msgid "ID from your app created on facebook website."
579
- msgstr "ID vytvorenej facebook aplikácie."
580
-
581
- #: inc/view.php:231
582
- msgid "Facebook App Secret"
583
- msgstr "Facebook aplik. Secret"
584
-
585
- #: inc/view.php:232
586
- msgid "Secret from your app created on facebook website. "
587
- msgstr "Secret z Facebook aplikácie."
588
-
589
- #: inc/view.php:240 inc/view.php:287
590
- msgid "Authorize App"
591
- msgstr "Autorizovať aplikáciu"
592
-
593
- #: inc/view.php:248
594
- msgid "Add Your Linkedin Account Following The Instructions On The Left"
595
- msgstr "Pridajte svoj ​​LinkedIn účet podľa pokynov na ľavej strane"
596
-
597
- #: inc/view.php:253
598
- msgid ""
599
- "Enter the required details and pay special attention to the further fields :"
600
- msgstr ""
601
- "Zadajte požadované údaje a venujte špeciálnu pozornosť nasledujúcim poliam:"
602
-
603
- #: inc/view.php:254
604
- msgid "Make sure you set Live Status to LIVE"
605
- msgstr "Uistite sa že ste nastavili živý stav"
606
-
607
- #: inc/view.php:255
608
- msgid "Default Scope should have r_basicprofile and rw_nus checked"
609
- msgstr "Predvolený predmet by mal mať r_basicprofile a rw_nus začiarknuté"
610
-
611
- #: inc/view.php:256
612
- msgid ""
613
- "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into OAuth "
614
- "2.0 Redirect URLs"
615
- msgstr ""
616
- "Kopírovať/vložiť túto URL : <strong><?php echo SETTINGSURL; ?></strong> do "
617
- "OAuth 2.0 presmerovanie URL adries"
618
-
619
- #: inc/view.php:257
620
- msgid ""
621
- "Once all required fields are filled click on Add Application button, get the "
622
- "API Key and Secret Key and paste them in the fields on the right"
623
- msgstr ""
624
- "Ak vyplníte všetky povinné polia kliknite na Pridať aplikáciu, získajte API "
625
- "kľúč a Secret kľúč a vložte ichdo to polí napravo"
626
-
627
- #: inc/view.php:265
628
- msgid "Linkedin API Key"
629
- msgstr "Linkedin API kľúč"
630
-
631
- #: inc/view.php:266
632
- msgid "API Key that you get once you create an app"
633
- msgstr "API kľúč, ktorý ziskáte po vytvorení aplikácie"
634
-
635
- #: inc/view.php:277
636
- msgid "Linkedin Secret Key"
637
- msgstr "Linkedin Secret kľúč"
638
-
639
- #: inc/view.php:278
640
- msgid "Secret Key that you get once you create an app"
641
- msgstr "Secret kľúč, ktorý ziskáte po vytvorení aplikácie"
642
-
643
- #. Description of the plugin/theme
644
- msgid ""
645
- "Wordpress plugin that helps you to keeps your old posts alive by sharing "
646
- "them and driving more traffic to them from twitter/facebook or linkedin. It "
647
- "also helps you to promote your content. You can set time and no of posts to "
648
- "share to drive more traffic.For questions, comments, or feature requests, <a "
649
- "href=\"https://themeisle.com/contact/?"
650
- "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
651
- msgstr ""
652
- "WordPress plugin, ktorý vám pomôže udržiavať svoje staré príspevky nažive "
653
- "ich zdieľaním na Twitteri, Facebooku alebo LinkedIn. To prinesie viac "
654
- "návštevníkov. Môžete nastaviť čas a počet príspevkov na zdieľanie. Ak máte "
655
- "akékoľvek otázky, primomienky alebo požiadavky na nové funkcie, <a href="
656
- "\"https://themeisle.com/contact/?"
657
- "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">kontaktujte </"
658
- "a> nás!"
1
+ # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
+ # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
+ "POT-Creation-Date: 2014-07-15 23:58+0100\n"
8
+ "PO-Revision-Date: 2014-08-05 13:28+0100\n"
9
+ "Last-Translator: Patrik Žec (PATWIST) <patrik.zec@gmail.com>\n"
10
+ "Language-Team: Patrik Žec (PATWIST), www.patwist.com <patrik.zec@gmail.com>\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "X-Generator: Poedit 1.6.4\n"
15
+ "X-Poedit-KeywordsList: _;__;_e\n"
16
+ "X-Poedit-Basepath: ../\n"
17
+ "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18
+ "Language: sk_SK\n"
19
+ "X-Poedit-SearchPath-0: .\n"
20
+ "X-Poedit-SearchPath-1: inc\n"
21
+
22
+ #: inc/class-remote-notification-client.php:260
23
+ msgid "Dismiss notification"
24
+ msgstr "Zamietnuť oznámenia"
25
+
26
+ #: inc/class-remote-notification-client.php:262
27
+ msgid "Dismiss"
28
+ msgstr "Zamietnuť"
29
+
30
+ #: inc/config.php:24
31
+ msgid "Post Content"
32
+ msgstr "Obsah príspevku"
33
+
34
+ #: inc/config.php:28
35
+ msgid "What do you want to share?"
36
+ msgstr "Čo chcete zdieľať?"
37
+
38
+ #: inc/config.php:30
39
+ msgid "Title Only"
40
+ msgstr "Len názov"
41
+
42
+ #: inc/config.php:31
43
+ msgid "Body Only"
44
+ msgstr "Len obsah"
45
+
46
+ #: inc/config.php:32
47
+ msgid "Title & Body"
48
+ msgstr "Názov a obsah"
49
+
50
+ #: inc/config.php:33
51
+ msgid "Custom Field"
52
+ msgstr "Vlastne pole"
53
+
54
+ #: inc/config.php:39
55
+ msgid "Post Content Custom Field"
56
+ msgstr "Vlastné polia obsahu príspevku"
57
+
58
+ #: inc/config.php:43
59
+ msgid "Which custom field do you want to fetch info from?"
60
+ msgstr "Ktoré vlastné pole chcete vložiť do príspevku?"
61
+
62
+ #: inc/config.php:49
63
+ msgid "Additional Text"
64
+ msgstr "Ďalší text"
65
+
66
+ #: inc/config.php:53
67
+ msgid "Text added to your auto posts"
68
+ msgstr "Text pridaný do príspevkov"
69
+
70
+ #: inc/config.php:59
71
+ msgid "Additional Text At"
72
+ msgstr "Ďalší text"
73
+
74
+ #: inc/config.php:63
75
+ msgid "Where do you want the text to be added?"
76
+ msgstr "Kam chcete text pridať?"
77
+
78
+ #: inc/config.php:65
79
+ msgid "Beginning of Post"
80
+ msgstr "Začiatok príspevku"
81
+
82
+ #: inc/config.php:66
83
+ msgid "End of Post"
84
+ msgstr "Koniec príspevku"
85
+
86
+ #: inc/config.php:72
87
+ msgid "Include Link"
88
+ msgstr "Vložiť odkaz"
89
+
90
+ #: inc/config.php:76
91
+ msgid "Include a link to your post?"
92
+ msgstr "Vložiť odkaz do príspevku?"
93
+
94
+ #: inc/config.php:78
95
+ msgid "Yes"
96
+ msgstr "Áno"
97
+
98
+ #: inc/config.php:79
99
+ msgid "No"
100
+ msgstr "Nie"
101
+
102
+ #: inc/config.php:85
103
+ msgid "Fetch URL From Custom Field"
104
+ msgstr "Načítať URL z vlastného poľa"
105
+
106
+ #: inc/config.php:89
107
+ msgid "URL will be fetched from a custom field."
108
+ msgstr "URL bude načítaná z vlastného poľa"
109
+
110
+ #: inc/config.php:95
111
+ msgid "URL Custom Field"
112
+ msgstr "URL vlastného poľa"
113
+
114
+ #: inc/config.php:99
115
+ msgid "URL will be fetched from the specified custom field."
116
+ msgstr "URL bude načítaná z vlastného poľa"
117
+
118
+ #: inc/config.php:105
119
+ msgid "Use URL Shortner"
120
+ msgstr "Použiť skracovač odkazov"
121
+
122
+ #: inc/config.php:117
123
+ msgid "URL Shortner Service"
124
+ msgstr "Služba na skrátenie odkazov"
125
+
126
+ #: inc/config.php:121
127
+ msgid "Shorten the link to your post."
128
+ msgstr "Skrátenie odkazu v príspevku."
129
+
130
+ #: inc/config.php:123
131
+ msgid "wp short url"
132
+ msgstr "wp short url"
133
+
134
+ #: inc/config.php:125
135
+ msgid "is.gd"
136
+ msgstr "is.gd"
137
+
138
+ #: inc/config.php:126
139
+ msgid "bit.ly"
140
+ msgstr "bit.ly"
141
+
142
+ #: inc/config.php:138
143
+ msgid "Bitly Key"
144
+ msgstr "Bitly kľúč"
145
+
146
+ #: inc/config.php:148
147
+ msgid "Bitly User"
148
+ msgstr "Bitly používateľ"
149
+
150
+ #: inc/config.php:158
151
+ msgid "Hashtags"
152
+ msgstr "Hashtagy"
153
+
154
+ #: inc/config.php:162
155
+ msgid "Include #hashtags in your auto posts?"
156
+ msgstr "Zahrnúť #hashtagy do príspevkov?"
157
+
158
+ #: inc/config.php:164
159
+ msgid "Don't add any hashtags"
160
+ msgstr "Nepridávať hashtagy"
161
+
162
+ #: inc/config.php:165
163
+ msgid "Common hashtags for all shares"
164
+ msgstr "Spoločné hashtagy pre všetky zdieľania"
165
+
166
+ #: inc/config.php:166
167
+ msgid "Create hashtags from Categories"
168
+ msgstr "Použiť hashtagy z názvov kategórií"
169
+
170
+ #: inc/config.php:167
171
+ msgid "Create hashtags from Tags"
172
+ msgstr "Použiť hashtagy zo štítkov"
173
+
174
+ #: inc/config.php:168
175
+ msgid "Create hashtags from Custom Fields"
176
+ msgstr "Použiť hashtagy z vlastných polí"
177
+
178
+ #: inc/config.php:174
179
+ msgid "Common Hashtags"
180
+ msgstr "Spoločné hashtagy"
181
+
182
+ #: inc/config.php:178
183
+ msgid "Specify which hashtags you want to be used. eg. #example, #example2"
184
+ msgstr "Vyberte ktoré hashtagy chcete použiť. napríklad. #priklad1, #priklad2"
185
+
186
+ #: inc/config.php:184
187
+ msgid "Maximum Hashtags Length"
188
+ msgstr "Maximálna dĺžka hashtagu"
189
+
190
+ #: inc/config.php:188
191
+ msgid "Set to 0 (characters) to include all."
192
+ msgstr "Zadajte 0 znakov pre vloženie akéhokoľvek dlhého hashtagu."
193
+
194
+ #: inc/config.php:194
195
+ msgid "Hashtag Custom Field"
196
+ msgstr "Vlastné polia hashtagy"
197
+
198
+ #: inc/config.php:198
199
+ msgid "Fetch hashtags from specified custom field"
200
+ msgstr "Načítať hashtagy z vlastného poľa"
201
+
202
+ #: inc/config.php:204
203
+ msgid "Minimum interval between shares"
204
+ msgstr "Minimálny interval medzi zdieľaniami"
205
+
206
+ #: inc/config.php:208
207
+ msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
208
+ msgstr ""
209
+ "Minimálny časový interval medzi zdieľaniami (Hodina/Hodiny), 0.3 pre pol "
210
+ "hodiny"
211
+
212
+ #: inc/config.php:214
213
+ msgid "Minimum age of post to be eligible for sharing"
214
+ msgstr "Minimálny vek príspevku aby mohol byť zdieľaný"
215
+
216
+ #: inc/config.php:218 inc/config.php:228
217
+ msgid "Day/Days - 0 for Disabled"
218
+ msgstr "Deň/Dni - 0 pre zrušenie"
219
+
220
+ #: inc/config.php:224
221
+ msgid "Maximum age of post to be eligible for sharing"
222
+ msgstr "Maximálny vek príspevku aby mohol byť zdieľaný"
223
+
224
+ #: inc/config.php:234
225
+ msgid "Number of Posts to share"
226
+ msgstr "Počet príspevkov pre zdieľanie"
227
+
228
+ #: inc/config.php:238
229
+ msgid "Number of posts to share each time"
230
+ msgstr "Počet príspevkov pre zdieľanie v určitom čase"
231
+
232
+ #: inc/config.php:246
233
+ msgid "Post with Image"
234
+ msgstr "Príspevkov z obrázkom"
235
+
236
+ #: inc/config.php:250
237
+ msgid "Check if you want to add the post featured image to the share"
238
+ msgstr "Zariačknite ak chcete pridať obrázok na zdieľanie"
239
+
240
+ #: inc/config.php:256
241
+ msgid "Share old posts more than once"
242
+ msgstr "Zdieľať staré príspevky viackrát"
243
+
244
+ #: inc/config.php:260
245
+ msgid ""
246
+ "By default once a post is shared it will not be shared again until you stop/"
247
+ "start the plugin"
248
+ msgstr ""
249
+ "Predvolené nastavenie je že ak sa raz príspevok zdieľa nebude zdieľaný "
250
+ "viackrát pokiaľ nedeaktivujete a aktivujete plugin."
251
+
252
+ #: inc/config.php:268
253
+ msgid "Post Type"
254
+ msgstr "Typ príspevku"
255
+
256
+ #: inc/config.php:272
257
+ msgid "What type of items do you want to share?"
258
+ msgstr "Aký typ položiek chcete zdieľať?"
259
+
260
+ #: inc/config.php:279
261
+ msgid "Google Analytics Campaign Tracking"
262
+ msgstr "Google Analytics sledovacia kampaň"
263
+
264
+ #: inc/config.php:283
265
+ msgid ""
266
+ "Enabling Campaign Tracking you would be able to see how much traffic Revive "
267
+ "Old Post generated."
268
+ msgstr ""
269
+ "Povolením sledovania budete môcť vidieť koľko návštevnosti máte vďaka Revive "
270
+ "Old Post."
271
+
272
+ #: inc/config.php:289
273
+ msgid "Exclude Specific Categories"
274
+ msgstr "Vylúčenie špecifických kategórií"
275
+
276
+ #: inc/config.php:293
277
+ msgid ""
278
+ "Select which categories do you want to exclude to share from? Blank - None"
279
+ msgstr "Vyberte, ktoré kategórie chcete vylúčiť zo zdieľania, prázdne - žiadne"
280
+
281
+ #: inc/core.php:81
282
+ msgid "Tweet Old Post is already active!"
283
+ msgstr "Tweet Old Post už je aktívny!"
284
+
285
+ #: inc/core.php:101
286
+ msgid "ROP is already inactive!"
287
+ msgstr "ROP už je neaktívne!"
288
+
289
+ #: inc/core.php:811
290
+ msgid "Custom Tweet User Interval"
291
+ msgstr "Vlastný interval tweetovania"
292
+
293
+ #: inc/core.php:1127
294
+ msgid "Could not connect to Twitter!"
295
+ msgstr "Nedá sa pripojiť na Twitter!"
296
+
297
+ #: inc/core.php:1385
298
+ msgid "This is only available in the"
299
+ msgstr "K dispozícií len v"
300
+
301
+ #: inc/core.php:1385
302
+ msgid "PRO version"
303
+ msgstr "PRO verzia"
304
+
305
+ #: inc/core.php:1644
306
+ msgid "Exclude Posts"
307
+ msgstr "Vylúčiť príspevky"
308
+
309
+ #: inc/exclude-posts.php:24
310
+ msgid "Tweet Old Post Options Updated."
311
+ msgstr "Nastavenia Tweet Ols Post aktualizované."
312
+
313
+ #: inc/exclude-posts.php:63
314
+ msgid "No post selected please select a post to be excluded."
315
+ msgstr ""
316
+ "Nie sú vybrané žiadne príspevky, prosím vyberte príspevky, ktoré majú byť "
317
+ "vylúčené."
318
+
319
+ #: inc/exclude-posts.php:70
320
+ msgid "Posts excluded successfully."
321
+ msgstr "Úspešné vylúčenie príspevkov."
322
+
323
+ #: inc/exclude-posts.php:155
324
+ msgid "Selected Categories"
325
+ msgstr "Vybrané kategórie"
326
+
327
+ #: inc/exclude-posts.php:157
328
+ msgid "Filter"
329
+ msgstr "Filter"
330
+
331
+ #: inc/exclude-posts.php:168
332
+ msgid "&laquo;"
333
+ msgstr "&laquo;"
334
+
335
+ #: inc/exclude-posts.php:169
336
+ msgid "&raquo;"
337
+ msgstr "&raquo;"
338
+
339
+ #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
340
+ #, php-format
341
+ msgid "Displaying %s&#8211;%s of %s"
342
+ msgstr "Zobrazujem %s&#8211;%s z %s"
343
+
344
+ #: inc/exclude-posts.php:356
345
+ msgid "No Posts found. Review your search or filter criteria/term."
346
+ msgstr "Nenájdené žiadne príspevky. Skontrolujte zadané kritéria."
347
+
348
+ #: inc/exclude-posts.php:363
349
+ msgid ""
350
+ "You do not have enough permission to set the option. Please contact your "
351
+ "admin."
352
+ msgstr "Nemáte dostatočné povolenia na nastavenie. Prosím kontakujte správcu."
353
+
354
+ #: inc/view-exclude.php:4 inc/view.php:3
355
+ msgid "After 6 months of hard work, we have just released"
356
+ msgstr "Po 6. mesiacoch tvrdej práce sme práve vydali"
357
+
358
+ #: inc/view-exclude.php:4 inc/view.php:3
359
+ msgid "the island of WordPress themes."
360
+ msgstr "ostrov WordPress tém."
361
+
362
+ #: inc/view-exclude.php:5 inc/view.php:4
363
+ msgid "Show Me"
364
+ msgstr "Zobraziť"
365
+
366
+ #: inc/view-exclude.php:15 inc/view.php:14
367
+ msgid "by"
368
+ msgstr "podľa"
369
+
370
+ #: inc/view-exclude.php:18 inc/view.php:17
371
+ msgid "Show your love"
372
+ msgstr "Ukážte svoju lásku"
373
+
374
+ #: inc/view-exclude.php:19 inc/view.php:18
375
+ msgid "Leave A Review"
376
+ msgstr "Zanechať hodnotenie/komentár"
377
+
378
+ #: inc/view-exclude.php:30
379
+ msgid "Revive Old Post is set to share on a"
380
+ msgstr "Revive Old Post je nastavený pre zdieľanie na"
381
+
382
+ #: inc/view-exclude.php:32 inc/view.php:31
383
+ msgid "hours interval, "
384
+ msgstr "hodinové intervaly,"
385
+
386
+ #: inc/view-exclude.php:33 inc/view.php:32
387
+ msgid "and the next share will take place in: "
388
+ msgstr "a ďalšie zdieľanie bude v:"
389
+
390
+ #: inc/view-exclude.php:38
391
+ msgid "Revive Old Post is not set to share!"
392
+ msgstr "Revive Old Post nie je nastavený na zdieľanie"
393
+
394
+ #: inc/view-exclude.php:42
395
+ msgid ""
396
+ "You have selected following POST IDs to be excluded from tweeting: <span "
397
+ "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
398
+ "Note: If you have made any change and dint hit 'Exclude Selected' button "
399
+ "changes will not be saved. "
400
+ msgstr ""
401
+ "Vybrali ste nasledujúce ID príspevkov, ktoré budú vylúčené zo zdieľania: "
402
+ "<span id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
403
+ "Poznámka: Ak ste vykonali akékoľvek zmeny a neklikli na tlačidlo \"Vylúčiť "
404
+ "vybrané\", zmeny nebudú uložené."
405
+
406
+ #: inc/view.php:29
407
+ msgid "Revive Old Post is set to post on a"
408
+ msgstr "Revive Old Post je nastavený na zdieľanie na"
409
+
410
+ #: inc/view.php:37
411
+ msgid "Revive Old Post is not set to post!"
412
+ msgstr "Revive Old Post nie je nastavený na zdieľanie!"
413
+
414
+ #: inc/view.php:42
415
+ msgid ""
416
+ "Once you click start sharing a post will be sent in 15 sec, also here you "
417
+ "can see the error message if is any."
418
+ msgstr ""
419
+ "Po kliknutí na tlačidlo spustiť zdieľanie bude príspevok zdieľaný za 15 "
420
+ "sekúnd, taktiež tu budete môcť vidieť prípadne chybové hlásenia."
421
+
422
+ #: inc/view.php:52
423
+ msgid "Twitter Login"
424
+ msgstr "Twitter prihlásenie"
425
+
426
+ #: inc/view.php:53
427
+ msgid "Login using your Twitter account."
428
+ msgstr "Prihlásiť sa pomocou Twitter účtu."
429
+
430
+ #: inc/view.php:77 inc/view.php:111
431
+ msgid "Add Account"
432
+ msgstr "Pridať účet"
433
+
434
+ #: inc/view.php:84
435
+ msgid "Facebook Login"
436
+ msgstr "Facebook prihlásenie"
437
+
438
+ #: inc/view.php:85
439
+ msgid "Login using your Facebook account."
440
+ msgstr "Prihlásiť sa pomocou Facebook účtu."
441
+
442
+ #: inc/view.php:109
443
+ msgid "Authorize"
444
+ msgstr "Autorizovať"
445
+
446
+ #: inc/view.php:118
447
+ msgid "Linkedin Login"
448
+ msgstr "Linkedin prihlásenie"
449
+
450
+ #: inc/view.php:119
451
+ msgid "Login using your Linkedin account."
452
+ msgstr "Prihlásiť sa pomocou LinkedIn účtu."
453
+
454
+ #: inc/view.php:141
455
+ msgid "Add account"
456
+ msgstr "Pridať účet"
457
+
458
+ #: inc/view.php:154
459
+ msgid "Select All"
460
+ msgstr "Vybrať všetko"
461
+
462
+ #: inc/view.php:165
463
+ msgid "Reset"
464
+ msgstr "Obnoviť"
465
+
466
+ #: inc/view.php:166
467
+ msgid "Save"
468
+ msgstr "Uložiť"
469
+
470
+ #: inc/view.php:167
471
+ msgid "Start Sharing"
472
+ msgstr "Spustiť zdieľanie"
473
+
474
+ #: inc/view.php:168
475
+ msgid "Stop Sharing"
476
+ msgstr "Vypnúť zdieľanie"
477
+
478
+ #: inc/view.php:169
479
+ msgid "See Sample Post"
480
+ msgstr "Pozrieť ukážkový príspevok"
481
+
482
+ #: inc/view.php:171
483
+ msgid ""
484
+ "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
485
+ msgstr "Nie sme partnerom Twitteru/Facebooku/LinkedInu."
486
+
487
+ #: inc/view.php:176
488
+ msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
489
+ msgstr "Prejdite na PRO verziu Tweet Old Post len za 9,99$!"
490
+
491
+ #: inc/view.php:177
492
+ msgid "ThemeIsle - Deadly Simple WordPress Themes"
493
+ msgstr "ThemeIsle - Jednoduché WordPress témy"
494
+
495
+ #: inc/view.php:178
496
+ msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
497
+ msgstr "ThemeIsle - Propagujte naše témy a pluginy a získajte 55% províziu"
498
+
499
+ #: inc/view.php:185
500
+ msgid "Sample Post Preview"
501
+ msgstr "Ukážka príspevku"
502
+
503
+ #: inc/view.php:187 inc/view.php:196 inc/view.php:242 inc/view.php:289
504
+ msgid "Close preview"
505
+ msgstr "Zatvoriť ukážku"
506
+
507
+ #: inc/view.php:188
508
+ msgid "Share now"
509
+ msgstr "Zdieľať teraz"
510
+
511
+ #: inc/view.php:194
512
+ msgid "Choose a Profile or Page"
513
+ msgstr "Vyberte profil alebo stránku"
514
+
515
+ #: inc/view.php:202
516
+ msgid "Add Your Facebook Account Following The Instructions On The Left"
517
+ msgstr "Pridajte svoj ​Facebook účet podľa pokynov na ľavej strane"
518
+
519
+ #: inc/view.php:206 inc/view.php:252
520
+ msgid "Go on"
521
+ msgstr "Prejsť na"
522
+
523
+ #: inc/view.php:207
524
+ msgid "Click on <strong>Create New App</strong> from the top right corner"
525
+ msgstr ""
526
+ "Kliknite na <strong>Vytvoriť novú aplikáciu</strong> v pravom hornom horu"
527
+
528
+ #: inc/view.php:208
529
+ msgid ""
530
+ "Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and "
531
+ "click on Create App"
532
+ msgstr ""
533
+ "Zadajte <strong>Zobraziť názov</strong>a <strong>Meno</strong> a kliknite na "
534
+ "Vytvoriť aplikáciu"
535
+
536
+ #: inc/view.php:209
537
+ msgid ""
538
+ "Once you arrive on the app dashboard, copy your <strong>App ID</strong> and "
539
+ "<strong>App Secret</strong> in the fields on the right"
540
+ msgstr ""
541
+ "Ak sa dostanete do nástenky aplikácie, skopárojtu vaše <strong>ID aplikácie</"
542
+ "strong> a <strong>Secret kľúč</strong> do polí napravo"
543
+
544
+ #: inc/view.php:210
545
+ msgid ""
546
+ "Go on Settings tab from the left sidebar menu add the contact email and "
547
+ "click on <strong>Add Platform</strong> and select <strong>Website</strong>"
548
+ msgstr ""
549
+ "Prejdite do nastavení v ľavom bočnom menu, pridajte kontaktný e-mail a "
550
+ "kliknite na <strong>Pridať platformu</strong> a vyberte <strong>Webstránku</"
551
+ "strong>"
552
+
553
+ #: inc/view.php:211
554
+ msgid ""
555
+ "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into App "
556
+ "Domains and Site URL fields and <strong>Save</strong>"
557
+ msgstr ""
558
+ "Kopírovať/vložiť túto URL : <strong><?php echo SETTINGSURL; ?></strong> do "
559
+ "domén aplikácie a poľa pre URL stránky a <strong>Uložiť</strong>"
560
+
561
+ #: inc/view.php:212
562
+ msgid ""
563
+ "Go on Status & Review tab and set your app live from the top-right switch."
564
+ msgstr ""
565
+ "Prejdite na kartu Stav & Revízia a spustite vašu aplikáciu napravo hore."
566
+
567
+ #: inc/view.php:213 inc/view.php:259
568
+ msgid "Now everything is done, click on <strong>Authorize App</strong> button."
569
+ msgstr ""
570
+ "Teraz je všetko dokončené, kliknite na tlačidlo <strong>Autorizácia "
571
+ "aplikácie</ strong>."
572
+
573
+ #: inc/view.php:219
574
+ msgid "Facebook App ID"
575
+ msgstr "Facebook aplik. ID"
576
+
577
+ #: inc/view.php:220
578
+ msgid "ID from your app created on facebook website."
579
+ msgstr "ID vytvorenej facebook aplikácie."
580
+
581
+ #: inc/view.php:231
582
+ msgid "Facebook App Secret"
583
+ msgstr "Facebook aplik. Secret"
584
+
585
+ #: inc/view.php:232
586
+ msgid "Secret from your app created on facebook website. "
587
+ msgstr "Secret z Facebook aplikácie."
588
+
589
+ #: inc/view.php:240 inc/view.php:287
590
+ msgid "Authorize App"
591
+ msgstr "Autorizovať aplikáciu"
592
+
593
+ #: inc/view.php:248
594
+ msgid "Add Your Linkedin Account Following The Instructions On The Left"
595
+ msgstr "Pridajte svoj ​​LinkedIn účet podľa pokynov na ľavej strane"
596
+
597
+ #: inc/view.php:253
598
+ msgid ""
599
+ "Enter the required details and pay special attention to the further fields :"
600
+ msgstr ""
601
+ "Zadajte požadované údaje a venujte špeciálnu pozornosť nasledujúcim poliam:"
602
+
603
+ #: inc/view.php:254
604
+ msgid "Make sure you set Live Status to LIVE"
605
+ msgstr "Uistite sa že ste nastavili živý stav"
606
+
607
+ #: inc/view.php:255
608
+ msgid "Default Scope should have r_basicprofile and rw_nus checked"
609
+ msgstr "Predvolený predmet by mal mať r_basicprofile a rw_nus začiarknuté"
610
+
611
+ #: inc/view.php:256
612
+ msgid ""
613
+ "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into OAuth "
614
+ "2.0 Redirect URLs"
615
+ msgstr ""
616
+ "Kopírovať/vložiť túto URL : <strong><?php echo SETTINGSURL; ?></strong> do "
617
+ "OAuth 2.0 presmerovanie URL adries"
618
+
619
+ #: inc/view.php:257
620
+ msgid ""
621
+ "Once all required fields are filled click on Add Application button, get the "
622
+ "API Key and Secret Key and paste them in the fields on the right"
623
+ msgstr ""
624
+ "Ak vyplníte všetky povinné polia kliknite na Pridať aplikáciu, získajte API "
625
+ "kľúč a Secret kľúč a vložte ichdo to polí napravo"
626
+
627
+ #: inc/view.php:265
628
+ msgid "Linkedin API Key"
629
+ msgstr "Linkedin API kľúč"
630
+
631
+ #: inc/view.php:266
632
+ msgid "API Key that you get once you create an app"
633
+ msgstr "API kľúč, ktorý ziskáte po vytvorení aplikácie"
634
+
635
+ #: inc/view.php:277
636
+ msgid "Linkedin Secret Key"
637
+ msgstr "Linkedin Secret kľúč"
638
+
639
+ #: inc/view.php:278
640
+ msgid "Secret Key that you get once you create an app"
641
+ msgstr "Secret kľúč, ktorý ziskáte po vytvorení aplikácie"
642
+
643
+ #. Description of the plugin/theme
644
+ msgid ""
645
+ "Wordpress plugin that helps you to keeps your old posts alive by sharing "
646
+ "them and driving more traffic to them from twitter/facebook or linkedin. It "
647
+ "also helps you to promote your content. You can set time and no of posts to "
648
+ "share to drive more traffic.For questions, comments, or feature requests, <a "
649
+ "href=\"https://themeisle.com/contact/?"
650
+ "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
651
+ msgstr ""
652
+ "WordPress plugin, ktorý vám pomôže udržiavať svoje staré príspevky nažive "
653
+ "ich zdieľaním na Twitteri, Facebooku alebo LinkedIn. To prinesie viac "
654
+ "návštevníkov. Môžete nastaviť čas a počet príspevkov na zdieľanie. Ak máte "
655
+ "akékoľvek otázky, primomienky alebo požiadavky na nové funkcie, <a href="
656
+ "\"https://themeisle.com/contact/?"
657
+ "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">kontaktujte </"
658
+ "a> nás!"
languages/tweet-old-post.po CHANGED
@@ -1,617 +1,617 @@
1
- # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
- # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
- "POT-Creation-Date: 2014-07-15 23:58+0100\n"
8
- "PO-Revision-Date: 2014-07-16 00:07+0100\n"
9
- "Last-Translator: Ionut <friends@themeisle.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
- "X-Generator: Poedit 1.5.7\n"
15
- "X-Poedit-KeywordsList: _;__;_e\n"
16
- "X-Poedit-Basepath: ../\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
- "X-Poedit-SearchPath-1: inc\n"
19
-
20
- #: inc/class-remote-notification-client.php:260
21
- msgid "Dismiss notification"
22
- msgstr ""
23
-
24
- #: inc/class-remote-notification-client.php:262
25
- msgid "Dismiss"
26
- msgstr ""
27
-
28
- #: inc/config.php:24
29
- msgid "Post Content"
30
- msgstr ""
31
-
32
- #: inc/config.php:28
33
- msgid "What do you want to share?"
34
- msgstr ""
35
-
36
- #: inc/config.php:30
37
- msgid "Title Only"
38
- msgstr ""
39
-
40
- #: inc/config.php:31
41
- msgid "Body Only"
42
- msgstr ""
43
-
44
- #: inc/config.php:32
45
- msgid "Title & Body"
46
- msgstr ""
47
-
48
- #: inc/config.php:33
49
- msgid "Custom Field"
50
- msgstr ""
51
-
52
- #: inc/config.php:39
53
- msgid "Post Content Custom Field"
54
- msgstr ""
55
-
56
- #: inc/config.php:43
57
- msgid "Which custom field do you want to fetch info from?"
58
- msgstr ""
59
-
60
- #: inc/config.php:49
61
- msgid "Additional Text"
62
- msgstr ""
63
-
64
- #: inc/config.php:53
65
- msgid "Text added to your auto posts"
66
- msgstr ""
67
-
68
- #: inc/config.php:59
69
- msgid "Additional Text At"
70
- msgstr ""
71
-
72
- #: inc/config.php:63
73
- msgid "Where do you want the text to be added?"
74
- msgstr ""
75
-
76
- #: inc/config.php:65
77
- msgid "Beginning of Post"
78
- msgstr ""
79
-
80
- #: inc/config.php:66
81
- msgid "End of Post"
82
- msgstr ""
83
-
84
- #: inc/config.php:72
85
- msgid "Include Link"
86
- msgstr ""
87
-
88
- #: inc/config.php:76
89
- msgid "Include a link to your post?"
90
- msgstr ""
91
-
92
- #: inc/config.php:78
93
- msgid "Yes"
94
- msgstr ""
95
-
96
- #: inc/config.php:79
97
- msgid "No"
98
- msgstr ""
99
-
100
- #: inc/config.php:85
101
- msgid "Fetch URL From Custom Field"
102
- msgstr ""
103
-
104
- #: inc/config.php:89
105
- msgid "URL will be fetched from a custom field."
106
- msgstr ""
107
-
108
- #: inc/config.php:95
109
- msgid "URL Custom Field"
110
- msgstr ""
111
-
112
- #: inc/config.php:99
113
- msgid "URL will be fetched from the specified custom field."
114
- msgstr ""
115
-
116
- #: inc/config.php:105
117
- msgid "Use URL Shortner"
118
- msgstr ""
119
-
120
- #: inc/config.php:117
121
- msgid "URL Shortner Service"
122
- msgstr ""
123
-
124
- #: inc/config.php:121
125
- msgid "Shorten the link to your post."
126
- msgstr ""
127
-
128
- #: inc/config.php:123
129
- msgid "wp short url"
130
- msgstr ""
131
-
132
- #: inc/config.php:125
133
- msgid "is.gd"
134
- msgstr ""
135
-
136
- #: inc/config.php:126
137
- msgid "bit.ly"
138
- msgstr ""
139
-
140
- #: inc/config.php:138
141
- msgid "Bitly Key"
142
- msgstr ""
143
-
144
- #: inc/config.php:148
145
- msgid "Bitly User"
146
- msgstr ""
147
-
148
- #: inc/config.php:158
149
- msgid "Hashtags"
150
- msgstr ""
151
-
152
- #: inc/config.php:162
153
- msgid "Include #hashtags in your auto posts?"
154
- msgstr ""
155
-
156
- #: inc/config.php:164
157
- msgid "Don't add any hashtags"
158
- msgstr ""
159
-
160
- #: inc/config.php:165
161
- msgid "Common hashtags for all shares"
162
- msgstr ""
163
-
164
- #: inc/config.php:166
165
- msgid "Create hashtags from Categories"
166
- msgstr ""
167
-
168
- #: inc/config.php:167
169
- msgid "Create hashtags from Tags"
170
- msgstr ""
171
-
172
- #: inc/config.php:168
173
- msgid "Create hashtags from Custom Fields"
174
- msgstr ""
175
-
176
- #: inc/config.php:174
177
- msgid "Common Hashtags"
178
- msgstr ""
179
-
180
- #: inc/config.php:178
181
- msgid "Specify which hashtags you want to be used. eg. #example, #example2"
182
- msgstr ""
183
-
184
- #: inc/config.php:184
185
- msgid "Maximum Hashtags Length"
186
- msgstr ""
187
-
188
- #: inc/config.php:188
189
- msgid "Set to 0 (characters) to include all."
190
- msgstr ""
191
-
192
- #: inc/config.php:194
193
- msgid "Hashtag Custom Field"
194
- msgstr ""
195
-
196
- #: inc/config.php:198
197
- msgid "Fetch hashtags from specified custom field"
198
- msgstr ""
199
-
200
- #: inc/config.php:204
201
- msgid "Minimum interval between shares"
202
- msgstr ""
203
-
204
- #: inc/config.php:208
205
- msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
206
- msgstr ""
207
-
208
- #: inc/config.php:214
209
- msgid "Minimum age of post to be eligible for sharing"
210
- msgstr ""
211
-
212
- #: inc/config.php:218 inc/config.php:228
213
- msgid "Day/Days - 0 for Disabled"
214
- msgstr ""
215
-
216
- #: inc/config.php:224
217
- msgid "Maximum age of post to be eligible for sharing"
218
- msgstr ""
219
-
220
- #: inc/config.php:234
221
- msgid "Number of Posts to share"
222
- msgstr ""
223
-
224
- #: inc/config.php:238
225
- msgid "Number of posts to share each time"
226
- msgstr ""
227
-
228
- #: inc/config.php:246
229
- msgid "Post with Image"
230
- msgstr ""
231
-
232
- #: inc/config.php:250
233
- msgid "Check if you want to add the post featured image to the share"
234
- msgstr ""
235
-
236
- #: inc/config.php:256
237
- msgid "Share old posts more than once"
238
- msgstr ""
239
-
240
- #: inc/config.php:260
241
- msgid ""
242
- "By default once a post is shared it will not be shared again until you stop/"
243
- "start the plugin"
244
- msgstr ""
245
-
246
- #: inc/config.php:268
247
- msgid "Post Type"
248
- msgstr ""
249
-
250
- #: inc/config.php:272
251
- msgid "What type of items do you want to share?"
252
- msgstr ""
253
-
254
- #: inc/config.php:279
255
- msgid "Google Analytics Campaign Tracking"
256
- msgstr ""
257
-
258
- #: inc/config.php:283
259
- msgid ""
260
- "Enabling Campaign Tracking you would be able to see how much traffic Revive "
261
- "Old Post generated."
262
- msgstr ""
263
-
264
- #: inc/config.php:289
265
- msgid "Exclude Specific Categories"
266
- msgstr ""
267
-
268
- #: inc/config.php:293
269
- msgid ""
270
- "Select which categories do you want to exclude to share from? Blank - None"
271
- msgstr ""
272
-
273
- #: inc/core.php:81
274
- msgid "Tweet Old Post is already active!"
275
- msgstr ""
276
-
277
- #: inc/core.php:101
278
- msgid "ROP is already inactive!"
279
- msgstr ""
280
-
281
- #: inc/core.php:811
282
- msgid "Custom Tweet User Interval"
283
- msgstr ""
284
-
285
- #: inc/core.php:1127
286
- msgid "Could not connect to Twitter!"
287
- msgstr ""
288
-
289
- #: inc/core.php:1385
290
- msgid "This is only available in the"
291
- msgstr ""
292
-
293
- #: inc/core.php:1385
294
- msgid "PRO version"
295
- msgstr ""
296
-
297
- #: inc/core.php:1644
298
- msgid "Exclude Posts"
299
- msgstr ""
300
-
301
- #: inc/exclude-posts.php:24
302
- msgid "Tweet Old Post Options Updated."
303
- msgstr ""
304
-
305
- #: inc/exclude-posts.php:63
306
- msgid "No post selected please select a post to be excluded."
307
- msgstr ""
308
-
309
- #: inc/exclude-posts.php:70
310
- msgid "Posts excluded successfully."
311
- msgstr ""
312
-
313
- #: inc/exclude-posts.php:155
314
- msgid "Selected Categories"
315
- msgstr ""
316
-
317
- #: inc/exclude-posts.php:157
318
- msgid "Filter"
319
- msgstr ""
320
-
321
- #: inc/exclude-posts.php:168
322
- msgid "&laquo;"
323
- msgstr ""
324
-
325
- #: inc/exclude-posts.php:169
326
- msgid "&raquo;"
327
- msgstr ""
328
-
329
- #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
330
- #, php-format
331
- msgid "Displaying %s&#8211;%s of %s"
332
- msgstr ""
333
-
334
- #: inc/exclude-posts.php:356
335
- msgid "No Posts found. Review your search or filter criteria/term."
336
- msgstr ""
337
-
338
- #: inc/exclude-posts.php:363
339
- msgid ""
340
- "You do not have enough permission to set the option. Please contact your "
341
- "admin."
342
- msgstr ""
343
-
344
- #: inc/view-exclude.php:4 inc/view.php:3
345
- msgid "After 6 months of hard work, we have just released"
346
- msgstr ""
347
-
348
- #: inc/view-exclude.php:4 inc/view.php:3
349
- msgid "the island of WordPress themes."
350
- msgstr ""
351
-
352
- #: inc/view-exclude.php:5 inc/view.php:4
353
- msgid "Show Me"
354
- msgstr ""
355
-
356
- #: inc/view-exclude.php:15 inc/view.php:14
357
- msgid "by"
358
- msgstr ""
359
-
360
- #: inc/view-exclude.php:18 inc/view.php:17
361
- msgid "Show your love"
362
- msgstr ""
363
-
364
- #: inc/view-exclude.php:19 inc/view.php:18
365
- msgid "Leave A Review"
366
- msgstr ""
367
-
368
- #: inc/view-exclude.php:30
369
- msgid "Revive Old Post is set to share on a"
370
- msgstr ""
371
-
372
- #: inc/view-exclude.php:32 inc/view.php:31
373
- msgid "hours interval, "
374
- msgstr ""
375
-
376
- #: inc/view-exclude.php:33 inc/view.php:32
377
- msgid "and the next share will take place in: "
378
- msgstr ""
379
-
380
- #: inc/view-exclude.php:38
381
- msgid "Revive Old Post is not set to share!"
382
- msgstr ""
383
-
384
- #: inc/view-exclude.php:42
385
- msgid ""
386
- "You have selected following POST IDs to be excluded from tweeting: <span "
387
- "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
388
- "Note: If you have made any change and dint hit 'Exclude Selected' button "
389
- "changes will not be saved. "
390
- msgstr ""
391
-
392
- #: inc/view.php:29
393
- msgid "Revive Old Post is set to post on a"
394
- msgstr ""
395
-
396
- #: inc/view.php:37
397
- msgid "Revive Old Post is not set to post!"
398
- msgstr ""
399
-
400
- #: inc/view.php:42
401
- msgid ""
402
- "Once you click start sharing a post will be sent in 15 sec, also here you "
403
- "can see the error message if is any."
404
- msgstr ""
405
-
406
- #: inc/view.php:52
407
- msgid "Twitter Login"
408
- msgstr ""
409
-
410
- #: inc/view.php:53
411
- msgid "Login using your Twitter account."
412
- msgstr ""
413
-
414
- #: inc/view.php:77 inc/view.php:111
415
- msgid "Add Account"
416
- msgstr ""
417
-
418
- #: inc/view.php:84
419
- msgid "Facebook Login"
420
- msgstr ""
421
-
422
- #: inc/view.php:85
423
- msgid "Login using your Facebook account."
424
- msgstr ""
425
-
426
- #: inc/view.php:109
427
- msgid "Authorize"
428
- msgstr ""
429
-
430
- #: inc/view.php:118
431
- msgid "Linkedin Login"
432
- msgstr ""
433
-
434
- #: inc/view.php:119
435
- msgid "Login using your Linkedin account."
436
- msgstr ""
437
-
438
- #: inc/view.php:141
439
- msgid "Add account"
440
- msgstr ""
441
-
442
- #: inc/view.php:154
443
- msgid "Select All"
444
- msgstr ""
445
-
446
- #: inc/view.php:165
447
- msgid "Reset"
448
- msgstr ""
449
-
450
- #: inc/view.php:166
451
- msgid "Save"
452
- msgstr ""
453
-
454
- #: inc/view.php:167
455
- msgid "Start Sharing"
456
- msgstr ""
457
-
458
- #: inc/view.php:168
459
- msgid "Stop Sharing"
460
- msgstr ""
461
-
462
- #: inc/view.php:169
463
- msgid "See Sample Post"
464
- msgstr ""
465
-
466
- #: inc/view.php:171
467
- msgid ""
468
- "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
469
- msgstr ""
470
-
471
- #: inc/view.php:176
472
- msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
473
- msgstr ""
474
-
475
- #: inc/view.php:177
476
- msgid "ThemeIsle - Deadly Simple WordPress Themes"
477
- msgstr ""
478
-
479
- #: inc/view.php:178
480
- msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
481
- msgstr ""
482
-
483
- #: inc/view.php:185
484
- msgid "Sample Post Preview"
485
- msgstr ""
486
-
487
- #: inc/view.php:187 inc/view.php:196 inc/view.php:242 inc/view.php:289
488
- msgid "Close preview"
489
- msgstr ""
490
-
491
- #: inc/view.php:188
492
- msgid "Share now"
493
- msgstr ""
494
-
495
- #: inc/view.php:194
496
- msgid "Choose a Profile or Page"
497
- msgstr ""
498
-
499
- #: inc/view.php:202
500
- msgid "Add Your Facebook Account Following The Instructions On The Left"
501
- msgstr ""
502
-
503
- #: inc/view.php:206 inc/view.php:252
504
- msgid "Go on"
505
- msgstr ""
506
-
507
- #: inc/view.php:207
508
- msgid "Click on <strong>Create New App</strong> from the top right corner"
509
- msgstr ""
510
-
511
- #: inc/view.php:208
512
- msgid ""
513
- "Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and "
514
- "click on Create App"
515
- msgstr ""
516
-
517
- #: inc/view.php:209
518
- msgid ""
519
- "Once you arrive on the app dashboard, copy your <strong>App ID</strong> and "
520
- "<strong>App Secret</strong> in the fields on the right"
521
- msgstr ""
522
-
523
- #: inc/view.php:210
524
- msgid ""
525
- "Go on Settings tab from the left sidebar menu add the contact email and "
526
- "click on <strong>Add Platform</strong> and select <strong>Website</strong>"
527
- msgstr ""
528
-
529
- #: inc/view.php:211
530
- msgid ""
531
- "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into App "
532
- "Domains and Site URL fields and <strong>Save</strong>"
533
- msgstr ""
534
-
535
- #: inc/view.php:212
536
- msgid ""
537
- "Go on Status & Review tab and set your app live from the top-right switch."
538
- msgstr ""
539
-
540
- #: inc/view.php:213 inc/view.php:259
541
- msgid "Now everything is done, click on <strong>Authorize App</strong> button."
542
- msgstr ""
543
-
544
- #: inc/view.php:219
545
- msgid "Facebook App ID"
546
- msgstr ""
547
-
548
- #: inc/view.php:220
549
- msgid "ID from your app created on facebook website."
550
- msgstr ""
551
-
552
- #: inc/view.php:231
553
- msgid "Facebook App Secret"
554
- msgstr ""
555
-
556
- #: inc/view.php:232
557
- msgid "Secret from your app created on facebook website. "
558
- msgstr ""
559
-
560
- #: inc/view.php:240 inc/view.php:287
561
- msgid "Authorize App"
562
- msgstr ""
563
-
564
- #: inc/view.php:248
565
- msgid "Add Your Linkedin Account Following The Instructions On The Left"
566
- msgstr ""
567
-
568
- #: inc/view.php:253
569
- msgid ""
570
- "Enter the required details and pay special attention to the further fields :"
571
- msgstr ""
572
-
573
- #: inc/view.php:254
574
- msgid "Make sure you set Live Status to LIVE"
575
- msgstr ""
576
-
577
- #: inc/view.php:255
578
- msgid "Default Scope should have r_basicprofile and rw_nus checked"
579
- msgstr ""
580
-
581
- #: inc/view.php:256
582
- msgid ""
583
- "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into OAuth "
584
- "2.0 Redirect URLs"
585
- msgstr ""
586
-
587
- #: inc/view.php:257
588
- msgid ""
589
- "Once all required fields are filled click on Add Application button, get the "
590
- "API Key and Secret Key and paste them in the fields on the right"
591
- msgstr ""
592
-
593
- #: inc/view.php:265
594
- msgid "Linkedin API Key"
595
- msgstr ""
596
-
597
- #: inc/view.php:266
598
- msgid "API Key that you get once you create an app"
599
- msgstr ""
600
-
601
- #: inc/view.php:277
602
- msgid "Linkedin Secret Key"
603
- msgstr ""
604
-
605
- #: inc/view.php:278
606
- msgid "Secret Key that you get once you create an app"
607
- msgstr ""
608
-
609
- #. Description of the plugin/theme
610
- msgid ""
611
- "Wordpress plugin that helps you to keeps your old posts alive by sharing "
612
- "them and driving more traffic to them from twitter/facebook or linkedin. It "
613
- "also helps you to promote your content. You can set time and no of posts to "
614
- "share to drive more traffic.For questions, comments, or feature requests, <a "
615
- "href=\"https://themeisle.com/contact/?"
616
- "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
617
- msgstr ""
1
+ # Copyright (C) 2014 Revive Old Post (Former Tweet Old Post)
2
+ # This file is distributed under the same license as the Revive Old Post (Former Tweet Old Post) package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Revive Old Post (Former Tweet Old Post) 6.8\n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/tweet-old-post\n"
7
+ "POT-Creation-Date: 2014-07-15 23:58+0100\n"
8
+ "PO-Revision-Date: 2014-07-16 00:07+0100\n"
9
+ "Last-Translator: Ionut <friends@themeisle.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
+ "X-Generator: Poedit 1.5.7\n"
15
+ "X-Poedit-KeywordsList: _;__;_e\n"
16
+ "X-Poedit-Basepath: ../\n"
17
+ "X-Poedit-SearchPath-0: .\n"
18
+ "X-Poedit-SearchPath-1: inc\n"
19
+
20
+ #: inc/class-remote-notification-client.php:260
21
+ msgid "Dismiss notification"
22
+ msgstr ""
23
+
24
+ #: inc/class-remote-notification-client.php:262
25
+ msgid "Dismiss"
26
+ msgstr ""
27
+
28
+ #: inc/config.php:24
29
+ msgid "Post Content"
30
+ msgstr ""
31
+
32
+ #: inc/config.php:28
33
+ msgid "What do you want to share?"
34
+ msgstr ""
35
+
36
+ #: inc/config.php:30
37
+ msgid "Title Only"
38
+ msgstr ""
39
+
40
+ #: inc/config.php:31
41
+ msgid "Body Only"
42
+ msgstr ""
43
+
44
+ #: inc/config.php:32
45
+ msgid "Title & Body"
46
+ msgstr ""
47
+
48
+ #: inc/config.php:33
49
+ msgid "Custom Field"
50
+ msgstr ""
51
+
52
+ #: inc/config.php:39
53
+ msgid "Post Content Custom Field"
54
+ msgstr ""
55
+
56
+ #: inc/config.php:43
57
+ msgid "Which custom field do you want to fetch info from?"
58
+ msgstr ""
59
+
60
+ #: inc/config.php:49
61
+ msgid "Additional Text"
62
+ msgstr ""
63
+
64
+ #: inc/config.php:53
65
+ msgid "Text added to your auto posts"
66
+ msgstr ""
67
+
68
+ #: inc/config.php:59
69
+ msgid "Additional Text At"
70
+ msgstr ""
71
+
72
+ #: inc/config.php:63
73
+ msgid "Where do you want the text to be added?"
74
+ msgstr ""
75
+
76
+ #: inc/config.php:65
77
+ msgid "Beginning of Post"
78
+ msgstr ""
79
+
80
+ #: inc/config.php:66
81
+ msgid "End of Post"
82
+ msgstr ""
83
+
84
+ #: inc/config.php:72
85
+ msgid "Include Link"
86
+ msgstr ""
87
+
88
+ #: inc/config.php:76
89
+ msgid "Include a link to your post?"
90
+ msgstr ""
91
+
92
+ #: inc/config.php:78
93
+ msgid "Yes"
94
+ msgstr ""
95
+
96
+ #: inc/config.php:79
97
+ msgid "No"
98
+ msgstr ""
99
+
100
+ #: inc/config.php:85
101
+ msgid "Fetch URL From Custom Field"
102
+ msgstr ""
103
+
104
+ #: inc/config.php:89
105
+ msgid "URL will be fetched from a custom field."
106
+ msgstr ""
107
+
108
+ #: inc/config.php:95
109
+ msgid "URL Custom Field"
110
+ msgstr ""
111
+
112
+ #: inc/config.php:99
113
+ msgid "URL will be fetched from the specified custom field."
114
+ msgstr ""
115
+
116
+ #: inc/config.php:105
117
+ msgid "Use URL Shortner"
118
+ msgstr ""
119
+
120
+ #: inc/config.php:117
121
+ msgid "URL Shortner Service"
122
+ msgstr ""
123
+
124
+ #: inc/config.php:121
125
+ msgid "Shorten the link to your post."
126
+ msgstr ""
127
+
128
+ #: inc/config.php:123
129
+ msgid "wp short url"
130
+ msgstr ""
131
+
132
+ #: inc/config.php:125
133
+ msgid "is.gd"
134
+ msgstr ""
135
+
136
+ #: inc/config.php:126
137
+ msgid "bit.ly"
138
+ msgstr ""
139
+
140
+ #: inc/config.php:138
141
+ msgid "Bitly Key"
142
+ msgstr ""
143
+
144
+ #: inc/config.php:148
145
+ msgid "Bitly User"
146
+ msgstr ""
147
+
148
+ #: inc/config.php:158
149
+ msgid "Hashtags"
150
+ msgstr ""
151
+
152
+ #: inc/config.php:162
153
+ msgid "Include #hashtags in your auto posts?"
154
+ msgstr ""
155
+
156
+ #: inc/config.php:164
157
+ msgid "Don't add any hashtags"
158
+ msgstr ""
159
+
160
+ #: inc/config.php:165
161
+ msgid "Common hashtags for all shares"
162
+ msgstr ""
163
+
164
+ #: inc/config.php:166
165
+ msgid "Create hashtags from Categories"
166
+ msgstr ""
167
+
168
+ #: inc/config.php:167
169
+ msgid "Create hashtags from Tags"
170
+ msgstr ""
171
+
172
+ #: inc/config.php:168
173
+ msgid "Create hashtags from Custom Fields"
174
+ msgstr ""
175
+
176
+ #: inc/config.php:174
177
+ msgid "Common Hashtags"
178
+ msgstr ""
179
+
180
+ #: inc/config.php:178
181
+ msgid "Specify which hashtags you want to be used. eg. #example, #example2"
182
+ msgstr ""
183
+
184
+ #: inc/config.php:184
185
+ msgid "Maximum Hashtags Length"
186
+ msgstr ""
187
+
188
+ #: inc/config.php:188
189
+ msgid "Set to 0 (characters) to include all."
190
+ msgstr ""
191
+
192
+ #: inc/config.php:194
193
+ msgid "Hashtag Custom Field"
194
+ msgstr ""
195
+
196
+ #: inc/config.php:198
197
+ msgid "Fetch hashtags from specified custom field"
198
+ msgstr ""
199
+
200
+ #: inc/config.php:204
201
+ msgid "Minimum interval between shares"
202
+ msgstr ""
203
+
204
+ #: inc/config.php:208
205
+ msgid "Minimum time between shares (Hour/Hours), 0.4 can be used also."
206
+ msgstr ""
207
+
208
+ #: inc/config.php:214
209
+ msgid "Minimum age of post to be eligible for sharing"
210
+ msgstr ""
211
+
212
+ #: inc/config.php:218 inc/config.php:228
213
+ msgid "Day/Days - 0 for Disabled"
214
+ msgstr ""
215
+
216
+ #: inc/config.php:224
217
+ msgid "Maximum age of post to be eligible for sharing"
218
+ msgstr ""
219
+
220
+ #: inc/config.php:234
221
+ msgid "Number of Posts to share"
222
+ msgstr ""
223
+
224
+ #: inc/config.php:238
225
+ msgid "Number of posts to share each time"
226
+ msgstr ""
227
+
228
+ #: inc/config.php:246
229
+ msgid "Post with Image"
230
+ msgstr ""
231
+
232
+ #: inc/config.php:250
233
+ msgid "Check if you want to add the post featured image to the share"
234
+ msgstr ""
235
+
236
+ #: inc/config.php:256
237
+ msgid "Share old posts more than once"
238
+ msgstr ""
239
+
240
+ #: inc/config.php:260
241
+ msgid ""
242
+ "By default once a post is shared it will not be shared again until you stop/"
243
+ "start the plugin"
244
+ msgstr ""
245
+
246
+ #: inc/config.php:268
247
+ msgid "Post Type"
248
+ msgstr ""
249
+
250
+ #: inc/config.php:272
251
+ msgid "What type of items do you want to share?"
252
+ msgstr ""
253
+
254
+ #: inc/config.php:279
255
+ msgid "Google Analytics Campaign Tracking"
256
+ msgstr ""
257
+
258
+ #: inc/config.php:283
259
+ msgid ""
260
+ "Enabling Campaign Tracking you would be able to see how much traffic Revive "
261
+ "Old Post generated."
262
+ msgstr ""
263
+
264
+ #: inc/config.php:289
265
+ msgid "Exclude Specific Categories"
266
+ msgstr ""
267
+
268
+ #: inc/config.php:293
269
+ msgid ""
270
+ "Select which categories do you want to exclude to share from? Blank - None"
271
+ msgstr ""
272
+
273
+ #: inc/core.php:81
274
+ msgid "Tweet Old Post is already active!"
275
+ msgstr ""
276
+
277
+ #: inc/core.php:101
278
+ msgid "ROP is already inactive!"
279
+ msgstr ""
280
+
281
+ #: inc/core.php:811
282
+ msgid "Custom Tweet User Interval"
283
+ msgstr ""
284
+
285
+ #: inc/core.php:1127
286
+ msgid "Could not connect to Twitter!"
287
+ msgstr ""
288
+
289
+ #: inc/core.php:1385
290
+ msgid "This is only available in the"
291
+ msgstr ""
292
+
293
+ #: inc/core.php:1385
294
+ msgid "PRO version"
295
+ msgstr ""
296
+
297
+ #: inc/core.php:1644
298
+ msgid "Exclude Posts"
299
+ msgstr ""
300
+
301
+ #: inc/exclude-posts.php:24
302
+ msgid "Tweet Old Post Options Updated."
303
+ msgstr ""
304
+
305
+ #: inc/exclude-posts.php:63
306
+ msgid "No post selected please select a post to be excluded."
307
+ msgstr ""
308
+
309
+ #: inc/exclude-posts.php:70
310
+ msgid "Posts excluded successfully."
311
+ msgstr ""
312
+
313
+ #: inc/exclude-posts.php:155
314
+ msgid "Selected Categories"
315
+ msgstr ""
316
+
317
+ #: inc/exclude-posts.php:157
318
+ msgid "Filter"
319
+ msgstr ""
320
+
321
+ #: inc/exclude-posts.php:168
322
+ msgid "&laquo;"
323
+ msgstr ""
324
+
325
+ #: inc/exclude-posts.php:169
326
+ msgid "&raquo;"
327
+ msgstr ""
328
+
329
+ #: inc/exclude-posts.php:177 inc/exclude-posts.php:272
330
+ #, php-format
331
+ msgid "Displaying %s&#8211;%s of %s"
332
+ msgstr ""
333
+
334
+ #: inc/exclude-posts.php:356
335
+ msgid "No Posts found. Review your search or filter criteria/term."
336
+ msgstr ""
337
+
338
+ #: inc/exclude-posts.php:363
339
+ msgid ""
340
+ "You do not have enough permission to set the option. Please contact your "
341
+ "admin."
342
+ msgstr ""
343
+
344
+ #: inc/view-exclude.php:4 inc/view.php:3
345
+ msgid "After 6 months of hard work, we have just released"
346
+ msgstr ""
347
+
348
+ #: inc/view-exclude.php:4 inc/view.php:3
349
+ msgid "the island of WordPress themes."
350
+ msgstr ""
351
+
352
+ #: inc/view-exclude.php:5 inc/view.php:4
353
+ msgid "Show Me"
354
+ msgstr ""
355
+
356
+ #: inc/view-exclude.php:15 inc/view.php:14
357
+ msgid "by"
358
+ msgstr ""
359
+
360
+ #: inc/view-exclude.php:18 inc/view.php:17
361
+ msgid "Show your love"
362
+ msgstr ""
363
+
364
+ #: inc/view-exclude.php:19 inc/view.php:18
365
+ msgid "Leave A Review"
366
+ msgstr ""
367
+
368
+ #: inc/view-exclude.php:30
369
+ msgid "Revive Old Post is set to share on a"
370
+ msgstr ""
371
+
372
+ #: inc/view-exclude.php:32 inc/view.php:31
373
+ msgid "hours interval, "
374
+ msgstr ""
375
+
376
+ #: inc/view-exclude.php:33 inc/view.php:32
377
+ msgid "and the next share will take place in: "
378
+ msgstr ""
379
+
380
+ #: inc/view-exclude.php:38
381
+ msgid "Revive Old Post is not set to share!"
382
+ msgstr ""
383
+
384
+ #: inc/view-exclude.php:42
385
+ msgid ""
386
+ "You have selected following POST IDs to be excluded from tweeting: <span "
387
+ "id='excludeList' style='font-weight:bold;font-style:italic;'></span>.\n"
388
+ "Note: If you have made any change and dint hit 'Exclude Selected' button "
389
+ "changes will not be saved. "
390
+ msgstr ""
391
+
392
+ #: inc/view.php:29
393
+ msgid "Revive Old Post is set to post on a"
394
+ msgstr ""
395
+
396
+ #: inc/view.php:37
397
+ msgid "Revive Old Post is not set to post!"
398
+ msgstr ""
399
+
400
+ #: inc/view.php:42
401
+ msgid ""
402
+ "Once you click start sharing a post will be sent in 15 sec, also here you "
403
+ "can see the error message if is any."
404
+ msgstr ""
405
+
406
+ #: inc/view.php:52
407
+ msgid "Twitter Login"
408
+ msgstr ""
409
+
410
+ #: inc/view.php:53
411
+ msgid "Login using your Twitter account."
412
+ msgstr ""
413
+
414
+ #: inc/view.php:77 inc/view.php:111
415
+ msgid "Add Account"
416
+ msgstr ""
417
+
418
+ #: inc/view.php:84
419
+ msgid "Facebook Login"
420
+ msgstr ""
421
+
422
+ #: inc/view.php:85
423
+ msgid "Login using your Facebook account."
424
+ msgstr ""
425
+
426
+ #: inc/view.php:109
427
+ msgid "Authorize"
428
+ msgstr ""
429
+
430
+ #: inc/view.php:118
431
+ msgid "Linkedin Login"
432
+ msgstr ""
433
+
434
+ #: inc/view.php:119
435
+ msgid "Login using your Linkedin account."
436
+ msgstr ""
437
+
438
+ #: inc/view.php:141
439
+ msgid "Add account"
440
+ msgstr ""
441
+
442
+ #: inc/view.php:154
443
+ msgid "Select All"
444
+ msgstr ""
445
+
446
+ #: inc/view.php:165
447
+ msgid "Reset"
448
+ msgstr ""
449
+
450
+ #: inc/view.php:166
451
+ msgid "Save"
452
+ msgstr ""
453
+
454
+ #: inc/view.php:167
455
+ msgid "Start Sharing"
456
+ msgstr ""
457
+
458
+ #: inc/view.php:168
459
+ msgid "Stop Sharing"
460
+ msgstr ""
461
+
462
+ #: inc/view.php:169
463
+ msgid "See Sample Post"
464
+ msgstr ""
465
+
466
+ #: inc/view.php:171
467
+ msgid ""
468
+ "We are not affiliated or partner with Twitter/Facebook/Linkedin in any way."
469
+ msgstr ""
470
+
471
+ #: inc/view.php:176
472
+ msgid "Upgrade Tweet Old Post for only $9.99 - Upgrade To Pro Now!"
473
+ msgstr ""
474
+
475
+ #: inc/view.php:177
476
+ msgid "ThemeIsle - Deadly Simple WordPress Themes"
477
+ msgstr ""
478
+
479
+ #: inc/view.php:178
480
+ msgid "ThemeIsle - Promote Our Themes and Plugins and get 55% Comission"
481
+ msgstr ""
482
+
483
+ #: inc/view.php:185
484
+ msgid "Sample Post Preview"
485
+ msgstr ""
486
+
487
+ #: inc/view.php:187 inc/view.php:196 inc/view.php:242 inc/view.php:289
488
+ msgid "Close preview"
489
+ msgstr ""
490
+
491
+ #: inc/view.php:188
492
+ msgid "Share now"
493
+ msgstr ""
494
+
495
+ #: inc/view.php:194
496
+ msgid "Choose a Profile or Page"
497
+ msgstr ""
498
+
499
+ #: inc/view.php:202
500
+ msgid "Add Your Facebook Account Following The Instructions On The Left"
501
+ msgstr ""
502
+
503
+ #: inc/view.php:206 inc/view.php:252
504
+ msgid "Go on"
505
+ msgstr ""
506
+
507
+ #: inc/view.php:207
508
+ msgid "Click on <strong>Create New App</strong> from the top right corner"
509
+ msgstr ""
510
+
511
+ #: inc/view.php:208
512
+ msgid ""
513
+ "Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and "
514
+ "click on Create App"
515
+ msgstr ""
516
+
517
+ #: inc/view.php:209
518
+ msgid ""
519
+ "Once you arrive on the app dashboard, copy your <strong>App ID</strong> and "
520
+ "<strong>App Secret</strong> in the fields on the right"
521
+ msgstr ""
522
+
523
+ #: inc/view.php:210
524
+ msgid ""
525
+ "Go on Settings tab from the left sidebar menu add the contact email and "
526
+ "click on <strong>Add Platform</strong> and select <strong>Website</strong>"
527
+ msgstr ""
528
+
529
+ #: inc/view.php:211
530
+ msgid ""
531
+ "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into App "
532
+ "Domains and Site URL fields and <strong>Save</strong>"
533
+ msgstr ""
534
+
535
+ #: inc/view.php:212
536
+ msgid ""
537
+ "Go on Status & Review tab and set your app live from the top-right switch."
538
+ msgstr ""
539
+
540
+ #: inc/view.php:213 inc/view.php:259
541
+ msgid "Now everything is done, click on <strong>Authorize App</strong> button."
542
+ msgstr ""
543
+
544
+ #: inc/view.php:219
545
+ msgid "Facebook App ID"
546
+ msgstr ""
547
+
548
+ #: inc/view.php:220
549
+ msgid "ID from your app created on facebook website."
550
+ msgstr ""
551
+
552
+ #: inc/view.php:231
553
+ msgid "Facebook App Secret"
554
+ msgstr ""
555
+
556
+ #: inc/view.php:232
557
+ msgid "Secret from your app created on facebook website. "
558
+ msgstr ""
559
+
560
+ #: inc/view.php:240 inc/view.php:287
561
+ msgid "Authorize App"
562
+ msgstr ""
563
+
564
+ #: inc/view.php:248
565
+ msgid "Add Your Linkedin Account Following The Instructions On The Left"
566
+ msgstr ""
567
+
568
+ #: inc/view.php:253
569
+ msgid ""
570
+ "Enter the required details and pay special attention to the further fields :"
571
+ msgstr ""
572
+
573
+ #: inc/view.php:254
574
+ msgid "Make sure you set Live Status to LIVE"
575
+ msgstr ""
576
+
577
+ #: inc/view.php:255
578
+ msgid "Default Scope should have r_basicprofile and rw_nus checked"
579
+ msgstr ""
580
+
581
+ #: inc/view.php:256
582
+ msgid ""
583
+ "Copy/Paste this url : <strong><?php echo SETTINGSURL; ?></strong> into OAuth "
584
+ "2.0 Redirect URLs"
585
+ msgstr ""
586
+
587
+ #: inc/view.php:257
588
+ msgid ""
589
+ "Once all required fields are filled click on Add Application button, get the "
590
+ "API Key and Secret Key and paste them in the fields on the right"
591
+ msgstr ""
592
+
593
+ #: inc/view.php:265
594
+ msgid "Linkedin API Key"
595
+ msgstr ""
596
+
597
+ #: inc/view.php:266
598
+ msgid "API Key that you get once you create an app"
599
+ msgstr ""
600
+
601
+ #: inc/view.php:277
602
+ msgid "Linkedin Secret Key"
603
+ msgstr ""
604
+
605
+ #: inc/view.php:278
606
+ msgid "Secret Key that you get once you create an app"
607
+ msgstr ""
608
+
609
+ #. Description of the plugin/theme
610
+ msgid ""
611
+ "Wordpress plugin that helps you to keeps your old posts alive by sharing "
612
+ "them and driving more traffic to them from twitter/facebook or linkedin. It "
613
+ "also helps you to promote your content. You can set time and no of posts to "
614
+ "share to drive more traffic.For questions, comments, or feature requests, <a "
615
+ "href=\"https://themeisle.com/contact/?"
616
+ "utm_source=plugindesc&utm_medium=announce&utm_campaign=top\">contact </a> us!"
617
+ msgstr ""
readme.txt CHANGED
@@ -1,770 +1,776 @@
1
- === Revive Old Post (Former Tweet Old Post) ===
2
- Contributors: codeinwp,marius2012,marius_codeinwp,hardeepasrani
3
- Tags: admin, ajax, plugin, twitter, facebook, linkedin, automatic, tweet, share, wordpress, marketing, sharing, Tweet old post, Tweets,evergreen, Promote old post by tweeting about them, Twitter, Auto Tweet, Hashtags, Twitter Hashtags, Tweet Posts, Tweet, Post Tweets, Wordpress Twitter Plugin, Twitter Plugin, Tweet Selected Posts, Twitter, Promote Posts, Tweet Random Post, Share Post, Promote Post, Post Tweets, Wordpress Twitter, Drive Traffic, Tweet Selected Posts
4
- Requires at least: 2.7
5
- Tested up to: 4.1
6
- Stable tag: trunk
7
-
8
-
9
- Plugin to share about your old posts on twitter, facebook, linkedin to get more hits for them and keep them alive.
10
-
11
- == Description ==
12
-
13
- > If you want to see a live demo of the plugin you can check <a href="http://www.youtube.com/watch?v=YOnlWmyO3VU">http://www.youtube.com/watch?v=YOnlWmyO3VU</a>.
14
-
15
- ### Why to upgrade to PRO ?
16
-
17
- Using the <a href="https://themeisle.com/plugins/tweet-old-post-pro/?ref=1">PRO version</a> of the plugin you will unleash the most important functionality : images in tweets . Using those your RT/CTR will go crazy.
18
-
19
- Other notable features :
20
-
21
- * Multiple Social Accounts
22
- * Custom Post Types support
23
- * Linkedin support
24
- * Post with image
25
-
26
- ### What the plugin can do ?
27
-
28
- This plugin helps you to keeps your old posts alive by sharing them and driving more traffic to them from social networks. It also helps you to promote your content. You can set time and no of posts to share to drive more traffic.For questions, comments, or feature requests, <a href="https://themeisle.com/contact/?utm_source=readmetop&utm_medium=announce&utm_campaign=top">contact us</a>!
29
-
30
- For updates follow https://twitter.com/themeisle If you have anything you can let us know <a href="https://themeisle.com/contact/?utm_source=readmetop&utm_medium=announce&utm_campaign=top">here</a>.
31
-
32
- ThemeIsle is a <a href="https://www.codeinwp.com">Codeinwp</a> product.
33
-
34
-
35
- **Fortcoming**
36
-
37
- - Posts queue
38
- - Different post content for each account
39
-
40
-
41
- **Revive Old Post provides following features**
42
-
43
- - Share new and old posts.
44
- - Choose the time between posts.
45
- - Choose the number of posts to share.
46
- - Use hashtags to focus on topics.
47
- - Include links back to your site.
48
- - Exclude categories
49
- - Exclude specific posts.
50
-
51
-
52
- = Translations =
53
-
54
- * sk_SK translation by Patrik Žec (PATWIST) of http://patwist.com
55
-
56
- == Installation ==
57
-
58
- Following are the steps to install the Revive Old Post plugin
59
-
60
- 1. Download the latest version of the Revive Old Posts Plugin to your computer from here.
61
- 2. With an FTP program, access your sites server.
62
- 3. Upload (copy) the Plugin file(s) or folder to the /wp-content/plugins folder.
63
- 4. In your WordPress Administration Panels, click on Plugins from the menu.
64
- 5. You should see Revive Old Posts Plugin listed. If not, with your FTP program, check the folder to see if it is installed. If it isn�t, upload the file(s) again. If it is, delete the files and upload them again.
65
- 6. To turn the Revive Old Posts Plugin on, click Activate.
66
- 7. Check your Administration Panels or WordPress blog to see if the Plugin is working.
67
- 8. You can change the plugin options from Revive Old Posts under settings menu.
68
-
69
- Alternatively you can also follow the following steps to install the Revive Old Post plugin
70
-
71
- 1. In your WordPress Administration Panels, click on Add New option under Plugins from the menu.
72
- 2. Click on upload at the top.
73
- 3. Browse the location and select the Revive Old Post Plugin and click install now.
74
- 4. To turn the Revive Old Posts Plugin on, click Activate.
75
- 5. Check your Administration Panels or WordPress blog to see if the Plugin is working.
76
- 6. You can change the plugin options from Revive Old Posts under settings menu.
77
-
78
- == Frequently Asked Questions ==
79
-
80
- If you have any questions please get in touch with us at,
81
- https://themeisle.com/contact/
82
-
83
-
84
- **Plugin doesn't post at the regular interval**
85
-
86
- - Unfortunately wp_cron function isn't perfect, it trigger just when somebody visit your site, so you nobody visit your site in 3 hours, TOP won't trigger
87
-
88
- **What do I do is a get the WP CRON error ?
89
-
90
- The issue is that your wp-cron.php is not returning a 200 response when hit with a http request originating from your own server, it could be several things, most of the time it's an issue with the server / site and not with TOP.
91
-
92
- Some things you can test are.
93
-
94
- - Are scheduled posts working? (They use wp-cron too).
95
- - Are you hosted on Heart Internet? (wp-cron is known not to work with them).
96
- - If you click Share now from sample post popup does it work?
97
- - Try adding define( 'ALTERNATE_WP_CRON', true ); to your wp-config.php`, does the plugin work?
98
- - Is your site private (I.E. is it behind some kind of authentication, maintenance plugin, .htaccess) if so wp-cron won't work until you remove it, if you are and you temporarily remove the authentication, do tweets start working?
99
-
100
- If you have tried all these then feel free to contact support.
101
-
102
- **If new version doesn't works**
103
-
104
- - Try other versions from http://wordpress.org/extend/plugins/tweet-old-post/download/
105
- - Manually upload it in your plugins folder, activate and use.
106
- - Note: Do not upgrade your plugin if you want to use the older version.
107
-
108
-
109
- **Revive Old post does not posts any tweets?**
110
-
111
- - If its not sharing any posts try playing around with the options. Try setting maxtweetage to none and try again.
112
- - Try removing categories from excluded option. Some of them have posted issues of tweet not getting post when categories are selected in exclued category section.
113
-
114
- **When I publish a new post to Twitter sometimes it’s ok, but sometimes I am getting this error: "code":226,"message":"This request looks like it might be automated. To protect our users from spam and other malicious activity, we can’t complete this action right now. Please try again later"?**
115
-
116
- This message is coming from the new Twitter’s spam protection mechanism. It’s analyzed your message and marked it as spam. As you can expect they don’t share any information about how this thing works. Try to change the format of your messages and use/don’t use/change URL shortener. There are also some reports that Twitter rejects posts coming from hosting providers that were used to abuse it.
117
- Please note: Despite the fact that error is saying "might be automated", it doesn’t mean that Twitter rejects the post because it was made though the API. "Automated" there doesn’t mean "posted/submitted automatically", it means "written/generated automatically".
118
-
119
- **Any more questions or doubts?**
120
-
121
- - Contact us at https://themeisle.com/contact/
122
-
123
-
124
-
125
- == Screenshots ==
126
-
127
- 1. Screenshot 1 Basic configurable options for Tweet Old Post to function, with ability to tweet at random interval.
128
-
129
-
130
- for more you can check out
131
-
132
- https://themeisle.com/plugins/tweet-old-post-lite/
133
-
134
-
135
- == Changelog ==
136
-
137
- **New in v6.9.6.2**
138
-
139
- * Fixed issue with the is.gd shortner refresh
140
-
141
- **New in v6.9.6**
142
-
143
- * Fixed issue cron stop
144
- * Fixed issue for excluded post
145
- * Added exclude posts from custom post types.
146
-
147
-
148
- **New in v6.9.4**
149
-
150
- * Fixed issue with share more than once option
151
-
152
-
153
- **New in v6.9.3**
154
-
155
- * Improved logging system
156
- * Fixed vulnerability issue with update options
157
- * Fixed issues with custom schedule timing
158
- * Improved excluded category design
159
- * Fixed excluded post selection issue
160
-
161
-
162
- **New in v6.8.8**
163
-
164
- Added a more complex logging system
165
- Fixed multiple accounts/posts issue
166
- Fixed 404 twitter login error
167
-
168
- **New in v6.8.5**
169
-
170
- Completely reworked how cron is working
171
- Separated post format by network
172
- Added support for custom schedule
173
- Added remote cron trigger feature
174
-
175
- **New in v6.8.2**
176
-
177
- Fixed no available posts issue
178
-
179
- **New in v6.8.1**
180
-
181
- Added language support and custom post types
182
-
183
- **New in v6.8**
184
-
185
- Added Facebook and Linkedin
186
-
187
- **New in v6.7**
188
-
189
- Fixed interrupted posting issue
190
-
191
- **New in v6.6**
192
-
193
- Fixed excluded category issue and some small others.
194
-
195
- **New in v6.7.7**
196
-
197
- Added Facebook and Linkedin, Facebook is also enabled for the free users
198
- Improved Post with image feature, we can also pull the image from post
199
- Fixed Tweet over 140 chars error
200
- Added Google Analytics Campaign Tracking
201
- Rebranded into Revive Old Post
202
-
203
- **New in v6.7.5**
204
-
205
- Fixed some debug messages
206
-
207
- **New in v6.7.3**
208
-
209
- Added settings link, fixed tweet cutting and added cron debug messages
210
-
211
- **New in v6.6**
212
-
213
- Fixed excluded category issue and some small others.
214
-
215
- **New in v6.0**
216
-
217
- Tweets now are posted immediately, fixed scheduling and added debug messages
218
-
219
- **New in v5.9**
220
-
221
- Tags are converted to lowercase automatically now
222
-
223
- **New in v5.8**
224
-
225
- Added post by image options in the pro version and some fixes.
226
-
227
- **New in v5.7**
228
-
229
- Fixed permissions
230
-
231
- **New in v5.6**
232
-
233
- Added bit.ly back
234
-
235
- **New in v5.5**
236
-
237
- Fixed the table prefix issue
238
-
239
- **New in v5.4**
240
-
241
- Fixed the hashtags length issue
242
-
243
- **New in v5.3**
244
-
245
- Fixed the custom field issue
246
-
247
- **New in v5.2**
248
-
249
- Fixed exclude categories error, added wp short url, fixed oauth error, removed broken shorten services.
250
-
251
- **New in v5.0**
252
-
253
- - Whole plugin was rewrote from scratch and a pro version was added, so after 50 hours of work, here we are. This change will allow us to easier fix issues/ release new features and maintain the plugin.
254
-
255
- **New in v4.0.9**
256
-
257
- - Resolved twitter connectivity issue, for users who were not able to connect in 4.0.8. Twitter has changed their policy
258
- as per https://dev.twitter.com/discussions/24239
259
-
260
-
261
-
262
- **New in v4.0.8**
263
-
264
- - Resolved twitter connectivity issue. Twitter has changed their policy
265
- as per https://dev.twitter.com/discussions/24239
266
-
267
-
268
-
269
- **New in v4.0.7**
270
-
271
- - Resolved tweet not posting issue.
272
-
273
-
274
- **New in v4.0.6**
275
-
276
- - Changed how pages are navigated. Should not conflict with any of the plugin that interacts with twitter ever.
277
- - For "Page not found", update the settings and then authorize with twitter.
278
- - If you are not able to update anything or you are redirecting to your home page, reset the settings and try again.
279
- - Code Cleanup.
280
-
281
-
282
- **New in v4.0.5**
283
-
284
- - Implemented Twitter API v1.1 as Twitter is retiring API v1 from 7th May.
285
- - Handled conflict with BackWPup plugin.
286
- - Some performance improvements with WPSuperCache plugin.
287
- - Some design changes.
288
- - Code Cleanup.
289
-
290
-
291
- **New in v4.0.4**
292
-
293
- - Resolved issue of tweet not posting automatically. Thanks to Daniel Lopez Gonzalez for helping me.
294
- - Minor Fixes
295
-
296
-
297
- **New in v4.0.3**
298
-
299
- - Handled too many tweets when W3 Total Cache plugin is installed. Please check and let me know.
300
- - Bug fixes
301
-
302
-
303
- **New in v4.0.2**
304
-
305
- - Removed the option to specify the consumer key and secret as twitter does not show the application from which its tweeted anymore.
306
- - Most probably, the tweet not posting automatically issue is resolved. Please check and let me know.
307
- - Bug fixes
308
-
309
-
310
- **New in v4.0.1**
311
-
312
- - Resolved issue of page getting blank after returning from twitter
313
- - added pages to exclude post option
314
- - Bug fixes
315
- - updated the steps of creating twitter application check here http://www.ajaymatharu.com/major-update-to-tweet-old-post/
316
-
317
-
318
- **New in v4.0.0**
319
-
320
- - You can now change the application name. Change via Tweet Old Post to your specified name. Follow the Steps here,
321
- http://www.ajaymatharu.com/major-update-to-tweet-old-post/
322
- - Pages can now be included in tweets. Added an option to select what is to be tweeted (pages, posts, or both).
323
- - Removed "." and used "-" when adding additional text, "." was causing grammatical mistakes if sentence was trimmed.
324
- - Added option to specify number of posts that can be tweeted simultaneously. You can specify how many tweets you want at a time.
325
- - Last but not the least, removed random time slot was causing lot of confusion.
326
-
327
-
328
-
329
- **New in v3.3.3**
330
-
331
- - Resolved permission issue of exclude post.
332
-
333
-
334
-
335
- **New in v3.3.2**
336
-
337
- - Resolved too many redirects issue
338
- If its still not working try these steps
339
- - Make sure "Tweet Old Post Admin URL (Current URL)" is showing your current URL.
340
- - Click on "Update Tweet Old Post Options".
341
- - Try to authorize again.
342
- - Removed "_" from hashtags. Previously space in hashtag was replaced with "_". Now there will be no spaces or "_" in hashtags.
343
-
344
-
345
-
346
- **New in v3.3.1**
347
-
348
- - Changed logic for posting data to twitter.
349
- - Resolved bit.ly issue.
350
-
351
-
352
-
353
- **New in v3.3.0**
354
-
355
- - Attempt to fix logs out issue (Tweet Old Post pushes out when any action is performed).
356
-
357
-
358
-
359
- **New in v3.2.9**
360
-
361
- - Option to reset setting. When something goes wrong, please reset the settings and setup again.
362
- - For people still facing issues of conflict with Google Analytics Plugin, this version should work.
363
- - Minor bug fixes.
364
-
365
-
366
-
367
- **New in v3.2.8**
368
-
369
- - Resolved conflict with Google Analytics Plugin.
370
- - Changed the log file location to root of plugin folder.
371
- - Maintained Tweet Cycle. Repeat only when all post have been tweeted.
372
- - Made other optimizations and resolved some minor bugs.
373
-
374
-
375
-
376
- **New in v3.2.7**
377
-
378
- - Added logging for people who cant make it work can enable and check the log, or mail me the log file.
379
- - Brought back the exclude post option.
380
- - Made other optimizations and resolved some minor bugs.
381
- - Check http://www.ajaymatharu.com/tweet-old-post-update-3-2-7/ for more detailed explanation.
382
-
383
-
384
-
385
- **New in v3.2.6**
386
-
387
- - removed exclude post due to security threat. Will work on it and bring it up back.
388
-
389
-
390
-
391
- **New in v3.2.5**
392
-
393
- - Resolved hashtag not posting issue.
394
- - other bug fixes.
395
-
396
-
397
-
398
- **New in v3.2.4**
399
-
400
- - Bug fixes
401
-
402
-
403
-
404
- **New in v3.2.3**
405
-
406
- - Bug fixes
407
-
408
-
409
-
410
- **New in v3.2.2**
411
-
412
- - Resolved bit.ly issue
413
- - new option for hashtags
414
- - other bug fixes
415
-
416
-
417
-
418
- **New in v3.2.1**
419
-
420
- - Bug fixes
421
-
422
-
423
-
424
- **New in v3.2**
425
-
426
- - Bug fixes
427
- - Option to choose to include link in post
428
- - option to post only title or body or both title and body
429
- - option to set additional text either at beginning or end of tweet
430
- - option to pick hashtags from custom field
431
-
432
-
433
-
434
- **New in v3.1.2**
435
-
436
- - Resolved tweets not getting posted when categories are excluded.
437
- - If you are not able to authorise your twitter account set you blog URL in Administration → Settings → General.
438
-
439
-
440
-
441
- **New in v3.1**
442
-
443
- - Resolved issue of plugin flooding twitter account with tweets.
444
- - added provision to exclude some post from selected categories
445
-
446
-
447
-
448
- **New in v3.0**
449
-
450
- - added OAuth authentication
451
- - user defined intervals
452
- - may not work under php 4 requires php 5
453
-
454
-
455
-
456
- **New in v2.0**
457
-
458
- - added provision to select if you want to shorten the URL or not.
459
- - Cleaned other options.
460
-
461
-
462
-
463
- **New in v1.9**
464
-
465
- - Removed PHP 4 support as it was creating problem for lot of people
466
-
467
-
468
-
469
- **New in v1.8**
470
-
471
- - Bug Fixes
472
- - Provision to fetch tweet url from custom field
473
-
474
-
475
-
476
- **New in v1.7**
477
-
478
- - Removed api option from 1click.at not needed api key
479
-
480
-
481
-
482
- **New in v1.6**
483
-
484
- - Made the plugin PHP 4 compatible. Guys try it out and please let me know if that worked.
485
- - Better error prompting. If your tweets are not appearing on twitter. Try "Tweet Now" button you'll see if there is any problem in tweeting.
486
- - Added 1click.at shortning service you need to get the api key from http://theeasyapi.com/ you need to add your machine IP address in the server of http://theeasyapi.com/ for this api key to work.
487
-
488
-
489
-
490
- **New in v1.5**
491
-
492
- - Maximum age of post to be eligible for tweet - allows you to set Maximum age of the post to be eligible for tweet
493
- - Added one more shortner service was looking for j.mp but they dont have the api yet.
494
-
495
-
496
-
497
- **New in v1.4**
498
-
499
- - Hashtags - allows you to set default hashtags for your tweets
500
-
501
-
502
-
503
- **New in v1.3**
504
-
505
- - URL Shortener Service - allows you to select which URL shortener service you want to use.
506
-
507
-
508
-
509
- **New in v1.2**
510
-
511
- - Tweet Prefix - Allows you to set prefix to the tweets.
512
- - Add Data - Allows you to add post data to the tweets
513
- - Tweet now - Button that will tweet at that moment without wanting you to wait for scheduled tweet
514
-
515
-
516
-
517
- **v1.1**
518
-
519
- - Twitter Username & Password - Using this twitter account credentials plugin will tweet.
520
- - Minimum interval between tweets - allows you to determine how often the plugin will automatically choose and tweet a blog post for you.
521
- - Randomness interval - This is a contributing factor in minimum interval so that posts are randomly chosen and tweeted from your blog.
522
- - Minimum age of post to be eligible for tweet - This allows you to set how old your post should be in order to be eligible for the tweet.
523
- - Categories to omit from tweets - This will protect posts from the selected categories from being tweeted.
524
-
525
-
526
- == Other Notes ==
527
-
528
-
529
-
530
- **New in v4.0.9**
531
-
532
- - Resolved twitter connectivity issue, for users who were not able to connect in 4.0.8. Twitter has changed their policy
533
- as per https://dev.twitter.com/discussions/24239
534
-
535
-
536
- **New in v4.0.8**
537
-
538
- - Resolved twitter connectivity issue. Twitter has changed their policy
539
- as per https://dev.twitter.com/discussions/24239
540
-
541
-
542
- **New in v4.0.7**
543
-
544
- - Resolved tweet not posting issue.
545
-
546
-
547
- **New in v4.0.6**
548
-
549
- - Changed how pages are navigated. Should not conflict with any of the plugin that interacts with twitter ever.
550
- - For "Page not found", update the settings and then authorize with twitter.
551
- - If you are not able to update anything or you are redirecting to your home page, reset the settings and try again.
552
- - Code Cleanup.
553
-
554
-
555
- **New in v4.0.5**
556
-
557
- - Implemented Twitter API v1.1 as Twitter is retiring API v1 from 7th May.
558
- - Handled conflict with BackWPup plugin.
559
- - Some performance improvements with WPSuperCache plugin.
560
- - Some design changes.
561
- - Code Cleanup.
562
-
563
-
564
- **New in v4.0.4**
565
-
566
- - Resolved issue of tweet not posting automatically . Thanks to Daniel Lopez Gonzalez for helping me.
567
- - Minor Fixes
568
-
569
-
570
- **New in v4.0.3**
571
-
572
- - Handled too many tweets when W3 Total Cache plugin is installed. Please check and let me know.
573
- - Bug fixes
574
-
575
-
576
- **New in v4.0.2**
577
-
578
- - Removed the option to specify the consumer key and secret as twitter does not show the application from which its tweeted anymore.
579
- - Most probably, the tweet not posting automatically issue is resolved. Please check and let me know.
580
- - Bug fixes
581
-
582
-
583
- **New in v4.0.1**
584
-
585
- - Resolved issue of page getting blank after returning from twitter
586
- - added pages to exclude post option
587
- - Bug fixes
588
- - updated the steps of creating twitter application check here http://www.ajaymatharu.com/major-update-to-tweet-old-post/
589
-
590
-
591
- **New in v4.0.0**
592
-
593
- - You can now change the application name. Change via Tweet Old Post to your specified name. Follow the Steps here,
594
- http://www.ajaymatharu.com/major-update-to-tweet-old-post/
595
- - Pages can now be included in tweets. Added an option to select what is to be tweeted (pages, posts, or both).
596
- - Removed "." and used "-" when adding additional text, "." was causing grammatical mistakes if sentence was trimmed.
597
- - Added option to specify number of posts that can be tweeted simultaneously. You can specify how many tweets you want at a time.
598
- - Last but not the least, removed random time slot was causing lot of confusion.
599
-
600
-
601
- **New in v3.3.3**
602
-
603
- - Resolved permission issue of exclude post.
604
-
605
-
606
- **New in v3.3.2**
607
-
608
- - Resolved too many redirects issue
609
- If its still not working try these steps
610
- - Make sure "Tweet Old Post Admin URL (Current URL)" is showing your current URL.
611
- - Click on "Update Tweet Old Post Options".
612
- - Try to authorize again.
613
- - Removed "_" from hashtags. Previously space in hashtag was replaced with "_". Now there will be no spaces or "_" in hashtags.
614
-
615
-
616
- **New in v3.3.1**
617
-
618
- - Changed logic for posting data to twitter.
619
- - Resolved bit.ly issue.
620
-
621
-
622
- **New in v3.3.0**
623
-
624
- - Attempt to fix logs out issue (Tweet Old Post pushes out when any action is performed).
625
-
626
-
627
- **New in v3.2.9**
628
-
629
- - Option to reset setting. When something goes wrong, please reset the settings and setup again.
630
- - For people still facing issues of conflict with Google Analytics Plugin, this version should work.
631
- - Minor bug fixes.
632
-
633
-
634
- **New in v3.2.8**
635
-
636
- - Resolved conflict with Google Analytics Plugin.
637
- - Changed the log file location to root of plugin folder.
638
- - Maintained Tweet Cycle. Repeat only when all post have been tweeted.
639
- - Made other optimizations and resolved some minor bugs.
640
-
641
-
642
- **New in v3.2.7**
643
-
644
- - Added logging for people who cant make it work can enable and check the log, or mail me the log file.
645
- - Brought back the exclude post option.
646
- - Made other optimizations and resolved some minor bugs.
647
- - Check http://www.ajaymatharu.com/tweet-old-post-update-3-2-7/ for more detailed explanation.
648
-
649
-
650
- **New in v3.2.6**
651
-
652
- - removed exclude post due to security threat. Will work on it and bring it up back.
653
-
654
-
655
- **New in v3.2.5**
656
-
657
- - Resolved hashtag not posting issue.
658
- - other bug fixes.
659
-
660
-
661
- **New in v3.2.4**
662
-
663
- - Bug fixes
664
-
665
-
666
- **New in v3.2.3**
667
-
668
- - Bug fixes
669
-
670
-
671
- **New in v3.2.2**
672
-
673
- - Resolved bit.ly issue
674
- - new option for hashtags
675
- - other bug fixes
676
-
677
-
678
- **New in v3.2.1**
679
-
680
- - Bug fixes
681
-
682
-
683
- **New in v3.2**
684
-
685
- - Bug fixes
686
- - Option to choose to include link in post
687
- - option to post only title or body or both title and body
688
- - option to set additional text either at beginning or end of tweet
689
- - option to pick hashtags from custom field
690
-
691
-
692
- **New in v3.1.2**
693
-
694
- - Resolved tweets not getting posted when categories are excluded.
695
- - If you are not able to authorise your twitter account set you blog URL in Administration → Settings → General.
696
-
697
-
698
- **New in v3.1**
699
-
700
- - Resolved issue of plugin flooding twitter account with tweets.
701
- - added provision to exclude some post from selected categories
702
-
703
-
704
- **New in v3.0**
705
-
706
- - added OAuth authentication
707
- - user defined intervals
708
- - may not work under php 4 requires php 5
709
-
710
-
711
- **New in v2.0**
712
-
713
- - added provision to select if you want to shorten the URL or not.
714
- - Cleaned other options.
715
-
716
-
717
- **New in v1.9**
718
-
719
- - Removed PHP 4 support as it was creating problem for lot of people
720
-
721
-
722
- **New in v1.8**
723
-
724
- - Bug Fixes
725
- - Provision to fetch tweet url from custom field
726
-
727
-
728
- **New in v1.7**
729
-
730
- - Removed api option from 1click.at not needed api key
731
-
732
-
733
- **New in v1.6**
734
-
735
- - Made the plugin PHP 4 compatible. Guys try it out and please let me know if that worked.
736
- - Better error prompting. If your tweets are not appearing on twitter. Try "Tweet Now" button you'll see if there is any problem in tweeting.
737
- - Added 1click.at shortning service you need to get the api key from http://theeasyapi.com/ you need to add your machine IP address in the server of http://theeasyapi.com/ for this api key to work.
738
-
739
-
740
- **New in v1.5**
741
-
742
- - Maximum age of post to be eligible for tweet - allows you to set Maximum age of the post to be eligible for tweet
743
- - Added one more shortner service was looking for j.mp but they dont have the api yet.
744
-
745
-
746
- **New in v1.4**
747
-
748
- - Hashtags - allows you to set default hashtags for your tweets
749
-
750
-
751
- **New in v1.3**
752
-
753
- - URL Shortener Service - allows you to select which URL shortener service you want to use.
754
-
755
-
756
- **New in v1.2**
757
-
758
- - Tweet Prefix - Allows you to set prefix to the tweets.
759
- - Add Data - Allows you to add post data to the tweets
760
- - Tweet now - Button that will tweet at that moment without wanting you to wait for scheduled tweet
761
-
762
-
763
- **v1.1**
764
-
765
- - Twitter Username & Password - Using this twitter account credentials plugin will tweet.
766
- - Minimum interval between tweets - allows you to determine how often the plugin will automatically choose and tweet a blog post for you.
767
- - Randomness interval - This is a contributing factor in minimum interval so that posts are randomly chosen and tweeted from your blog.
768
- - Minimum age of post to be eligible for tweet - This allows you to set how old your post should be in order to be eligible for the tweet.
769
- - Categories to omit from tweets - This will protect posts from the selected categories from being tweeted.
770
-
 
 
 
 
 
 
1
+ === Revive Old Post (Former Tweet Old Post) ===
2
+ Contributors: codeinwp,marius2012,marius_codeinwp,hardeepasrani,Madalin_Themeisle
3
+ Tags: admin, ajax, plugin, twitter, facebook, linkedin, automatic, tweet, share, wordpress, marketing, sharing, Tweet old post, Tweets,evergreen, Promote old post by tweeting about them, Twitter, Auto Tweet, Hashtags, Twitter Hashtags, Tweet Posts, Tweet, Post Tweets, Wordpress Twitter Plugin, Twitter Plugin, Tweet Selected Posts, Twitter, Promote Posts, Tweet Random Post, Share Post, Promote Post, Post Tweets, Wordpress Twitter, Drive Traffic, Tweet Selected Posts
4
+ Requires at least: 2.7
5
+ Tested up to: 4.2.2
6
+ Stable tag: trunk
7
+
8
+
9
+ Plugin to share about your old posts on twitter, facebook, linkedin to get more hits for them and keep them alive.
10
+
11
+ == Description ==
12
+
13
+ > If you want to see a live demo of the plugin you can check <a href="http://www.youtube.com/watch?v=YOnlWmyO3VU">http://www.youtube.com/watch?v=YOnlWmyO3VU</a>.
14
+
15
+ ### Why to upgrade to PRO ?
16
+
17
+ Using the <a rel="friend" href="https://themeisle.com/plugins/tweet-old-post-pro/">PRO version</a> of the plugin you will unleash the most important functionality : images in tweets . Using those your RT/CTR will go crazy.
18
+
19
+ Other notable features :
20
+
21
+ * Multiple Social Accounts
22
+ * Custom Post Types support
23
+ * Linkedin support
24
+ * Post with image
25
+ * Custom Schedule
26
+ * Post to Xing / Tumblr
27
+
28
+ ### What the plugin can do ?
29
+
30
+ This plugin helps you to keeps your old posts alive by sharing them and driving more traffic to them from social networks. It also helps you to promote your content. You can set time and no of posts to share to drive more traffic.For questions, comments, or feature requests, <a href="https://themeisle.com/contact/?utm_source=readmetop&utm_medium=announce&utm_campaign=top">contact us</a>!
31
+
32
+ For updates follow https://twitter.com/themeisle If you have anything you can let us know <a href="https://themeisle.com/contact/?utm_source=readmetop&utm_medium=announce&utm_campaign=top">here</a>.
33
+
34
+ ThemeIsle is a Codeinwp product where we also offer a <a href="http://www.codeinwp.com" rel="friend" title="psd to wordpress">psd to wordpress service</a>, we blog about different topics like : news, <a href="http://www.codeinwp.com/blog/best-business-corporate-wordpress-themes/" rel="friend"> business themes </a> or <a href="http://justfreethemes.com/" rel="friend">free themes</a>
35
+
36
+
37
+ **Revive Old Post provides following features**
38
+
39
+ - Share new and old posts.
40
+ - Choose the time between posts.
41
+ - Choose the number of posts to share.
42
+ - Use hashtags to focus on topics.
43
+ - Include links back to your site.
44
+ - Exclude categories
45
+ - Exclude specific posts.
46
+
47
+
48
+ = Translations =
49
+
50
+ * sk_SK translation by Patrik Žec (PATWIST) of http://patwist.com
51
+
52
+ == Installation ==
53
+
54
+ Following are the steps to install the Revive Old Post plugin
55
+
56
+ 1. Download the latest version of the Revive Old Posts Plugin to your computer from here.
57
+ 2. With an FTP program, access your sites server.
58
+ 3. Upload (copy) the Plugin file(s) or folder to the /wp-content/plugins folder.
59
+ 4. In your WordPress Administration Panels, click on Plugins from the menu.
60
+ 5. You should see Revive Old Posts Plugin listed. If not, with your FTP program, check the folder to see if it is installed. If it isn�t, upload the file(s) again. If it is, delete the files and upload them again.
61
+ 6. To turn the Revive Old Posts Plugin on, click Activate.
62
+ 7. Check your Administration Panels or WordPress blog to see if the Plugin is working.
63
+ 8. You can change the plugin options from Revive Old Posts under settings menu.
64
+
65
+ Alternatively you can also follow the following steps to install the Revive Old Post plugin
66
+
67
+ 1. In your WordPress Administration Panels, click on Add New option under Plugins from the menu.
68
+ 2. Click on upload at the top.
69
+ 3. Browse the location and select the Revive Old Post Plugin and click install now.
70
+ 4. To turn the Revive Old Posts Plugin on, click Activate.
71
+ 5. Check your Administration Panels or WordPress blog to see if the Plugin is working.
72
+ 6. You can change the plugin options from Revive Old Posts under settings menu.
73
+
74
+ == Frequently Asked Questions ==
75
+ If you have any questions please get in touch with us at,
76
+ https://themeisle.com/contact/
77
+
78
+ **Before asking any question you need to check if you have the latest version, either PRO or FREE.**
79
+
80
+
81
+ **Plugin doesn't post at the regular interval or sends more posts than it should send to social networks.**
82
+
83
+ - Unfortunately wp_cron function isn't perfect, it trigger just when somebody visit your site, so you nobody visit your site in 3 hours, ROP won't trigger. In order to achieve this you need to enable Remote Check and add this line to your wp-config.php right after the lines with database credentials:
84
+
85
+ > define('DISABLE_WP_CRON', true);
86
+
87
+ **Post are not sent to the social networks and i always see the green badge with 'You can refresh the page to see the next schedule !'**
88
+
89
+ - You need to add this line to your wp-config.php right after the lines with database credentials:
90
+
91
+ > define('ALTERNATE_WP_CRON', true);
92
+
93
+ **How do i add a facebook account**
94
+
95
+ - Please fallow this tutorial : http://docs.themeisle.com/article/66-how-to-create-a-facebook-application
96
+
97
+ **If new version doesn't works**
98
+
99
+ - Try other versions from http://wordpress.org/extend/plugins/tweet-old-post/download/
100
+ - Manually upload it in your plugins folder, activate and use.
101
+ - Note: Do not upgrade your plugin if you want to use the older version.
102
+
103
+
104
+ **Any more questions or doubts?**
105
+
106
+ - Contact us at https://themeisle.com/contact/ and send us also a copy from Revive Old Post -> System Info
107
+
108
+
109
+
110
+ == Screenshots ==
111
+
112
+ 1. Screenshot 1 Basic configurable options for Tweet Old Post to function, with ability to tweet at random interval.
113
+
114
+
115
+ for more you can check out
116
+
117
+ https://themeisle.com/plugins/tweet-old-post-lite/
118
+
119
+
120
+ == Changelog ==
121
+
122
+
123
+ **New in v7.0.8**
124
+
125
+ * Added facebook tutorial for facebook share.
126
+ * Fixed multisite issue for redirect url
127
+ * Making translation ready for new wordpress.org system
128
+ * Fixed single quotes problem
129
+ * Fixed tumblr tags
130
+
131
+ **New in v7.0.4**
132
+
133
+ * Changed pro banner.
134
+ * Fixed bugs with the new facebook api changes.
135
+
136
+ **New in v7.0.2**
137
+
138
+ * Removed twitter update_with_media call.
139
+ * Fixed activation error notices when WP_DEBUG was enabled
140
+
141
+ **New in v7.0**
142
+
143
+ * Fixed issue with duplicate posting
144
+ * Added Xing and Tumbr Networks
145
+ * Fixed issue with random posts on large databases.
146
+
147
+ **New in v6.9.6**
148
+
149
+ * Fixed issue cron stop
150
+ * Fixed issue for excluded post
151
+ * Added exclude posts from custom post types.
152
+
153
+
154
+ **New in v6.9.4**
155
+
156
+ * Fixed issue with share more than once option
157
+
158
+
159
+ **New in v6.9.3**
160
+
161
+ * Improved logging system
162
+ * Fixed vulnerability issue with update options
163
+ * Fixed issues with custom schedule timing
164
+ * Improved excluded category design
165
+ * Fixed excluded post selection issue
166
+
167
+
168
+ **New in v6.8.8**
169
+
170
+ Added a more complex logging system
171
+ Fixed multiple accounts/posts issue
172
+ Fixed 404 twitter login error
173
+
174
+ **New in v6.8.5**
175
+
176
+ Completely reworked how cron is working
177
+ Separated post format by network
178
+ Added support for custom schedule
179
+ Added remote cron trigger feature
180
+
181
+ **New in v6.8.2**
182
+
183
+ Fixed no available posts issue
184
+
185
+ **New in v6.8.1**
186
+
187
+ Added language support and custom post types
188
+
189
+ **New in v6.8**
190
+
191
+ Added Facebook and Linkedin
192
+
193
+ **New in v6.7**
194
+
195
+ Fixed interrupted posting issue
196
+
197
+ **New in v6.6**
198
+
199
+ Fixed excluded category issue and some small others.
200
+
201
+ **New in v6.7.7**
202
+
203
+ Added Facebook and Linkedin, Facebook is also enabled for the free users
204
+ Improved Post with image feature, we can also pull the image from post
205
+ Fixed Tweet over 140 chars error
206
+ Added Google Analytics Campaign Tracking
207
+ Rebranded into Revive Old Post
208
+
209
+ **New in v6.7.5**
210
+
211
+ Fixed some debug messages
212
+
213
+ **New in v6.7.3**
214
+
215
+ Added settings link, fixed tweet cutting and added cron debug messages
216
+
217
+ **New in v6.6**
218
+
219
+ Fixed excluded category issue and some small others.
220
+
221
+ **New in v6.0**
222
+
223
+ Tweets now are posted immediately, fixed scheduling and added debug messages
224
+
225
+ **New in v5.9**
226
+
227
+ Tags are converted to lowercase automatically now
228
+
229
+ **New in v5.8**
230
+
231
+ Added post by image options in the pro version and some fixes.
232
+
233
+ **New in v5.7**
234
+
235
+ Fixed permissions
236
+
237
+ **New in v5.6**
238
+
239
+ Added bit.ly back
240
+
241
+ **New in v5.5**
242
+
243
+ Fixed the table prefix issue
244
+
245
+ **New in v5.4**
246
+
247
+ Fixed the hashtags length issue
248
+
249
+ **New in v5.3**
250
+
251
+ Fixed the custom field issue
252
+
253
+ **New in v5.2**
254
+
255
+ Fixed exclude categories error, added wp short url, fixed oauth error, removed broken shorten services.
256
+
257
+ **New in v5.0**
258
+
259
+ - Whole plugin was rewrote from scratch and a pro version was added, so after 50 hours of work, here we are. This change will allow us to easier fix issues/ release new features and maintain the plugin.
260
+
261
+ **New in v4.0.9**
262
+
263
+ - Resolved twitter connectivity issue, for users who were not able to connect in 4.0.8. Twitter has changed their policy
264
+ as per https://dev.twitter.com/discussions/24239
265
+
266
+
267
+
268
+ **New in v4.0.8**
269
+
270
+ - Resolved twitter connectivity issue. Twitter has changed their policy
271
+ as per https://dev.twitter.com/discussions/24239
272
+
273
+
274
+
275
+ **New in v4.0.7**
276
+
277
+ - Resolved tweet not posting issue.
278
+
279
+
280
+ **New in v4.0.6**
281
+
282
+ - Changed how pages are navigated. Should not conflict with any of the plugin that interacts with twitter ever.
283
+ - For "Page not found", update the settings and then authorize with twitter.
284
+ - If you are not able to update anything or you are redirecting to your home page, reset the settings and try again.
285
+ - Code Cleanup.
286
+
287
+
288
+ **New in v4.0.5**
289
+
290
+ - Implemented Twitter API v1.1 as Twitter is retiring API v1 from 7th May.
291
+ - Handled conflict with BackWPup plugin.
292
+ - Some performance improvements with WPSuperCache plugin.
293
+ - Some design changes.
294
+ - Code Cleanup.
295
+
296
+
297
+ **New in v4.0.4**
298
+
299
+ - Resolved issue of tweet not posting automatically. Thanks to Daniel Lopez Gonzalez for helping me.
300
+ - Minor Fixes
301
+
302
+
303
+ **New in v4.0.3**
304
+
305
+ - Handled too many tweets when W3 Total Cache plugin is installed. Please check and let me know.
306
+ - Bug fixes
307
+
308
+
309
+ **New in v4.0.2**
310
+
311
+ - Removed the option to specify the consumer key and secret as twitter does not show the application from which its tweeted anymore.
312
+ - Most probably, the tweet not posting automatically issue is resolved. Please check and let me know.
313
+ - Bug fixes
314
+
315
+
316
+ **New in v4.0.1**
317
+
318
+ - Resolved issue of page getting blank after returning from twitter
319
+ - added pages to exclude post option
320
+ - Bug fixes
321
+ - updated the steps of creating twitter application check here http://www.ajaymatharu.com/major-update-to-tweet-old-post/
322
+
323
+
324
+ **New in v4.0.0**
325
+
326
+ - You can now change the application name. Change via Tweet Old Post to your specified name. Follow the Steps here,
327
+ http://www.ajaymatharu.com/major-update-to-tweet-old-post/
328
+ - Pages can now be included in tweets. Added an option to select what is to be tweeted (pages, posts, or both).
329
+ - Removed "." and used "-" when adding additional text, "." was causing grammatical mistakes if sentence was trimmed.
330
+ - Added option to specify number of posts that can be tweeted simultaneously. You can specify how many tweets you want at a time.
331
+ - Last but not the least, removed random time slot was causing lot of confusion.
332
+
333
+
334
+
335
+ **New in v3.3.3**
336
+
337
+ - Resolved permission issue of exclude post.
338
+
339
+
340
+
341
+ **New in v3.3.2**
342
+
343
+ - Resolved too many redirects issue
344
+ If its still not working try these steps
345
+ - Make sure "Tweet Old Post Admin URL (Current URL)" is showing your current URL.
346
+ - Click on "Update Tweet Old Post Options".
347
+ - Try to authorize again.
348
+ - Removed "_" from hashtags. Previously space in hashtag was replaced with "_". Now there will be no spaces or "_" in hashtags.
349
+
350
+
351
+
352
+ **New in v3.3.1**
353
+
354
+ - Changed logic for posting data to twitter.
355
+ - Resolved bit.ly issue.
356
+
357
+
358
+
359
+ **New in v3.3.0**
360
+
361
+ - Attempt to fix logs out issue (Tweet Old Post pushes out when any action is performed).
362
+
363
+
364
+
365
+ **New in v3.2.9**
366
+
367
+ - Option to reset setting. When something goes wrong, please reset the settings and setup again.
368
+ - For people still facing issues of conflict with Google Analytics Plugin, this version should work.
369
+ - Minor bug fixes.
370
+
371
+
372
+
373
+ **New in v3.2.8**
374
+
375
+ - Resolved conflict with Google Analytics Plugin.
376
+ - Changed the log file location to root of plugin folder.
377
+ - Maintained Tweet Cycle. Repeat only when all post have been tweeted.
378
+ - Made other optimizations and resolved some minor bugs.
379
+
380
+
381
+
382
+ **New in v3.2.7**
383
+
384
+ - Added logging for people who cant make it work can enable and check the log, or mail me the log file.
385
+ - Brought back the exclude post option.
386
+ - Made other optimizations and resolved some minor bugs.
387
+ - Check http://www.ajaymatharu.com/tweet-old-post-update-3-2-7/ for more detailed explanation.
388
+
389
+
390
+
391
+ **New in v3.2.6**
392
+
393
+ - removed exclude post due to security threat. Will work on it and bring it up back.
394
+
395
+
396
+
397
+ **New in v3.2.5**
398
+
399
+ - Resolved hashtag not posting issue.
400
+ - other bug fixes.
401
+
402
+
403
+
404
+ **New in v3.2.4**
405
+
406
+ - Bug fixes
407
+
408
+
409
+
410
+ **New in v3.2.3**
411
+
412
+ - Bug fixes
413
+
414
+
415
+
416
+ **New in v3.2.2**
417
+
418
+ - Resolved bit.ly issue
419
+ - new option for hashtags
420
+ - other bug fixes
421
+
422
+
423
+
424
+ **New in v3.2.1**
425
+
426
+ - Bug fixes
427
+
428
+
429
+
430
+ **New in v3.2**
431
+
432
+ - Bug fixes
433
+ - Option to choose to include link in post
434
+ - option to post only title or body or both title and body
435
+ - option to set additional text either at beginning or end of tweet
436
+ - option to pick hashtags from custom field
437
+
438
+
439
+
440
+ **New in v3.1.2**
441
+
442
+ - Resolved tweets not getting posted when categories are excluded.
443
+ - If you are not able to authorise your twitter account set you blog URL in Administration → Settings → General.
444
+
445
+
446
+
447
+ **New in v3.1**
448
+
449
+ - Resolved issue of plugin flooding twitter account with tweets.
450
+ - added provision to exclude some post from selected categories
451
+
452
+
453
+
454
+ **New in v3.0**
455
+
456
+ - added OAuth authentication
457
+ - user defined intervals
458
+ - may not work under php 4 requires php 5
459
+
460
+
461
+
462
+ **New in v2.0**
463
+
464
+ - added provision to select if you want to shorten the URL or not.
465
+ - Cleaned other options.
466
+
467
+
468
+
469
+ **New in v1.9**
470
+
471
+ - Removed PHP 4 support as it was creating problem for lot of people
472
+
473
+
474
+
475
+ **New in v1.8**
476
+
477
+ - Bug Fixes
478
+ - Provision to fetch tweet url from custom field
479
+
480
+
481
+
482
+ **New in v1.7**
483
+
484
+ - Removed api option from 1click.at not needed api key
485
+
486
+
487
+
488
+ **New in v1.6**
489
+
490
+ - Made the plugin PHP 4 compatible. Guys try it out and please let me know if that worked.
491
+ - Better error prompting. If your tweets are not appearing on twitter. Try "Tweet Now" button you'll see if there is any problem in tweeting.
492
+ - Added 1click.at shortning service you need to get the api key from http://theeasyapi.com/ you need to add your machine IP address in the server of http://theeasyapi.com/ for this api key to work.
493
+
494
+
495
+
496
+ **New in v1.5**
497
+
498
+ - Maximum age of post to be eligible for tweet - allows you to set Maximum age of the post to be eligible for tweet
499
+ - Added one more shortner service was looking for j.mp but they dont have the api yet.
500
+
501
+
502
+
503
+ **New in v1.4**
504
+
505
+ - Hashtags - allows you to set default hashtags for your tweets
506
+
507
+
508
+
509
+ **New in v1.3**
510
+
511
+ - URL Shortener Service - allows you to select which URL shortener service you want to use.
512
+
513
+
514
+
515
+ **New in v1.2**
516
+
517
+ - Tweet Prefix - Allows you to set prefix to the tweets.
518
+ - Add Data - Allows you to add post data to the tweets
519
+ - Tweet now - Button that will tweet at that moment without wanting you to wait for scheduled tweet
520
+
521
+
522
+
523
+ **v1.1**
524
+
525
+ - Twitter Username & Password - Using this twitter account credentials plugin will tweet.
526
+ - Minimum interval between tweets - allows you to determine how often the plugin will automatically choose and tweet a blog post for you.
527
+ - Randomness interval - This is a contributing factor in minimum interval so that posts are randomly chosen and tweeted from your blog.
528
+ - Minimum age of post to be eligible for tweet - This allows you to set how old your post should be in order to be eligible for the tweet.
529
+ - Categories to omit from tweets - This will protect posts from the selected categories from being tweeted.
530
+
531
+
532
+ == Other Notes ==
533
+
534
+
535
+
536
+ **New in v4.0.9**
537
+
538
+ - Resolved twitter connectivity issue, for users who were not able to connect in 4.0.8. Twitter has changed their policy
539
+ as per https://dev.twitter.com/discussions/24239
540
+
541
+
542
+ **New in v4.0.8**
543
+
544
+ - Resolved twitter connectivity issue. Twitter has changed their policy
545
+ as per https://dev.twitter.com/discussions/24239
546
+
547
+
548
+ **New in v4.0.7**
549
+
550
+ - Resolved tweet not posting issue.
551
+
552
+
553
+ **New in v4.0.6**
554
+
555
+ - Changed how pages are navigated. Should not conflict with any of the plugin that interacts with twitter ever.
556
+ - For "Page not found", update the settings and then authorize with twitter.
557
+ - If you are not able to update anything or you are redirecting to your home page, reset the settings and try again.
558
+ - Code Cleanup.
559
+
560
+
561
+ **New in v4.0.5**
562
+
563
+ - Implemented Twitter API v1.1 as Twitter is retiring API v1 from 7th May.
564
+ - Handled conflict with BackWPup plugin.
565
+ - Some performance improvements with WPSuperCache plugin.
566
+ - Some design changes.
567
+ - Code Cleanup.
568
+
569
+
570
+ **New in v4.0.4**
571
+
572
+ - Resolved issue of tweet not posting automatically . Thanks to Daniel Lopez Gonzalez for helping me.
573
+ - Minor Fixes
574
+
575
+
576
+ **New in v4.0.3**
577
+
578
+ - Handled too many tweets when W3 Total Cache plugin is installed. Please check and let me know.
579
+ - Bug fixes
580
+
581
+
582
+ **New in v4.0.2**
583
+
584
+ - Removed the option to specify the consumer key and secret as twitter does not show the application from which its tweeted anymore.
585
+ - Most probably, the tweet not posting automatically issue is resolved. Please check and let me know.
586
+ - Bug fixes
587
+
588
+
589
+ **New in v4.0.1**
590
+
591
+ - Resolved issue of page getting blank after returning from twitter
592
+ - added pages to exclude post option
593
+ - Bug fixes
594
+ - updated the steps of creating twitter application check here http://www.ajaymatharu.com/major-update-to-tweet-old-post/
595
+
596
+
597
+ **New in v4.0.0**
598
+
599
+ - You can now change the application name. Change via Tweet Old Post to your specified name. Follow the Steps here,
600
+ http://www.ajaymatharu.com/major-update-to-tweet-old-post/
601
+ - Pages can now be included in tweets. Added an option to select what is to be tweeted (pages, posts, or both).
602
+ - Removed "." and used "-" when adding additional text, "." was causing grammatical mistakes if sentence was trimmed.
603
+ - Added option to specify number of posts that can be tweeted simultaneously. You can specify how many tweets you want at a time.
604
+ - Last but not the least, removed random time slot was causing lot of confusion.
605
+
606
+
607
+ **New in v3.3.3**
608
+
609
+ - Resolved permission issue of exclude post.
610
+
611
+
612
+ **New in v3.3.2**
613
+
614
+ - Resolved too many redirects issue
615
+ If its still not working try these steps
616
+ - Make sure "Tweet Old Post Admin URL (Current URL)" is showing your current URL.
617
+ - Click on "Update Tweet Old Post Options".
618
+ - Try to authorize again.
619
+ - Removed "_" from hashtags. Previously space in hashtag was replaced with "_". Now there will be no spaces or "_" in hashtags.
620
+
621
+
622
+ **New in v3.3.1**
623
+
624
+ - Changed logic for posting data to twitter.
625
+ - Resolved bit.ly issue.
626
+
627
+
628
+ **New in v3.3.0**
629
+
630
+ - Attempt to fix logs out issue (Tweet Old Post pushes out when any action is performed).
631
+
632
+
633
+ **New in v3.2.9**
634
+
635
+ - Option to reset setting. When something goes wrong, please reset the settings and setup again.
636
+ - For people still facing issues of conflict with Google Analytics Plugin, this version should work.
637
+ - Minor bug fixes.
638
+
639
+
640
+ **New in v3.2.8**
641
+
642
+ - Resolved conflict with Google Analytics Plugin.
643
+ - Changed the log file location to root of plugin folder.
644
+ - Maintained Tweet Cycle. Repeat only when all post have been tweeted.
645
+ - Made other optimizations and resolved some minor bugs.
646
+
647
+
648
+ **New in v3.2.7**
649
+
650
+ - Added logging for people who cant make it work can enable and check the log, or mail me the log file.
651
+ - Brought back the exclude post option.
652
+ - Made other optimizations and resolved some minor bugs.
653
+ - Check http://www.ajaymatharu.com/tweet-old-post-update-3-2-7/ for more detailed explanation.
654
+
655
+
656
+ **New in v3.2.6**
657
+
658
+ - removed exclude post due to security threat. Will work on it and bring it up back.
659
+
660
+
661
+ **New in v3.2.5**
662
+
663
+ - Resolved hashtag not posting issue.
664
+ - other bug fixes.
665
+
666
+
667
+ **New in v3.2.4**
668
+
669
+ - Bug fixes
670
+
671
+
672
+ **New in v3.2.3**
673
+
674
+ - Bug fixes
675
+
676
+
677
+ **New in v3.2.2**
678
+
679
+ - Resolved bit.ly issue
680
+ - new option for hashtags
681
+ - other bug fixes
682
+
683
+
684
+ **New in v3.2.1**
685
+
686
+ - Bug fixes
687
+
688
+
689
+ **New in v3.2**
690
+
691
+ - Bug fixes
692
+ - Option to choose to include link in post
693
+ - option to post only title or body or both title and body
694
+ - option to set additional text either at beginning or end of tweet
695
+ - option to pick hashtags from custom field
696
+
697
+
698
+ **New in v3.1.2**
699
+
700
+ - Resolved tweets not getting posted when categories are excluded.
701
+ - If you are not able to authorise your twitter account set you blog URL in Administration → Settings → General.
702
+
703
+
704
+ **New in v3.1**
705
+
706
+ - Resolved issue of plugin flooding twitter account with tweets.
707
+ - added provision to exclude some post from selected categories
708
+
709
+
710
+ **New in v3.0**
711
+
712
+ - added OAuth authentication
713
+ - user defined intervals
714
+ - may not work under php 4 requires php 5
715
+
716
+
717
+ **New in v2.0**
718
+
719
+ - added provision to select if you want to shorten the URL or not.
720
+ - Cleaned other options.
721
+
722
+
723
+ **New in v1.9**
724
+
725
+ - Removed PHP 4 support as it was creating problem for lot of people
726
+
727
+
728
+ **New in v1.8**
729
+
730
+ - Bug Fixes
731
+ - Provision to fetch tweet url from custom field
732
+
733
+
734
+ **New in v1.7**
735
+
736
+ - Removed api option from 1click.at not needed api key
737
+
738
+
739
+ **New in v1.6**
740
+
741
+ - Made the plugin PHP 4 compatible. Guys try it out and please let me know if that worked.
742
+ - Better error prompting. If your tweets are not appearing on twitter. Try "Tweet Now" button you'll see if there is any problem in tweeting.
743
+ - Added 1click.at shortning service you need to get the api key from http://theeasyapi.com/ you need to add your machine IP address in the server of http://theeasyapi.com/ for this api key to work.
744
+
745
+
746
+ **New in v1.5**
747
+
748
+ - Maximum age of post to be eligible for tweet - allows you to set Maximum age of the post to be eligible for tweet
749
+ - Added one more shortner service was looking for j.mp but they dont have the api yet.
750
+
751
+
752
+ **New in v1.4**
753
+
754
+ - Hashtags - allows you to set default hashtags for your tweets
755
+
756
+
757
+ **New in v1.3**
758
+
759
+ - URL Shortener Service - allows you to select which URL shortener service you want to use.
760
+
761
+
762
+ **New in v1.2**
763
+
764
+ - Tweet Prefix - Allows you to set prefix to the tweets.
765
+ - Add Data - Allows you to add post data to the tweets
766
+ - Tweet now - Button that will tweet at that moment without wanting you to wait for scheduled tweet
767
+
768
+
769
+ **v1.1**
770
+
771
+ - Twitter Username & Password - Using this twitter account credentials plugin will tweet.
772
+ - Minimum interval between tweets - allows you to determine how often the plugin will automatically choose and tweet a blog post for you.
773
+ - Randomness interval - This is a contributing factor in minimum interval so that posts are randomly chosen and tweeted from your blog.
774
+ - Minimum age of post to be eligible for tweet - This allows you to set how old your post should be in order to be eligible for the tweet.
775
+ - Categories to omit from tweets - This will protect posts from the selected categories from being tweeted.
776
+
tweet-old-post.php CHANGED
@@ -1,39 +1,40 @@
1
- <?php
2
- # /*
3
- # Plugin Name: Revive Old Post (Former Tweet Old Post)
4
- # Plugin URI: https://themeisle.com/plugins/tweet-old-post-lite/
5
- # Description: Wordpress plugin that helps you to keeps your old posts alive by sharing them and driving more traffic to them from twitter/facebook or linkedin. It also helps you to promote your content. You can set time and no of posts to share to drive more traffic.For questions, comments, or feature requests, <a href="https://themeisle.com/contact/?utm_source=plugindesc&utm_medium=announce&utm_campaign=top">contact </a> us!
6
- # Author: ThemeIsle
7
- # Version: 6.9.6.3
8
- # Author URI: https://themeisle.com/
9
- # Text Domain: tweet-old-post
10
- # Domain Path: /languages
11
- # */
12
-
13
- // Config Constants
14
- define("ROPPLUGINPATH", realpath(dirname(__FILE__) ));
15
- define("ROPCSSFILE", plugins_url('css/style.css',__FILE__ ));
16
- define("ROPCUSTOMDASHBOARDICON", plugins_url("css/custom_dashboard_icon.css", __FILE__));
17
- define("ROPJSFILE", plugins_url('js/master.js',__FILE__ ));
18
- define("ROPJSCOUNTDOWN", plugins_url('js/countdown.js',__FILE__ ));
19
- define("ROPPLUGINBASENAME", plugin_basename(__FILE__));
20
- define('ROP_TOP_FB_API_VERSION','v2.0');
21
- // Require core.
22
- require_once(ROPPLUGINPATH."/inc/core.php");
23
- // Require core.
24
- require_once(ROPPLUGINPATH."/inc/exclude-posts.php");
25
- if (!class_exists('TAV_Remote_Notification_Client')) {
26
- require( ROPPLUGINPATH.'/inc/class-remote-notification-client.php' );
27
- }
28
- if (CWP_TOP_PRO)
29
- $notification = new TAV_Remote_Notification_Client( 37, 'a8be784b898fa2fb', 'https://themeisle.com?post_type=notification' );
30
- else
31
- $notification = new TAV_Remote_Notification_Client( 38, 'b7fbcc8d0c58614a', 'https://themeisle.com?post_type=notification' );
32
-
33
- // Clear scheduled tweets on plugin deactivation
34
- register_deactivation_hook(__FILE__, array($CWP_TOP_Core, 'deactivationHook'));
35
-
36
- // Reset all settings on plugin activation.
37
- register_activation_hook(__FILE__, array($CWP_TOP_Core, 'resetAllOptions'));
38
-
39
- add_action("admin_head", array($CWP_TOP_Core, 'rop_load_dashboard_icon'));
 
1
+ <?php
2
+ # /*
3
+ # Plugin Name: Revive Old Post (Former Tweet Old Post)
4
+ # Plugin URI: https://themeisle.com/plugins/tweet-old-post-lite/
5
+ # Description: Wordpress plugin that helps you to keeps your old posts alive by sharing them and driving more traffic to them from twitter/facebook or linkedin. It also helps you to promote your content. You can set time and no of posts to share to drive more traffic.For questions, comments, or feature requests, <a href="https://themeisle.com/contact/?utm_source=plugindesc&utm_medium=announce&utm_campaign=top">contact </a> us!
6
+ # Author: ThemeIsle
7
+ # Version: 7.0.8
8
+ # Author URI: https://themeisle.com/
9
+ # Text Domain: tweet-old-post
10
+ # Domain Path: /languages
11
+ # */
12
+
13
+ // Config Constants
14
+ define("ROPPLUGINPATH", realpath(dirname(__FILE__) ));
15
+ define("ROPCSSFILE", plugins_url('css/style.css',__FILE__ ));
16
+ define("ROPCUSTOMDASHBOARDICON", plugins_url("css/custom_dashboard_icon.css", __FILE__));
17
+ define("ROPJSFILE", plugins_url('js/master.js',__FILE__ ));
18
+ define("ROPJSCOUNTDOWN", plugins_url('js/countdown.js',__FILE__ ));
19
+ define("ROPPLUGINBASENAME", plugin_basename(__FILE__));
20
+ define('ROP_TOP_FB_API_VERSION','v2.0');
21
+ define('ROP_VERSION','7.0.8');
22
+ // Require core.
23
+ require_once(ROPPLUGINPATH."/inc/core.php");
24
+ // Require core.
25
+ require_once(ROPPLUGINPATH."/inc/exclude-posts.php");
26
+ if (!class_exists('TAV_Remote_Notification_Client')) {
27
+ require( ROPPLUGINPATH.'/inc/class-remote-notification-client.php' );
28
+ }
29
+ if (CWP_TOP_PRO)
30
+ $notification = new TAV_Remote_Notification_Client( 37, 'a8be784b898fa2fb', 'https://themeisle.com?post_type=notification' );
31
+ else
32
+ $notification = new TAV_Remote_Notification_Client( 38, 'b7fbcc8d0c58614a', 'https://themeisle.com?post_type=notification' );
33
+
34
+ // Clear scheduled tweets on plugin deactivation
35
+ register_deactivation_hook(__FILE__, array($CWP_TOP_Core, 'deactivationHook'));
36
+
37
+ // Reset all settings on plugin activation.
38
+ register_activation_hook(__FILE__, array($CWP_TOP_Core, 'resetAllOptions'));
39
+
40
+ add_action("admin_head", array($CWP_TOP_Core, 'rop_load_dashboard_icon'));