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

Version Description

Download this release

Release Info

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

Code changes from version 7.2 to 7.3.5

CHANGELOG.md CHANGED
@@ -1,170 +1,170 @@
1
-
2
-
3
- ### 7.0.4 - 25/05/2015
4
-
5
- Changes:
6
-
7
-
8
- * * fixed issue with tweet length
9
- * fixed issue with facebook hashtag
10
- * * added bussines version
11
-
12
-
13
- ### 7.0.4 - 16/04/2015
14
-
15
- Changes:
16
-
17
-
18
- * * fixed bug with the new facebook api changes.
19
- * changed pro banner
20
- * Merge branch 'development' of https://github.com/Codeinwp/tweet-old-post into development
21
-
22
-
23
- ### 7.0.3 - 03/04/2015
24
-
25
- Changes:
26
-
27
-
28
- * * fixed problem with media_id
29
- * * fixed bug with logs reporting in system info where there is no log available.
30
- * Update readme.txt
31
- * Update readme.txt
32
-
33
-
34
- ### 7.0.2 - 26/03/2015
35
-
36
- Changes:
37
-
38
-
39
- * * Removed twitter update_with_media call.
40
- * Fixed activation error notices when WP_DEBUG was enabled
41
- * Merge remote-tracking branch 'origin/development' into development
42
-
43
-
44
- ### 7.0.1 - 06/03/2015
45
-
46
- Changes:
47
-
48
-
49
- * http bug
50
- * Final version of tweet old post
51
- * final vers
52
- * Added Top 5.7 version
53
- * added strlower
54
- * Tweets now are posted immediately, fixed scheduling and added debug messages
55
- * latest stable version 6.2
56
- * added exclude posts back
57
- * latest major fixes
58
- * fixed interrupted posting
59
- * Added settings link, fixed tweet cutting and added cron debug messages
60
-
61
- Added settings link, fixed tweet cutting and added cron debug messages
62
- * latest top fixes [stable version ]
63
- * almost added fb
64
- * stable version with linkedin + facebook
65
- * custom icon, final fixes
66
- * fixed fb instructions + small css things
67
- * Set up localization and translation
68
- * 6.8.1 with multi-language + cpt support
69
- * fix post issue
70
- * various small fixes to encoding
71
- * various fixes
72
-
73
- * fix for coma on the exclude post page
74
- * fixed the shortner problem that was not adding the analytics.
75
- * fixed the cron issue
76
- * increased notification time check by *5
77
-
78
- increased notification time check by *5
79
- * * Added post format per network
80
- * Rearranged the options
81
- * Merge remote-tracking branch 'origin/development' into development
82
- * * Fixes for no account post sharing issue
83
- * Added immediately share after start
84
- * redesign and on/off button
85
- * * Improved tabs graphic
86
- * Added remote cron check
87
- * * added pro badge for linkedin post format
88
- * fixed compatibility issue with older versions
89
- * * added pro badge for linkedin post format
90
- * fixed compatibility issue with older versions
91
- * * fixed the relative path issue
92
- * Update readme.txt
93
- * * fixed issue with notices
94
- * solved some cron compatibilty problems
95
- * * fixed double posting issue for cron
96
- * * fixed backwards compatibility issue
97
- * Removed useless spaces in post format
98
- * fixed custom field from url issue
99
- * * fixed problem with oauth time
100
- * fixed problem with cron time
101
- * * fixed problem with oauth time
102
- * fixed problem with cron time
103
- * Merge remote-tracking branch 'origin/development' into development
104
- * Update core.php
105
- * Update tweet-old-post.php
106
- * Update view.php
107
- * Update OAuth.php
108
- * Update tweet-old-post.php
109
- * * added more complex log system
110
- * improved cron schedule
111
- * Merge remote-tracking branch 'origin/development' into development
112
- * * fixed sample tweet
113
- * added support for pro version
114
- * * added clock feature
115
- * * fix for old cron
116
- * fix sample tweet image
117
- * * removed console clock
118
- * Update readme.txt
119
- * Fixed https request
120
- * Update tweet-old-post.php
121
- * Update core.php
122
- * Update style.css
123
- * Update tweet-old-post.php
124
- * * fixed typo bugs.
125
- * Update readme.txt
126
- * * fixed excluded post bug
127
- * fixed cron time issue
128
- * added more log types messages
129
- * improved system info
130
- * Merge remote-tracking branch 'origin/development' into development
131
- * * update version
132
- * * added sib banner
133
- * * updated changelog
134
- * * fixed bug with share more than once.
135
- * Update tweet-old-post.php
136
- * Update view.php
137
- * * Fixed issue cron stop
138
- * Fixed issue for excluded post
139
- * Added exclude posts from custom post types.
140
- * Merge remote-tracking branch 'origin/development' into development
141
- * * Fixed issue cron stop
142
- * Fixed issue for excluded post
143
- * Added exclude posts from custom post types.
144
- * updated version
145
- * * fixed sample post issue
146
- * * fixed tweet custom field url
147
- * * changed version
148
- * fixed minutes typo
149
- * * rollback generate tweet
150
- * Merge remote-tracking branch 'origin/development' into development
151
- * * fixed image compatibility
152
- * * fixed pro compatibility
153
- * Update readme.txt
154
- * buttons added: Google Plus, XING , Stumbleupon , Tumblr
155
- * strip html response.
156
- * * rewrite the tweet generation
157
- * added usefull filtes and hooks
158
- * * Fixed issue with duplicate posting
159
- * Added Xing and Tumbr Networks
160
- * Fixed issue with random posts on large databases.
161
- * * Fixed issue with duplicate posting
162
- * Added Xing and Tumbr Networks
163
- * Fixed issue with random posts on large databases.
164
- * * Fixed no link issue
165
- * Added new info to System Log
166
- * * FIxed compatibilty issues with old pro version
167
- * * added chacter count when media is active
168
- * * fixed link position in tweets.
169
- * * removed only pro badge on custom schedule secundar tabs
170
- * * fixed problem with strange chars in tweets.
1
+
2
+
3
+ ### 7.0.4 - 25/05/2015
4
+
5
+ Changes:
6
+
7
+
8
+ * * fixed issue with tweet length
9
+ * fixed issue with facebook hashtag
10
+ * * added bussines version
11
+
12
+
13
+ ### 7.0.4 - 16/04/2015
14
+
15
+ Changes:
16
+
17
+
18
+ * * fixed bug with the new facebook api changes.
19
+ * changed pro banner
20
+ * Merge branch 'development' of https://github.com/Codeinwp/tweet-old-post into development
21
+
22
+
23
+ ### 7.0.3 - 03/04/2015
24
+
25
+ Changes:
26
+
27
+
28
+ * * fixed problem with media_id
29
+ * * fixed bug with logs reporting in system info where there is no log available.
30
+ * Update readme.txt
31
+ * Update readme.txt
32
+
33
+
34
+ ### 7.0.2 - 26/03/2015
35
+
36
+ Changes:
37
+
38
+
39
+ * * Removed twitter update_with_media call.
40
+ * Fixed activation error notices when WP_DEBUG was enabled
41
+ * Merge remote-tracking branch 'origin/development' into development
42
+
43
+
44
+ ### 7.0.1 - 06/03/2015
45
+
46
+ Changes:
47
+
48
+
49
+ * http bug
50
+ * Final version of tweet old post
51
+ * final vers
52
+ * Added Top 5.7 version
53
+ * added strlower
54
+ * Tweets now are posted immediately, fixed scheduling and added debug messages
55
+ * latest stable version 6.2
56
+ * added exclude posts back
57
+ * latest major fixes
58
+ * fixed interrupted posting
59
+ * Added settings link, fixed tweet cutting and added cron debug messages
60
+
61
+ Added settings link, fixed tweet cutting and added cron debug messages
62
+ * latest top fixes [stable version ]
63
+ * almost added fb
64
+ * stable version with linkedin + facebook
65
+ * custom icon, final fixes
66
+ * fixed fb instructions + small css things
67
+ * Set up localization and translation
68
+ * 6.8.1 with multi-language + cpt support
69
+ * fix post issue
70
+ * various small fixes to encoding
71
+ * various fixes
72
+
73
+ * fix for coma on the exclude post page
74
+ * fixed the shortner problem that was not adding the analytics.
75
+ * fixed the cron issue
76
+ * increased notification time check by *5
77
+
78
+ increased notification time check by *5
79
+ * * Added post format per network
80
+ * Rearranged the options
81
+ * Merge remote-tracking branch 'origin/development' into development
82
+ * * Fixes for no account post sharing issue
83
+ * Added immediately share after start
84
+ * redesign and on/off button
85
+ * * Improved tabs graphic
86
+ * Added remote cron check
87
+ * * added pro badge for linkedin post format
88
+ * fixed compatibility issue with older versions
89
+ * * added pro badge for linkedin post format
90
+ * fixed compatibility issue with older versions
91
+ * * fixed the relative path issue
92
+ * Update readme.txt
93
+ * * fixed issue with notices
94
+ * solved some cron compatibilty problems
95
+ * * fixed double posting issue for cron
96
+ * * fixed backwards compatibility issue
97
+ * Removed useless spaces in post format
98
+ * fixed custom field from url issue
99
+ * * fixed problem with oauth time
100
+ * fixed problem with cron time
101
+ * * fixed problem with oauth time
102
+ * fixed problem with cron time
103
+ * Merge remote-tracking branch 'origin/development' into development
104
+ * Update core.php
105
+ * Update tweet-old-post.php
106
+ * Update view.php
107
+ * Update OAuth.php
108
+ * Update tweet-old-post.php
109
+ * * added more complex log system
110
+ * improved cron schedule
111
+ * Merge remote-tracking branch 'origin/development' into development
112
+ * * fixed sample tweet
113
+ * added support for pro version
114
+ * * added clock feature
115
+ * * fix for old cron
116
+ * fix sample tweet image
117
+ * * removed console clock
118
+ * Update readme.txt
119
+ * Fixed https request
120
+ * Update tweet-old-post.php
121
+ * Update core.php
122
+ * Update style.css
123
+ * Update tweet-old-post.php
124
+ * * fixed typo bugs.
125
+ * Update readme.txt
126
+ * * fixed excluded post bug
127
+ * fixed cron time issue
128
+ * added more log types messages
129
+ * improved system info
130
+ * Merge remote-tracking branch 'origin/development' into development
131
+ * * update version
132
+ * * added sib banner
133
+ * * updated changelog
134
+ * * fixed bug with share more than once.
135
+ * Update tweet-old-post.php
136
+ * Update view.php
137
+ * * Fixed issue cron stop
138
+ * Fixed issue for excluded post
139
+ * Added exclude posts from custom post types.
140
+ * Merge remote-tracking branch 'origin/development' into development
141
+ * * Fixed issue cron stop
142
+ * Fixed issue for excluded post
143
+ * Added exclude posts from custom post types.
144
+ * updated version
145
+ * * fixed sample post issue
146
+ * * fixed tweet custom field url
147
+ * * changed version
148
+ * fixed minutes typo
149
+ * * rollback generate tweet
150
+ * Merge remote-tracking branch 'origin/development' into development
151
+ * * fixed image compatibility
152
+ * * fixed pro compatibility
153
+ * Update readme.txt
154
+ * buttons added: Google Plus, XING , Stumbleupon , Tumblr
155
+ * strip html response.
156
+ * * rewrite the tweet generation
157
+ * added usefull filtes and hooks
158
+ * * Fixed issue with duplicate posting
159
+ * Added Xing and Tumbr Networks
160
+ * Fixed issue with random posts on large databases.
161
+ * * Fixed issue with duplicate posting
162
+ * Added Xing and Tumbr Networks
163
+ * Fixed issue with random posts on large databases.
164
+ * * Fixed no link issue
165
+ * Added new info to System Log
166
+ * * FIxed compatibilty issues with old pro version
167
+ * * added chacter count when media is active
168
+ * * fixed link position in tweets.
169
+ * * removed only pro badge on custom schedule secundar tabs
170
+ * * 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,13 +1,13 @@
1
- @font-face {
2
- font-family: "rop-custom-icon-font";
3
- src: url("../assets/rop-custom-icon-font.eot");
4
- 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");
5
- font-weight: normal;
6
- font-style: normal;
7
- }
8
-
9
-
10
- #adminmenu #toplevel_page_TweetOldPost .wp-menu-image:before {
11
- font-family: "rop-custom-icon-font" !important;
12
- content: "a" !important;
13
- }
1
+ @font-face {
2
+ font-family: "rop-custom-icon-font";
3
+ src: url("../assets/rop-custom-icon-font.eot");
4
+ 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");
5
+ font-weight: normal;
6
+ font-style: normal;
7
+ }
8
+
9
+
10
+ #adminmenu #toplevel_page_TweetOldPost .wp-menu-image:before {
11
+ font-family: "rop-custom-icon-font" !important;
12
+ content: "a" !important;
13
+ }
css/style.css CHANGED
@@ -1,861 +1,1141 @@
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
- }
833
-
834
- [data-icon]:before {
835
- font-family: "rop-custom-icon-font" !important;
836
- content: attr(data-icon);
837
- font-style: normal !important;
838
- font-weight: normal !important;
839
- font-variant: normal !important;
840
- text-transform: none !important;
841
- speak: none;
842
- line-height: 1;
843
- -webkit-font-smoothing: antialiased;
844
- -moz-osx-font-smoothing: grayscale;
845
- }
846
-
847
- [class^="rop-icon-"]:before, [class*=" rop-icon-"]:before {
848
- font-family: "rop-custom-icon-font" !important;
849
- font-style: normal !important;
850
- font-weight: normal !important;
851
- font-variant: normal !important;
852
- text-transform: none !important;
853
- speak: none;
854
- line-height: 1;
855
- -webkit-font-smoothing: antialiased;
856
- -moz-osx-font-smoothing: grayscale;
857
- }
858
-
859
- .rop-icon-dashboard:before {
860
- content: "a";
861
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: 13px 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
+ }
833
+
834
+ [data-icon]:before {
835
+ font-family: "rop-custom-icon-font" !important;
836
+ content: attr(data-icon);
837
+ font-style: normal !important;
838
+ font-weight: normal !important;
839
+ font-variant: normal !important;
840
+ text-transform: none !important;
841
+ speak: none;
842
+ line-height: 1;
843
+ -webkit-font-smoothing: antialiased;
844
+ -moz-osx-font-smoothing: grayscale;
845
+ }
846
+
847
+ [class^="rop-icon-"]:before, [class*=" rop-icon-"]:before {
848
+ font-family: "rop-custom-icon-font" !important;
849
+ font-style: normal !important;
850
+ font-weight: normal !important;
851
+ font-variant: normal !important;
852
+ text-transform: none !important;
853
+ speak: none;
854
+ line-height: 1;
855
+ -webkit-font-smoothing: antialiased;
856
+ -moz-osx-font-smoothing: grayscale;
857
+ }
858
+
859
+ .rop-icon-dashboard:before {
860
+ content: "a";
861
+ }
862
+
863
+ /* Added by Ash/Upwork */
864
+ .cwp_top_wrapper .option.cwp_restrict_image .rop_left {
865
+ width: 105px;
866
+ padding-left: 60px;
867
+ float: left;
868
+ position: relative;
869
+ z-index: 99;
870
+ padding-top: 10px;
871
+ }
872
+ .cwp_top_wrapper .option.cwp_restrict_image .rop_right {
873
+ width: 100%;
874
+ background: #f8f8f8;
875
+ position: relative;
876
+ padding: 10px 10px 10px 110px;
877
+ }
878
+ .cwp_top_wrapper .option.cwp_restrict_image .rop_right .cwp_quick_edit {margin: 5px 5px 0px 0px;}
879
+ .cwp_top_wrapper .option.cwp_restrict_image .rop_right .cwp_quick_edit .cwp_quick_edit_actions {float: left;}
880
+ .cwp_top_wrapper .option.cwp_restrict_image .rop_right .cwp_quick_edit .cwp_post_time { float: right; font-style: italic; color: #999999; }
881
+ .cwp_top_wrapper .option.cwp_restrict_image .rop_right.cwp_extend_post { width: 100%; background: #f8f8f8; position: relative; padding: 10px 10px 10px 60px; }
882
+ .cwp-quick-edit-text {width: 100%;}
883
+ .cwp_post_image {cursor: pointer;}
884
+ .cwp_delete_table {width: 95%; margin: auto;}
885
+ .cwp_quick_edit_actions_after {display: none;}
886
+ .cwp_restrict_image:nth-child(odd) {background-color: #f5f5f5;}
887
+ .cwp_top_tabs_vertical.hide_top_tabs_btns .cwp_top_tabs_btns{display: none}
888
+ .cwp_top_tabs_vertical.hide_top_tabs_btns .tab-vertical{width: 100%}
889
+ .rop_date_container {
890
+ border: 1px solid #EAEAEA;
891
+ margin: 15px 15px 0px 15px;
892
+ border-radius: 2px;
893
+ }
894
+ .cwp_top_wrapper .rop_date_container .option {
895
+ margin: 2px 0 2px;
896
+ position: relative;
897
+ }
898
+ /* Added by Ash/Upwork */
899
+
900
+ .rop-post-twitter:after,
901
+ .rop-post-facebook:after,
902
+ .rop-post-linkedin:after,
903
+ .rop-post-xing:after,
904
+ .rop-post-tumblr:after {
905
+ content: "";
906
+ width: 50px;
907
+ height: 100%;
908
+ position: absolute;
909
+ top: 0;
910
+ left: 0;
911
+ }
912
+ .rop-post-twitter:after {
913
+ background: url(../img/rop-twitter-icn.png) center no-repeat #f1f1f1;
914
+ }
915
+ .rop-post-facebook:after {
916
+ background: url(../img/rop-facebook-icn.png) center no-repeat #f1f1f1;
917
+ }
918
+ .rop-post-linkedin:after {
919
+ background: url(../img/rop-linkedin-icn.png) center no-repeat #f1f1f1;
920
+ }
921
+ .rop-post-xing:after {
922
+ background: url(../img/rop-xing-icn.png) center no-repeat #f1f1f1;
923
+ }
924
+ .rop-post-tumblr:after {
925
+ background: url(../img/rop-tumblr-icn.png) center no-repeat #f1f1f1;
926
+ }
927
+ .rop_date_container .rop_tweet_date {
928
+ background: #444;
929
+ color: #f0f0f0;
930
+ padding: 10px;
931
+ margin: -1px -1px 0 -1px;
932
+ border-radius: 2px 2px 0 0;
933
+ }
934
+ .rop-box-with-padding { padding: 20px; }
935
+ .cwp_top_wrapper .cwp_quick_edit_actions_before a {
936
+ margin: 0 7px 0 0 !important;
937
+ float: left;
938
+ }
939
+ .cwp_top_wrapper .cwp-quick-edit-span {
940
+ padding-bottom: 10px;
941
+ float: left;
942
+ width: 100%;
943
+
944
+ }
945
+ .cwp_top_wrapper .cwp_quick_edit_actions_before a.cwp-quick-edit {
946
+ text-indent: -999999px;
947
+ overflow: hidden;
948
+ height: 15px;
949
+ width: 15px;
950
+ background: url(../img/rop-edit-icons.png) no-repeat;
951
+ background-position: center 2px;
952
+ -webkit-transition: all 0s;
953
+ -moz-transition: all 0s;
954
+ -o-transition: all 0s;
955
+ transition: all 0s;
956
+ }
957
+ .cwp_top_wrapper .cwp_quick_edit_actions_before a.cwp-quick-edit:hover {
958
+ background-position: center -19px;
959
+ }
960
+ .cwp_top_wrapper .cwp_quick_edit_actions_before a.cwp-quick-delete {
961
+ text-indent: -999999px;
962
+ overflow: hidden;
963
+ height: 15px;
964
+ width: 15px;
965
+ background: url(../img/rop-delete-icons.png) no-repeat;
966
+ background-position: center 2px;
967
+ -webkit-transition: all 0s;
968
+ -moz-transition: all 0s;
969
+ -o-transition: all 0s;
970
+ transition: all 0s;
971
+ }
972
+ .cwp_top_wrapper .cwp_quick_edit_actions_before a.cwp-quick-delete:hover {
973
+ background-position: center -19px;
974
+ }
975
+ .rop-features-available {
976
+ margin: 15px;
977
+ text-align: center;
978
+ border-radius: 3px;
979
+ background: rgb(129,191,232); /* Old browsers */
980
+ background: -moz-linear-gradient(top, rgba(129,191,232,1) 0%, rgba(67,155,223,1) 100%); /* FF3.6-15 */
981
+ background: -webkit-linear-gradient(top, rgba(129,191,232,1) 0%,rgba(67,155,223,1) 100%); /* Chrome10-25,Safari5.1-6 */
982
+ background: linear-gradient(to bottom, rgba(129,191,232,1) 0%,rgba(67,155,223,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
983
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#81bfe8', endColorstr='#439bdf',GradientType=0 ); /* IE6-9 */
984
+ border: 1px solid #54A5E1;
985
+ padding: 7px 25px;
986
+ }
987
+ .rop-features-available p {
988
+ border-radius: 2px;
989
+ color: #000;
990
+ font-size: 13px;
991
+ font-weight: bold;
992
+ margin: 0;
993
+ position: relative;
994
+ z-index: 9;
995
+ display: inline-block;
996
+ background: #fff;
997
+ }
998
+ .rop-features-available p span {
999
+ position: relative;
1000
+ z-index: 9;
1001
+ padding: 5px 15px;
1002
+ float: left;
1003
+ -webkit-box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.15);
1004
+ -moz-box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.15);
1005
+ box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.15);
1006
+ background: rgb(255,255,255);
1007
+ background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(244,243,244,1) 100%);
1008
+ background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(244,243,244,1) 100%);
1009
+ background: linear-gradient(to bottom, rgba(255,255,255,1) 0%,rgba(244,243,244,1) 100%);
1010
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f4f3f4',GradientType=0 );
1011
+ color: #777777;
1012
+ text-shadow: 2px 2px 2px #FFFFFF;
1013
+ }
1014
+ .rop-features-available p:before {
1015
+ content: "";
1016
+ position: absolute;
1017
+ left: -15px;
1018
+ bottom: -4px;
1019
+ width: 25px;
1020
+ height: 27px;
1021
+ background: #F3F3F3;
1022
+ }
1023
+ .rop-features-available p:after {
1024
+ content: "";
1025
+ position: absolute;
1026
+ right: -15px;
1027
+ bottom: -4px;
1028
+ width: 25px;
1029
+ height: 27px;
1030
+ background: #F3F3F3;
1031
+ }
1032
+ .rop-features-available strong {
1033
+ color: #F16848;
1034
+ }
1035
+ .cwp-quick-edit-text input,
1036
+ .cwp-quick-edit-text textarea {
1037
+ font-size: 14px;
1038
+ }
1039
+
1040
+ @media (max-width: 1200px) {
1041
+
1042
+ #cwp-top-container-form {
1043
+ width: 100%;
1044
+ }
1045
+ .cwp_top_wrapper .cwp_top_container .sidebar {
1046
+ padding: 0;
1047
+ width: 100%;
1048
+ }
1049
+ .rop-beta-user {
1050
+ width: 50%;
1051
+ display: inline-block;
1052
+ float: left;
1053
+ padding-bottom: 14px;
1054
+ }
1055
+ .cwp_top_wrapper .cwp_top_container .sidebar ul li.upgrade a {
1056
+ margin: 0 auto !important;
1057
+ float: none;
1058
+ }
1059
+ .cwp_top_wrapper .cwp_top_container .sidebar ul li.upgrade {
1060
+ float: left;
1061
+ width: 100%;
1062
+ margin-bottom: 15px;
1063
+ }
1064
+
1065
+ }
1066
+
1067
+ @media (max-width: 992px) {
1068
+
1069
+
1070
+
1071
+ }
1072
+
1073
+ @media (max-width: 768px) {
1074
+
1075
+ .rop-beta-user {
1076
+ width: 100%;
1077
+ }
1078
+ .cwp_top_wrapper .cwp_top_container .sidebar ul li.upgrade a {
1079
+ margin: 0 auto !important;
1080
+ }
1081
+ .cwp_top_wrapper .cwp_top_container .cwp_top_footer {
1082
+ text-align: center;
1083
+ }
1084
+ .cwp_top_wrapper .option .left,
1085
+ .cwp_top_wrapper .option .right {
1086
+ width: 100%;
1087
+ text-align: left;
1088
+ padding-left: 20px;
1089
+ padding-right: 20px;
1090
+ margin-bottom: 5px;
1091
+ }
1092
+ .cwp_top_wrapper .option .left * {
1093
+ text-align: left;
1094
+ float: left;
1095
+ clear: left;
1096
+ }
1097
+ #cwp_top_tabs ul#tabs_menu {
1098
+ text-align: center;
1099
+ }
1100
+ #cwp_top_tabs ul#tabs_menu li {
1101
+ margin-bottom: 5px;
1102
+ }
1103
+ .cwp_top_tabs_vertical .cwp_top_tabs_btns {
1104
+ width: 100%;
1105
+ padding: 0;
1106
+ }
1107
+ .cwp_top_tabs_vertical .cwp_top_tabs_btns li {
1108
+ border-bottom: 1px solid #fff;
1109
+ }
1110
+ .cwp-according-item .cwp-according-body,
1111
+ .cwp-according-item .cwp-according-header {
1112
+ width: 100%;
1113
+ }
1114
+ .tab .cwp_top_tabs_vertical .tab-vertical {
1115
+ width: 100%;
1116
+ }
1117
+ .rop-beta-user .rop-left {
1118
+ width: 100%;
1119
+ margin-left: -100px;
1120
+ padding-left: 100px;
1121
+ }
1122
+ .rop-beta-user .rop-right {
1123
+ width: 80px;
1124
+ }
1125
+ .cwp_top_wrapper #cwp_top_header .cwp_top_actions {
1126
+ float: left;
1127
+ clear: left;
1128
+ }
1129
+
1130
+ }
1131
+ .tab .cwp_top_tabs_vertical.rop-tab-full-width .tab-vertical{
1132
+ width:100%;
1133
+ }
1134
+ .tab .cwp_top_tabs_vertical.rop-tab-with-sidebar .tab-vertical{
1135
+ width:80%;
1136
+ }
1137
+ .rop-message-tab{
1138
+ text-align: center;
1139
+ font-weight: bold;
1140
+ }
1141
+
img/rop-delete-icons.png ADDED
Binary file
img/rop-edit-icons.png ADDED
Binary file
img/rop-facebook-icn.png ADDED
Binary file
img/rop-linkedin-icn.png ADDED
Binary file
img/rop-tumblr-icn.png ADDED
Binary file
img/rop-twitter-icn.png ADDED
Binary file
img/rop-xing-icn.png ADDED
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,439 +1,439 @@
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
- // Added by Ash/Upwork
23
- $cwp_rop_self_endpoint = "rop_checking_schedule";
24
- // Added by Ash/Upwork
25
- $cwp_top_global_schedule = array();
26
- if(!defined('ROP_PRO_VERSION'))
27
- $cwp_top_networks = array();
28
- 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>");
29
- 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>");
30
-
31
- $cwp_rop_all_networks = array("twitter"=>false,"facebook"=>false,"linkedin"=>true, "xing"=>true,"tumblr"=>true);
32
- $cwp_rop_restricted_show = array("bitly-key","bitly-user");
33
- $cwp_format_fields = array(
34
-
35
- 'tweet-content' => array(
36
- 'id' => '1',
37
- 'name' => __('Post Content', 'tweet-old-post'),
38
- 'type' => 'select',
39
- 'slug' => 'tweet-content',
40
- 'option' => 'top_opt_tweet_type',
41
- 'description' => __('What do you want to share?', 'tweet-old-post'),
42
- 'options' => array(
43
- 'title' => __('Title Only', 'tweet-old-post'),
44
- 'body' => __('Body Only', 'tweet-old-post'),
45
- 'titlenbody' => __('Title & Body', 'tweet-old-post'),
46
- 'custom-field' => __('Custom Field', 'tweet-old-post')
47
- ),
48
- 'default_value'=>'title'
49
- ),
50
- 'top_opt_tweet_length' => array(
51
- 'id' => '1',
52
- 'name' => __('Length', 'tweet-old-post'),
53
- 'type' => 'number',
54
- 'slug' => 'tweet-length',
55
- 'option' => 'top_opt_tweet_length',
56
- 'description' => __('The length of the tweet', 'tweet-old-post'),
57
- 'max-length' => 140,
58
- 'default_value' =>140
59
- ),
60
-
61
- 'tweet-content-field' => array(
62
- 'id' => '2',
63
- 'name' => __('Post Content Custom Field', 'tweet-old-post'),
64
- 'type' => 'text',
65
- 'slug' => 'tweet-content-field',
66
- 'option' => 'top_opt_tweet_type_custom_field',
67
- 'description' => __('Which custom field do you want to fetch info from?', 'tweet-old-post'),
68
- 'options' => array(),
69
- 'default_value'=>""
70
- ),
71
-
72
- 'additional-text' => array(
73
- 'id' => '3',
74
- 'name' => __('Additional Text', 'tweet-old-post'),
75
- 'type' => 'text',
76
- 'slug' => 'additional-text',
77
- 'option' => 'top_opt_add_text',
78
- 'description' => __('Text added to your auto posts', 'tweet-old-post'),
79
- 'options' => array(),
80
- 'default_value'=>''
81
- ),
82
-
83
- 'additional-text-at' => array(
84
- 'id' => '4',
85
- 'name' => __('Additional Text At', 'tweet-old-post'),
86
- 'type' => 'select',
87
- 'slug' => 'additional-text-at',
88
- 'option' => 'top_opt_add_text_at',
89
- 'description' => __('Where do you want the text to be added?', 'tweet-old-post'),
90
- 'options' => array(
91
- 'beginning' => __('Beginning of Post', 'tweet-old-post'),
92
- 'end' => __('End of Post', 'tweet-old-post')
93
- ),
94
- "default_value"=>"beginning"
95
- ),
96
-
97
- 'include-link' => array(
98
- 'id' => '5',
99
- 'name' => __('Include Link', 'tweet-old-post'),
100
- 'type' => 'select',
101
- 'slug' => 'include-link',
102
- 'option' => 'top_opt_include_link',
103
- 'description' => __('Include a link to your post?', 'tweet-old-post'),
104
- 'options' => array(
105
- 'true' => __('Yes', 'tweet-old-post'),
106
- 'false' => __('No', 'tweet-old-post')
107
- ),
108
- 'dependency'=> array(
109
- "url-from-custom-field"=>"true",
110
- "use-url-shortner"=>"true",
111
- ),
112
- 'default_value' =>"yes"
113
-
114
-
115
- ),
116
-
117
- 'url-from-custom-field' => array(
118
- 'id' => '6',
119
- 'name' => __('Fetch URL From Custom Field', 'tweet-old-post'),
120
- 'type' => 'checkbox',
121
- 'slug' => 'url-from-custom-field',
122
- 'option' => 'top_opt_custom_url_option',
123
- 'description' => __('URL will be fetched from a custom field.', 'tweet-old-post'),
124
- 'options' => '',
125
- 'dependency'=> array(
126
- "custom-field-url"=>"true"
127
- ),
128
- 'default_value'=>''
129
-
130
- ),
131
-
132
- 'custom-field-url' => array(
133
- 'id' => '7',
134
- 'name' => __('URL Custom Field', 'tweet-old-post'),
135
- 'type' => 'text',
136
- 'slug' => 'custom-field-url',
137
- 'option' => 'top_opt_custom_url_field',
138
- 'description' => __('URL will be fetched from the specified custom field.', 'tweet-old-post'),
139
- 'options' => array(),
140
- 'default_value'=>""
141
- ),
142
-
143
- 'use-url-shortner' => array(
144
- 'id' => '8',
145
- 'name' => __('Use URL Shortner', 'tweet-old-post'),
146
- 'type' => 'checkbox',
147
- 'slug' => 'use-url-shortner',
148
- 'option' => 'top_opt_use_url_shortner',
149
- 'description' => '',
150
- 'options' => '',
151
- 'dependency'=> array(
152
- "url-shortner"=>"true"
153
- ),
154
- 'default_value'=>"off"
155
- ),
156
-
157
-
158
-
159
- 'url-shortner' => array(
160
- 'id' => '9',
161
- 'name' => __('URL Shortner Service', 'tweet-old-post'),
162
- 'type' => 'select',
163
- 'slug' => 'url-shortner',
164
- 'option' => 'top_opt_url_shortner',
165
- 'description' => __('Shorten the link to your post.', 'tweet-old-post'),
166
- 'options' => array(
167
- 'wp_short_url' => __('wp short url', 'tweet-old-post'),
168
- //'t.co' => __('t.co', 'tweet-old-post'),
169
- 'is.gd' => __('is.gd', 'tweet-old-post'),
170
- 'bit.ly' => __('bit.ly', 'tweet-old-post'),
171
- //'tr.im' => __('tr.im', 'tweet-old-post'),
172
- //'3.ly' => __('3.ly', 'tweet-old-post'),
173
- //'u.nu' => __('u.nu', 'tweet-old-post'),
174
- //'1click.at' => __('1click.at', 'tweet-old-post'),
175
- //'tinyurl' => __('TinyUrl', 'tweet-old-post')
176
-
177
- ),
178
- 'dependency'=> array(
179
- "bitly-key"=>"bit.ly",
180
- "bitly-user"=>"bit.ly"
181
- ),
182
- 'default_value'=>'wp_short_url'
183
- ),
184
-
185
- 'bitly-key' => array(
186
- 'id' => '22',
187
- 'name' => __('Bitly Key', 'tweet-old-post'),
188
- 'type' => 'text',
189
- 'slug' => 'bitly-key',
190
- 'option' => 'top_opt_bitly_key',
191
- 'description' => '',
192
- 'options' => '',
193
- 'default_value' => '',
194
- ),
195
-
196
- 'bitly-user' => array(
197
- 'id' => '23',
198
- 'name' => __('Bitly User', 'tweet-old-post'),
199
- 'type' => 'text',
200
- 'slug' => 'bitly-user',
201
- 'option' => 'top_opt_bitly_user',
202
- 'description' => '',
203
- 'options' => '',
204
- 'default_value' => '',
205
- ),
206
-
207
- 'custom-hashtag-option' => array(
208
- 'id' => '10',
209
- 'name' => __('Hashtags', 'tweet-old-post'),
210
- 'type' => 'select',
211
- 'slug' => 'custom-hashtag-option',
212
- 'option' => 'top_opt_custom_hashtag_option',
213
- 'description' => __('Include #hashtags in your auto posts?', 'tweet-old-post'),
214
- 'options' => array(
215
- 'nohashtag' => __('Don\'t add any hashtags', 'tweet-old-post'),
216
- 'common' => __('Common hashtags for all shares', 'tweet-old-post'),
217
- 'categories'=> __('Create hashtags from Categories', 'tweet-old-post'),
218
- 'tags' => __('Create hashtags from Tags', 'tweet-old-post'),
219
- 'custom' => __('Create hashtags from Custom Fields', 'tweet-old-post')
220
- ),
221
- 'dependency'=> array(
222
- "common-hashtags" =>"common",
223
- "hashtags-length" =>"common,categories,tags,custom",
224
- "common-hashtags" =>"common",
225
- "custom-hashtag-field"=>"custom"
226
- ),
227
- 'default_value'=>'nohashtag'
228
- ),
229
-
230
- 'common-hashtags' => array(
231
- 'id' => '11',
232
- 'name' => __('Common Hashtags', 'tweet-old-post'),
233
- 'type' => 'text',
234
- 'slug' => 'common-hashtags',
235
- 'option' => 'top_opt_hashtags',
236
- 'description' => __('Specify which hashtags you want to be used. eg. #example, #example2', 'tweet-old-post'),
237
- 'options' => array(),
238
- 'default_value'=>''
239
- ),
240
-
241
- 'hashtags-length' => array(
242
- 'id' => '12',
243
- 'name' => __('Maximum Hashtags Length', 'tweet-old-post'),
244
- 'type' => 'text',
245
- 'slug' => 'hashtags-length',
246
- 'option' => 'top_opt_hashtag_length',
247
- 'description' => __('Set to 0 (characters) to include all.', 'tweet-old-post'),
248
- 'options' => array(),
249
- 'default_value'=>'20'
250
- ),
251
-
252
- 'custom-hashtag-field' => array(
253
- 'id' => '13',
254
- 'name' => __('Hashtag Custom Field', 'tweet-old-post'),
255
- 'type' => 'text',
256
- 'slug' => 'custom-hashtag-field',
257
- 'option' => 'top_opt_custom_hashtag_field',
258
- 'description' => __('Fetch hashtags from specified custom field', 'tweet-old-post'),
259
- 'options' => array(),
260
- 'default_value'=>'',
261
-
262
- )
263
- ,
264
- 'use-image' => array(
265
- 'id' => '24',
266
- 'name' => __('Post with Image', 'tweet-old-post'),
267
- 'type' => 'checkbox',
268
- 'slug' => 'post-with-image',
269
- 'option' => 'top_opt_post_with_image',
270
- 'description' => __('Check if you want to add the post featured image to the share', 'tweet-old-post'),
271
- 'options' => array(),
272
- "available_pro" => "yes",
273
- 'default_value'=>"off"
274
- )
275
- );
276
-
277
- $cwp_top_fields = array(
278
-
279
-
280
- 'interval' => array(
281
- 'id' => '14',
282
- 'name' => __('Minimum interval between shares', 'tweet-old-post'),
283
- 'type' => 'text',
284
- 'slug' => 'interval',
285
- 'option' => 'top_opt_interval',
286
- "available_pro" =>"no",
287
- 'description' => __('Minimum time between shares (Hour/Hours), 0.4 can be used also.', 'tweet-old-post'),
288
- 'options' => array()
289
-
290
- ),
291
-
292
- 'age-limit' => array(
293
- 'id' => '15',
294
- 'name' => __('Minimum age of post to be eligible for sharing', 'tweet-old-post'),
295
- 'type' => 'text',
296
- 'slug' => 'age-limit',
297
- 'option' => 'top_opt_age_limit',
298
- 'description' => __('Day/Days - 0 for Disabled', 'tweet-old-post'),
299
- 'options' => array()
300
- ),
301
-
302
- 'max-age-limit' => array(
303
- 'id' => '16',
304
- 'name' => __('Maximum age of post to be eligible for sharing', 'tweet-old-post'),
305
- 'type' => 'text',
306
- 'slug' => 'max-age-limit',
307
- 'option' => 'top_opt_max_age_limit',
308
- 'description' => __('Day/Days - 0 for Disabled', 'tweet-old-post'),
309
- 'options' => array()
310
- ),
311
-
312
- 'no-of-tweet' => array(
313
- 'id' => '17',
314
- 'name' => __('Number of Posts to share', 'tweet-old-post'),
315
- 'type' => 'text',
316
- 'slug' => 'no-of-tweet',
317
- 'option' => 'top_opt_no_of_tweet',
318
- 'description' => __('Number of posts to share each time', 'tweet-old-post'),
319
- 'options' => array()
320
- ),
321
-
322
-
323
-
324
-
325
- 'tweet-multiple-times' => array(
326
- 'id' => '25',
327
- 'name' => __('Share old posts more than once', 'tweet-old-post'),
328
- 'type' => 'checkbox',
329
- 'slug' => 'tweet-multiple-times',
330
- 'option' => 'top_opt_tweet_multiple_times',
331
- 'description' => __('By default once a post is shared it will not be shared again until you stop/start the plugin', 'tweet-old-post'),
332
- 'options' => array()
333
- ),
334
-
335
-
336
-
337
- 'post-type' => array(
338
- 'id' => '18',
339
- 'name' => __('Post Type', 'tweet-old-post'),
340
- 'type' => 'custom-post-type',
341
- 'slug' => 'post-type',
342
- 'option' => 'top_opt_post_type',
343
- 'description' => __('What type of items do you want to share?', 'tweet-old-post'),
344
- 'options' => array(),
345
- "available_pro" => "yes"
346
-
347
- ),
348
-
349
- 'analytics-tracking' => array(
350
- 'id' => '26',
351
- 'name' => __('Google Analytics Campaign Tracking', 'tweet-old-post'),
352
- 'type' => 'checkbox',
353
- 'slug' => 'ga-tracking',
354
- 'option' => 'top_opt_ga_tracking',
355
- 'description' => __('Enabling Campaign Tracking you would be able to see how much traffic Revive Old Post generated.', 'tweet-old-post'),
356
- 'options' => array()
357
- ),
358
-
359
- 'exclude-specific-categories' => array(
360
- 'id' => '21',
361
- 'name' => __('Exclude Specific Categories', 'tweet-old-post'),
362
- 'type' => 'categories-list',
363
- 'slug' => 'exclude-specific-category',
364
- 'option' => 'top_opt_omit_cats',
365
- 'description' => __('Select which categories do you want to exclude to share from? Blank - None', 'tweet-old-post'),
366
- 'options' => array()
367
- ),
368
- 'image-size'=>array(
369
- 'id' => '22',
370
- 'name' => __('Select image size ', 'tweet-old-post'),
371
- 'type' => 'image-list',
372
- 'slug' => 'image-sizes',
373
- 'option' => 'top_image_size_selected',
374
- 'description' => __('Select which image size you would like to use <br/> when posting on social networks', 'tweet-old-post'),
375
- 'options' => array(),
376
- "available_pro" => "yes",
377
- 'default_value'=>"full"
378
- )
379
-
380
- );
381
-
382
- // Default option values
383
- $defaultOptions = array(
384
- 'top_opt_tweet_type' => 'title',
385
- 'top_opt_tweet_type_custom_field' => '',
386
- 'top_opt_add_text' => '',
387
- 'top_opt_add_text_at' => 'beginning',
388
- 'top_opt_include_link' => 'true',
389
- 'top_opt_custom_url_option' => 'off',
390
- 'top_opt_use_url_shortner' => 'off',
391
- 'top_opt_ga_tracking' =>'on',
392
- 'top_opt_url_shortner' => 'is.gd',
393
- 'top_opt_custom_hashtag_option' => 'nohashtag',
394
- 'top_opt_hashtags' => '',
395
- 'top_opt_hashtag_length' => '0',
396
- 'top_opt_custom_hashtag_field' => '',
397
- 'top_opt_interval' => '4',
398
- 'top_opt_age_limit' => '30',
399
- 'top_opt_max_age_limit' => '0',
400
- 'top_opt_no_of_tweet' => '1',
401
- 'top_opt_post_type' => 'post',
402
- 'top_opt_post_type_value' => 'post',
403
- 'top_opt_custom_url_field' => '',
404
- //'top_opt_tweet_specific_category' => '',
405
- 'top_opt_omit_cats' => '',
406
-
407
- // Not field related
408
- 'cwp_topnew_active_status' => 'false'
409
- );
410
-
411
- // Define "array_column" function for PHP versions older than 5.5
412
- if(!function_exists("array_column")) {
413
- function array_column($array, $column)
414
- {
415
- $ret = array();
416
- foreach ($array as $row) $ret[] = $row[$column];
417
- return $ret;
418
- }
419
- }
420
-
421
- function top_current_page(){
422
- $pageURL = 'http';
423
- if (array_key_exists('HTTPS', $_SERVER) && $_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
424
- $pageURL .= "://";
425
- if (@$_SERVER["SERVER_PORT"] != "80") {
426
- $pageURL .= @$_SERVER["SERVER_NAME"].":".@$_SERVER["SERVER_PORT"].@$_SERVER["REQUEST_URI"];
427
- } else {
428
- $pageURL .= @$_SERVER["SERVER_NAME"].@$_SERVER["REQUEST_URI"];
429
- }
430
- return $pageURL;
431
- }
432
-
433
- function top_settings_url(){
434
- $pageURL = get_admin_url( get_current_blog_id(), "admin.php?page=TweetOldPost" );;
435
- return str_replace(":80","",$pageURL);
436
- }
437
-
438
- // Store all options in array.
439
  $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
+ // Added by Ash/Upwork
23
+ $cwp_rop_self_endpoint = "rop_checking_schedule";
24
+ // Added by Ash/Upwork
25
+ $cwp_top_global_schedule = array();
26
+ if(!defined('ROP_PRO_VERSION'))
27
+ $cwp_top_networks = array();
28
+ 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>");
29
+ 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>");
30
+
31
+ $cwp_rop_all_networks = array("twitter"=>false,"facebook"=>false,"linkedin"=>true, "xing"=>true,"tumblr"=>true);
32
+ $cwp_rop_restricted_show = array("bitly-key","bitly-user");
33
+ $cwp_format_fields = array(
34
+
35
+ 'tweet-content' => array(
36
+ 'id' => '1',
37
+ 'name' => __('Post Content', 'tweet-old-post'),
38
+ 'type' => 'select',
39
+ 'slug' => 'tweet-content',
40
+ 'option' => 'top_opt_tweet_type',
41
+ 'description' => __('What do you want to share?', 'tweet-old-post'),
42
+ 'options' => array(
43
+ 'title' => __('Title Only', 'tweet-old-post'),
44
+ 'body' => __('Body Only', 'tweet-old-post'),
45
+ 'titlenbody' => __('Title & Body', 'tweet-old-post'),
46
+ 'custom-field' => __('Custom Field', 'tweet-old-post')
47
+ ),
48
+ 'default_value'=>'title'
49
+ ),
50
+ 'top_opt_tweet_length' => array(
51
+ 'id' => '1',
52
+ 'name' => __('Length', 'tweet-old-post'),
53
+ 'type' => 'number',
54
+ 'slug' => 'tweet-length',
55
+ 'option' => 'top_opt_tweet_length',
56
+ 'description' => __('The length of the tweet', 'tweet-old-post'),
57
+ 'max-length' => 140,
58
+ 'default_value' =>140
59
+ ),
60
+
61
+ 'tweet-content-field' => array(
62
+ 'id' => '2',
63
+ 'name' => __('Post Content Custom Field', 'tweet-old-post'),
64
+ 'type' => 'text',
65
+ 'slug' => 'tweet-content-field',
66
+ 'option' => 'top_opt_tweet_type_custom_field',
67
+ 'description' => __('Which custom field do you want to fetch info from?', 'tweet-old-post'),
68
+ 'options' => array(),
69
+ 'default_value'=>""
70
+ ),
71
+
72
+ 'additional-text' => array(
73
+ 'id' => '3',
74
+ 'name' => __('Additional Text', 'tweet-old-post'),
75
+ 'type' => 'text',
76
+ 'slug' => 'additional-text',
77
+ 'option' => 'top_opt_add_text',
78
+ 'description' => __('Text added to your auto posts', 'tweet-old-post'),
79
+ 'options' => array(),
80
+ 'default_value'=>''
81
+ ),
82
+
83
+ 'additional-text-at' => array(
84
+ 'id' => '4',
85
+ 'name' => __('Additional Text At', 'tweet-old-post'),
86
+ 'type' => 'select',
87
+ 'slug' => 'additional-text-at',
88
+ 'option' => 'top_opt_add_text_at',
89
+ 'description' => __('Where do you want the text to be added?', 'tweet-old-post'),
90
+ 'options' => array(
91
+ 'beginning' => __('Beginning of Post', 'tweet-old-post'),
92
+ 'end' => __('End of Post', 'tweet-old-post')
93
+ ),
94
+ "default_value"=>"beginning"
95
+ ),
96
+
97
+ 'include-link' => array(
98
+ 'id' => '5',
99
+ 'name' => __('Include Link', 'tweet-old-post'),
100
+ 'type' => 'select',
101
+ 'slug' => 'include-link',
102
+ 'option' => 'top_opt_include_link',
103
+ 'description' => __('Include a link to your post?', 'tweet-old-post'),
104
+ 'options' => array(
105
+ 'true' => __('Yes', 'tweet-old-post'),
106
+ 'false' => __('No', 'tweet-old-post')
107
+ ),
108
+ 'dependency'=> array(
109
+ "url-from-custom-field"=>"true",
110
+ "use-url-shortner"=>"true",
111
+ ),
112
+ 'default_value' =>"yes"
113
+
114
+
115
+ ),
116
+
117
+ 'url-from-custom-field' => array(
118
+ 'id' => '6',
119
+ 'name' => __('Fetch URL From Custom Field', 'tweet-old-post'),
120
+ 'type' => 'checkbox',
121
+ 'slug' => 'url-from-custom-field',
122
+ 'option' => 'top_opt_custom_url_option',
123
+ 'description' => __('URL will be fetched from a custom field.', 'tweet-old-post'),
124
+ 'options' => '',
125
+ 'dependency'=> array(
126
+ "custom-field-url"=>"true"
127
+ ),
128
+ 'default_value'=>''
129
+
130
+ ),
131
+
132
+ 'custom-field-url' => array(
133
+ 'id' => '7',
134
+ 'name' => __('URL Custom Field', 'tweet-old-post'),
135
+ 'type' => 'text',
136
+ 'slug' => 'custom-field-url',
137
+ 'option' => 'top_opt_custom_url_field',
138
+ 'description' => __('URL will be fetched from the specified custom field.', 'tweet-old-post'),
139
+ 'options' => array(),
140
+ 'default_value'=>""
141
+ ),
142
+
143
+ 'use-url-shortner' => array(
144
+ 'id' => '8',
145
+ 'name' => __('Use URL Shortner', 'tweet-old-post'),
146
+ 'type' => 'checkbox',
147
+ 'slug' => 'use-url-shortner',
148
+ 'option' => 'top_opt_use_url_shortner',
149
+ 'description' => '',
150
+ 'options' => '',
151
+ 'dependency'=> array(
152
+ "url-shortner"=>"true"
153
+ ),
154
+ 'default_value'=>"off"
155
+ ),
156
+
157
+
158
+
159
+ 'url-shortner' => array(
160
+ 'id' => '9',
161
+ 'name' => __('URL Shortner Service', 'tweet-old-post'),
162
+ 'type' => 'select',
163
+ 'slug' => 'url-shortner',
164
+ 'option' => 'top_opt_url_shortner',
165
+ 'description' => __('Shorten the link to your post.', 'tweet-old-post'),
166
+ 'options' => array(
167
+ 'wp_short_url' => __('wp short url', 'tweet-old-post'),
168
+ //'t.co' => __('t.co', 'tweet-old-post'),
169
+ 'is.gd' => __('is.gd', 'tweet-old-post'),
170
+ 'bit.ly' => __('bit.ly', 'tweet-old-post'),
171
+ //'tr.im' => __('tr.im', 'tweet-old-post'),
172
+ //'3.ly' => __('3.ly', 'tweet-old-post'),
173
+ //'u.nu' => __('u.nu', 'tweet-old-post'),
174
+ //'1click.at' => __('1click.at', 'tweet-old-post'),
175
+ //'tinyurl' => __('TinyUrl', 'tweet-old-post')
176
+
177
+ ),
178
+ 'dependency'=> array(
179
+ "bitly-key"=>"bit.ly",
180
+ "bitly-user"=>"bit.ly"
181
+ ),
182
+ 'default_value'=>'wp_short_url'
183
+ ),
184
+
185
+ 'bitly-key' => array(
186
+ 'id' => '22',
187
+ 'name' => __('Bitly Key', 'tweet-old-post'),
188
+ 'type' => 'text',
189
+ 'slug' => 'bitly-key',
190
+ 'option' => 'top_opt_bitly_key',
191
+ 'description' => '',
192
+ 'options' => '',
193
+ 'default_value' => '',
194
+ ),
195
+
196
+ 'bitly-user' => array(
197
+ 'id' => '23',
198
+ 'name' => __('Bitly User', 'tweet-old-post'),
199
+ 'type' => 'text',
200
+ 'slug' => 'bitly-user',
201
+ 'option' => 'top_opt_bitly_user',
202
+ 'description' => '',
203
+ 'options' => '',
204
+ 'default_value' => '',
205
+ ),
206
+
207
+ 'custom-hashtag-option' => array(
208
+ 'id' => '10',
209
+ 'name' => __('Hashtags', 'tweet-old-post'),
210
+ 'type' => 'select',
211
+ 'slug' => 'custom-hashtag-option',
212
+ 'option' => 'top_opt_custom_hashtag_option',
213
+ 'description' => __('Include #hashtags in your auto posts?', 'tweet-old-post'),
214
+ 'options' => array(
215
+ 'nohashtag' => __('Don\'t add any hashtags', 'tweet-old-post'),
216
+ 'common' => __('Common hashtags for all shares', 'tweet-old-post'),
217
+ 'categories'=> __('Create hashtags from Categories', 'tweet-old-post'),
218
+ 'tags' => __('Create hashtags from Tags', 'tweet-old-post'),
219
+ 'custom' => __('Create hashtags from Custom Fields', 'tweet-old-post')
220
+ ),
221
+ 'dependency'=> array(
222
+ "common-hashtags" =>"common",
223
+ "hashtags-length" =>"common,categories,tags,custom",
224
+ "common-hashtags" =>"common",
225
+ "custom-hashtag-field"=>"custom"
226
+ ),
227
+ 'default_value'=>'nohashtag'
228
+ ),
229
+
230
+ 'common-hashtags' => array(
231
+ 'id' => '11',
232
+ 'name' => __('Common Hashtags', 'tweet-old-post'),
233
+ 'type' => 'text',
234
+ 'slug' => 'common-hashtags',
235
+ 'option' => 'top_opt_hashtags',
236
+ 'description' => __('Specify which hashtags you want to be used. eg. #example, #example2', 'tweet-old-post'),
237
+ 'options' => array(),
238
+ 'default_value'=>''
239
+ ),
240
+
241
+ 'hashtags-length' => array(
242
+ 'id' => '12',
243
+ 'name' => __('Maximum Hashtags Length', 'tweet-old-post'),
244
+ 'type' => 'text',
245
+ 'slug' => 'hashtags-length',
246
+ 'option' => 'top_opt_hashtag_length',
247
+ 'description' => __('Set to 0 (characters) to include all.', 'tweet-old-post'),
248
+ 'options' => array(),
249
+ 'default_value'=>'20'
250
+ ),
251
+
252
+ 'custom-hashtag-field' => array(
253
+ 'id' => '13',
254
+ 'name' => __('Hashtag Custom Field', 'tweet-old-post'),
255
+ 'type' => 'text',
256
+ 'slug' => 'custom-hashtag-field',
257
+ 'option' => 'top_opt_custom_hashtag_field',
258
+ 'description' => __('Fetch hashtags from specified custom field', 'tweet-old-post'),
259
+ 'options' => array(),
260
+ 'default_value'=>'',
261
+
262
+ )
263
+ ,
264
+ 'use-image' => array(
265
+ 'id' => '24',
266
+ 'name' => __('Post with Image', 'tweet-old-post'),
267
+ 'type' => 'checkbox',
268
+ 'slug' => 'post-with-image',
269
+ 'option' => 'top_opt_post_with_image',
270
+ 'description' => __('Check if you want to add the post featured image to the share', 'tweet-old-post'),
271
+ 'options' => array(),
272
+ "available_pro" => "yes",
273
+ 'default_value'=>"off"
274
+ )
275
+ );
276
+
277
+ $cwp_top_fields = array(
278
+
279
+
280
+ 'interval' => array(
281
+ 'id' => '14',
282
+ 'name' => __('Minimum interval between shares', 'tweet-old-post'),
283
+ 'type' => 'text',
284
+ 'slug' => 'interval',
285
+ 'option' => 'top_opt_interval',
286
+ "available_pro" =>"no",
287
+ 'description' => __('Minimum time between shares (Hour/Hours), 0.4 can be used also.', 'tweet-old-post'),
288
+ 'options' => array()
289
+
290
+ ),
291
+
292
+ 'age-limit' => array(
293
+ 'id' => '15',
294
+ 'name' => __('Minimum age of post to be eligible for sharing', 'tweet-old-post'),
295
+ 'type' => 'text',
296
+ 'slug' => 'age-limit',
297
+ 'option' => 'top_opt_age_limit',
298
+ 'description' => __('Day/Days - 0 for Disabled', 'tweet-old-post'),
299
+ 'options' => array()
300
+ ),
301
+
302
+ 'max-age-limit' => array(
303
+ 'id' => '16',
304
+ 'name' => __('Maximum age of post to be eligible for sharing', 'tweet-old-post'),
305
+ 'type' => 'text',
306
+ 'slug' => 'max-age-limit',
307
+ 'option' => 'top_opt_max_age_limit',
308
+ 'description' => __('Day/Days - 0 for Disabled', 'tweet-old-post'),
309
+ 'options' => array()
310
+ ),
311
+
312
+ 'no-of-tweet' => array(
313
+ 'id' => '17',
314
+ 'name' => __('Number of Posts to share', 'tweet-old-post'),
315
+ 'type' => 'text',
316
+ 'slug' => 'no-of-tweet',
317
+ 'option' => 'top_opt_no_of_tweet',
318
+ 'description' => __('Number of posts to share each time', 'tweet-old-post'),
319
+ 'options' => array()
320
+ ),
321
+
322
+
323
+
324
+
325
+ 'tweet-multiple-times' => array(
326
+ 'id' => '25',
327
+ 'name' => __('Share old posts more than once', 'tweet-old-post'),
328
+ 'type' => 'checkbox',
329
+ 'slug' => 'tweet-multiple-times',
330
+ 'option' => 'top_opt_tweet_multiple_times',
331
+ 'description' => __('By default once a post is shared it will not be shared again until you stop/start the plugin', 'tweet-old-post'),
332
+ 'options' => array()
333
+ ),
334
+
335
+
336
+
337
+ 'post-type' => array(
338
+ 'id' => '18',
339
+ 'name' => __('Post Type', 'tweet-old-post'),
340
+ 'type' => 'custom-post-type',
341
+ 'slug' => 'post-type',
342
+ 'option' => 'top_opt_post_type',
343
+ 'description' => __('What type of items do you want to share?', 'tweet-old-post'),
344
+ 'options' => array(),
345
+ "available_pro" => "yes"
346
+
347
+ ),
348
+
349
+ 'analytics-tracking' => array(
350
+ 'id' => '26',
351
+ 'name' => __('Google Analytics Campaign Tracking', 'tweet-old-post'),
352
+ 'type' => 'checkbox',
353
+ 'slug' => 'ga-tracking',
354
+ 'option' => 'top_opt_ga_tracking',
355
+ 'description' => __('Enabling Campaign Tracking you would be able to see how much traffic Revive Old Post generated.', 'tweet-old-post'),
356
+ 'options' => array()
357
+ ),
358
+
359
+ 'exclude-specific-categories' => array(
360
+ 'id' => '21',
361
+ 'name' => __('Exclude Specific Categories', 'tweet-old-post'),
362
+ 'type' => 'categories-list',
363
+ 'slug' => 'exclude-specific-category',
364
+ 'option' => 'top_opt_omit_cats',
365
+ 'description' => __('Select which categories do you want to exclude to share from? Blank - None', 'tweet-old-post'),
366
+ 'options' => array()
367
+ ),
368
+ 'image-size'=>array(
369
+ 'id' => '22',
370
+ 'name' => __('Select image size ', 'tweet-old-post'),
371
+ 'type' => 'image-list',
372
+ 'slug' => 'image-sizes',
373
+ 'option' => 'top_image_size_selected',
374
+ 'description' => __('Select which image size you would like to use <br/> when posting on social networks', 'tweet-old-post'),
375
+ 'options' => array(),
376
+ "available_pro" => "yes",
377
+ 'default_value'=>"full"
378
+ )
379
+
380
+ );
381
+
382
+ // Default option values
383
+ $defaultOptions = array(
384
+ 'top_opt_tweet_type' => 'title',
385
+ 'top_opt_tweet_type_custom_field' => '',
386
+ 'top_opt_add_text' => '',
387
+ 'top_opt_add_text_at' => 'beginning',
388
+ 'top_opt_include_link' => 'true',
389
+ 'top_opt_custom_url_option' => 'off',
390
+ 'top_opt_use_url_shortner' => 'off',
391
+ 'top_opt_ga_tracking' =>'on',
392
+ 'top_opt_url_shortner' => 'is.gd',
393
+ 'top_opt_custom_hashtag_option' => 'nohashtag',
394
+ 'top_opt_hashtags' => '',
395
+ 'top_opt_hashtag_length' => '0',
396
+ 'top_opt_custom_hashtag_field' => '',
397
+ 'top_opt_interval' => '4',
398
+ 'top_opt_age_limit' => '30',
399
+ 'top_opt_max_age_limit' => '0',
400
+ 'top_opt_no_of_tweet' => '1',
401
+ 'top_opt_post_type' => 'post',
402
+ 'top_opt_post_type_value' => 'post',
403
+ 'top_opt_custom_url_field' => '',
404
+ //'top_opt_tweet_specific_category' => '',
405
+ 'top_opt_omit_cats' => '',
406
+
407
+ // Not field related
408
+ 'cwp_topnew_active_status' => 'false'
409
+ );
410
+
411
+ // Define "array_column" function for PHP versions older than 5.5
412
+ if(!function_exists("array_column")) {
413
+ function array_column($array, $column)
414
+ {
415
+ $ret = array();
416
+ foreach ($array as $row) $ret[] = $row[$column];
417
+ return $ret;
418
+ }
419
+ }
420
+
421
+ function top_current_page(){
422
+ $pageURL = 'http';
423
+ if (array_key_exists('HTTPS', $_SERVER) && $_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
424
+ $pageURL .= "://";
425
+ if (@$_SERVER["SERVER_PORT"] != "80") {
426
+ $pageURL .= @$_SERVER["SERVER_NAME"].":".@$_SERVER["SERVER_PORT"].@$_SERVER["REQUEST_URI"];
427
+ } else {
428
+ $pageURL .= @$_SERVER["SERVER_NAME"].@$_SERVER["REQUEST_URI"];
429
+ }
430
+ return $pageURL;
431
+ }
432
+
433
+ function top_settings_url(){
434
+ $pageURL = get_admin_url( get_current_blog_id(), "admin.php?page=TweetOldPost" );;
435
+ return str_replace(":80","",$pageURL);
436
+ }
437
+
438
+ // Store all options in array.
439
  $cwp_top_options_list = array_column($cwp_top_fields, 'option');
inc/core.php CHANGED
@@ -1,3057 +1,3312 @@
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
- // Added by Ash/Upwork
8
- define("ROP_IS_TEST", false);
9
- // Added by Ash/Upwork
10
-
11
-
12
- if (!class_exists('CWP_TOP_Core')) {
13
- class CWP_TOP_Core {
14
-
15
- // All fields
16
- public static $fields;
17
- public static $networks;
18
- // Number of fields
19
- public static $noFields;
20
- public $notices;
21
- // Consumer key, Consumer Secret key, oAuth Callback Key
22
- public $consumer;
23
- public $lastID;
24
- public $consumerSecret;
25
- public $oAuthCallback;
26
- public $bitly_key;
27
- public $bitly_user;
28
- // Access token, oAuth Token, oAuth Token Secret and User Information
29
- private $cwp_top_access_token;
30
- private $cwp_top_oauth_token;
31
- private $cwp_top_oauth_token_secret;
32
-
33
- public $users;
34
- private $user_info;
35
-
36
- // Plugin Status
37
- public $pluginStatus;
38
- // Interval Set
39
- public $intervalSet;
40
- public $cwp_twitter;
41
- public static $date_format;
42
- public function __construct() {
43
- // Get all fields
44
- global $cwp_top_fields;
45
- global $cwp_top_networks;
46
-
47
-
48
- $this->setAlloAuthSettings();
49
- // Load all hooks
50
- $this->loadAllHooks();
51
-
52
- // Set all authentication settings
53
- // Check if the user added any account
54
- $this->afterAddAccountCheck();
55
-
56
- // Save all fields in static var
57
- self::$fields = $cwp_top_fields;
58
- self::$networks = $cwp_top_networks;
59
-
60
- // Save all number of fields in static var
61
- self::$noFields = count(self::$fields);
62
- }
63
- public static function addNotice($message,$type){
64
- $errors = get_option('rop_notice_active');
65
- if(count($errors) > 30) $errors = array();
66
- $errors[] = array(
67
- "time"=>date('j-m-Y h:i:s A'),
68
- 'message'=>$message,
69
- "type" => $type
70
- );
71
- update_option("rop_notice_active",$errors);
72
-
73
- }
74
- public static function clearLog(){
75
- if(!is_admin()) return false;
76
- update_option("rop_notice_active",array());
77
-
78
- }
79
- public static function addLog($m){
80
- $m .= date('l jS \of F Y h:i:s A')." - ".$m." \n\n ";
81
- file_put_contents("rop.log",$m,FILE_APPEND);
82
-
83
- }
84
- public function addLocalization() {
85
-
86
- load_plugin_textdomain('tweet-old-post', false, dirname(ROPPLUGINBASENAME).'/languages/');
87
- }
88
- function checkUsers(){
89
- if(!is_array($this->users)) $this->users = array();
90
- if(count($this->users) == 0){
91
-
92
- self::addNotice(__("You have no account set to post !", 'tweet-old-post'),"error");
93
- die();
94
- }
95
-
96
- }
97
- public function startTweetOldPost( )
98
- {
99
- if(!is_admin()) return false;
100
- $this->checkUsers();
101
- if($this->pluginStatus !== 'true' ) {
102
- do_action("rop_start_posting");
103
- }
104
- die();
105
- }
106
- public function startPosting(){
107
-
108
- update_option('cwp_topnew_active_status', 'true');
109
- update_option('top_opt_already_tweeted_posts',array());
110
- update_option('top_last_tweets',array());
111
- $timeNow = $this->getTime();
112
- $timeNow = $timeNow+15;
113
-
114
- $this->clearScheduledTweets();
115
- $networks = $this->getAvailableNetworks();
116
-
117
- foreach($networks as $network){
118
- wp_schedule_single_event($timeNow,$network.'roptweetcron',array($network));
119
- }
120
-
121
- }
122
-
123
- public function stopPosting(){
124
-
125
- // Set it to inactive status
126
- update_option('cwp_topnew_active_status', 'false');
127
- update_option('cwp_topnew_notice', '');
128
- update_option('top_opt_already_tweeted_posts',array());
129
-
130
- // Clear all scheduled tweets
131
- $this->clearScheduledTweets();
132
- }
133
- public function stopTweetOldPost()
134
- {
135
- if(!is_admin()) return false;
136
- //echo $this->pluginStatus;
137
- // If the plugin is active
138
- if($this->pluginStatus !== 'false') {
139
- do_action("rop_stop_posting");
140
- }
141
-
142
- die(); // Required for AJAX
143
- }
144
-
145
- public function getExcludedPosts() {
146
-
147
- $postQueryPosts = "";
148
- $postPosts = get_option('top_opt_excluded_post');
149
-
150
- if(!empty($postPosts) && is_array($postPosts)) {
151
- $postQueryPosts = implode(',',$postPosts);
152
- }
153
- else
154
- $postQueryPosts = get_option('top_opt_excluded_post');
155
-
156
- return $postQueryPosts;
157
-
158
- }
159
-
160
- public function getTweetsFromDBbyID($id)
161
- {
162
- global $wpdb;
163
- $query = "
164
- SELECT * FROM {$wpdb->prefix}posts where ID = '{$id}'";
165
- $returnedPost = $wpdb->get_results($query);
166
- //echo $query;
167
- return $returnedPost;
168
- }
169
-
170
- // Added by Ash/Upwork
171
- /**
172
- * This will get the postIDs for the particular network
173
- */
174
- private function getAlreadyTweetedPosts($ntk){
175
- $array = array();
176
- if(!$ntk) return $array;
177
-
178
- $opt = get_option("top_opt_posts_buffer_" . $ntk, array());
179
- if(!$opt || !is_array($opt)) return $array;
180
-
181
- return $opt;
182
- }
183
-
184
- /**
185
- * This will add the postID to the network buffer to note which post was posted on which network
186
- */
187
- private function setAlreadyTweetedPosts($ntk, $postID){
188
- if(!$ntk || !$postID) return;
189
- $opt = get_option("top_opt_posts_buffer_" . $ntk, array());
190
- if(!$opt || !is_array($opt)){
191
- $opt = array();
192
- }
193
- $opt[] = $postID;
194
-
195
-
196
- update_option("top_opt_posts_buffer_" . $ntk, $opt);
197
- }
198
-
199
- /**
200
- * This will clear the network buffer
201
- */
202
- private function clearAlreadyTweetedPosts($ntk){
203
- if(!$ntk) return;
204
- delete_option("top_opt_posts_buffer_" . $ntk);
205
- }
206
-
207
- /**
208
- * This is a test method that will be fired on admin_init. Only to be used for testing.
209
- * In production, this function will just return harmlessly
210
- */
211
- public function doTestAction(){
212
- if(!ROP_IS_TEST) return;
213
-
214
- $networks = array("twitter", "facebook", "linkedin", "tumblr");
215
- $ntk = $networks[array_rand($networks)];
216
- for($x = 0; $x < rand(0,5); $x++) $this->setAlreadyTweetedPosts($ntk, rand(0,100));
217
- echo "<pre>network=".$ntk.print_r($this->getAlreadyTweetedPosts($ntk),true). "</pre>";
218
- }
219
-
220
- // Added by Ash/Upwork
221
-
222
- public function getTweetsFromDB($ntk=null, $clearNetworkBuffer=false)
223
- {
224
- global $wpdb;
225
- // Generate the Tweet Post Date Range
226
- $dateQuery = $this->getTweetPostDateRange();
227
- if(!is_array($dateQuery)) return false;
228
- // Get the number of tweets to be tweeted each interval.
229
- $tweetCount = intval(get_option('top_opt_no_of_tweet'));
230
- if($tweetCount == 0 ) {
231
- self::addNotice("Invalid number for Number of Posts to share. It must be a value greater than 0 ",'error');
232
- return false;
233
- }
234
- // Get post categories set.
235
- // $postQueryCategories = $this->getTweetCategories();
236
- $excludedIds = "";
237
- // Added by Ash/Upwork
238
- $tweetedPosts = $this->getAlreadyTweetedPosts($ntk);
239
- /*
240
- $tweetedPosts = get_option("top_opt_already_tweeted_posts");
241
- if(!is_array($tweetedPosts)) $tweetedPosts = array();
242
-
243
- if (get_option('top_opt_tweet_multiple_times')=="on") {
244
-
245
- $tweetedPosts = array();
246
- }
247
- */
248
- $postQueryExcludedPosts = $this->getExcludedPosts();
249
- $postQueryExcludedPosts = explode (',',$postQueryExcludedPosts);
250
- $excluded = array_merge($tweetedPosts,$postQueryExcludedPosts);
251
- $excluded = array_unique($excluded);
252
- $excluded = array_filter($excluded);
253
- $postQueryExcludedCategories = $this->getExcludedCategories();
254
- $somePostType = $this->getTweetPostType();
255
- // Generate dynamic query.
256
- $query = "
257
- SELECT {$wpdb->prefix}posts.ID
258
- FROM {$wpdb->prefix}posts
259
- LEFT JOIN {$wpdb->prefix}term_relationships ON ({$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id)
260
- WHERE 1=1 ";
261
-
262
- // Added by Ash/Upwork
263
- if(array_key_exists("before", $dateQuery)){
264
- $query .= "AND post_date >= '{$dateQuery['before']}' ";
265
- }
266
- if(array_key_exists("after", $dateQuery)){
267
- $query .= "AND post_date <= '{$dateQuery['after']}' ";
268
- }
269
- // Added by Ash/Upwork
270
-
271
- // If there are no categories set, select the post from all.
272
- //if(!empty($postQueryCategories)) {
273
- // $query .= "AND (wp_term_relationships.term_taxonomy_id IN ({$postQueryCategories})) ";
274
- // }
275
-
276
- if(!empty($postQueryExcludedCategories)) {
277
- $query .= "AND ( {$wpdb->prefix}posts.ID NOT IN (
278
- SELECT object_id
279
- FROM {$wpdb->prefix}term_relationships
280
- INNER JOIN {$wpdb->prefix}term_taxonomy ON ( {$wpdb->prefix}term_relationships.term_taxonomy_id = {$wpdb->prefix}term_taxonomy.term_taxonomy_id )
281
- WHERE {$wpdb->prefix}term_taxonomy.term_id IN ({$postQueryExcludedCategories}))) ";
282
- }
283
-
284
- if(!empty($excluded)) {
285
- $excluded = implode(',',$excluded);
286
- $query .= "AND ( {$wpdb->prefix}posts.ID NOT IN ({$excluded})) ";
287
- }
288
- if(!empty($somePostType)){
289
- $somePostType = explode(',',$somePostType);
290
- $somePostType = "'".implode("','",$somePostType)."'";
291
- }
292
-
293
- // Added by Ash/Upwork
294
- // Use a more efficient = condition than a costly IN condition if only one type is present
295
- if(!empty($somePostType)){
296
- if(strpos($somePostType, ",") !== FALSE){
297
- $query .= "AND {$wpdb->prefix}posts.post_type IN ({$somePostType}) ";
298
- }else{
299
- $query .= "AND {$wpdb->prefix}posts.post_type = ({$somePostType}) ";
300
- }
301
- }
302
- // Added by Ash/Upwork
303
-
304
- $query .= "AND ({$wpdb->prefix}posts.post_status = 'publish')
305
- GROUP BY {$wpdb->prefix}posts.ID
306
- order by RAND() limit 50
307
- ";
308
-
309
- $returnedPost = $wpdb->get_results( $query);
310
-
311
- //self::addLog("rows " . count($returnedPost) . " from " . $query);
312
-
313
- // Added by Ash/Upwork
314
- // If the number of posts found is zero and a post can be shared multiple times, lets clear the buffer and fetch again
315
- if($ntk && !$clearNetworkBuffer && count($returnedPost) == 0 && get_option('top_opt_tweet_multiple_times') == "on"){
316
- //self::addLog("clearing for $ntk!!");
317
- $this->clearAlreadyTweetedPosts($ntk);
318
- return $this->getTweetsFromDB($ntk, true);
319
- }
320
- // Added by Ash/Upwork
321
-
322
- if(count($returnedPost) > $tweetCount) {
323
- $rand_keys = array_rand( $returnedPost, $tweetCount );
324
-
325
- if ( is_int( $rand_keys ) ) {
326
- $rand_keys = array( $rand_keys );
327
- }
328
- $return = array();
329
-
330
- foreach ( $rand_keys as $rk ) {
331
- $return[] = $returnedPost[ $rk ];
332
- }
333
- $returnedPost = $return;
334
- if ( count( $returnedPost ) > $tweetCount ) {
335
- $returnedPost = array_slice( $returnedPost, 0, $tweetCount );
336
- }
337
- }
338
- $ids = array();
339
- foreach($returnedPost as $rp){
340
- $ids[] = $rp->ID;
341
-
342
- }
343
-
344
-
345
- $returnedPost = array();
346
- if(!empty($ids))
347
- $returnedPost = $wpdb->get_results("select * from {$wpdb->prefix}posts where ID in (".implode(",",$ids).") ");
348
-
349
- return $returnedPost;
350
-
351
- }
352
- public function isPostWithImageEnabled ($ntk = "twitter") {
353
- $options = get_option("top_opt_post_formats");
354
- $format_fields = $this->getFormatFields();
355
- $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") ;
356
- if ($value !='on')
357
- return false;
358
- else
359
- return true;
360
- }
361
- public function getUsers(){
362
- $users = apply_filters("rop_users_filter",get_option('cwp_top_logged_in_users'));
363
- return is_array($users) ? $users : array();
364
-
365
-
366
- }
367
- public function checkNetworkLock($ntk){
368
- if ( wp_using_ext_object_cache() ) {
369
- $value = wp_cache_get( $ntk.'roplock', 'transient', true );
370
- return ( false !== $value) ;
371
- } else {
372
-
373
-
374
- return (false !== ( $value = get_transient( $ntk.'roplock' ) ));
375
- }
376
-
377
-
378
-
379
-
380
- }
381
- public function setNetworkLock($ntk){
382
- if ( wp_using_ext_object_cache() ) {
383
- wp_cache_set( $ntk.'roplock', "lock", 'transient', 5 * MINUTE_IN_SECONDS );
384
- } else {
385
- set_transient( $ntk.'roplock' , "lock",5 * MINUTE_IN_SECONDS);
386
- }
387
-
388
- }
389
- public function deleteNetworkLock($ntk){
390
- if ( wp_using_ext_object_cache() ) {
391
- wp_cache_delete($ntk.'roplock','transient');
392
- } else {
393
- delete_transient($ntk.'roplock');
394
- }
395
-
396
- }
397
-
398
- public function tweetOldPost($ntk = "",$byID = false)
399
-
400
- {
401
- if ( $this->checkNetworkLock($ntk) && $byID === false ) return false;
402
-
403
-
404
- $this->setNetworkLock($ntk);
405
- if ($byID!==false) {
406
-
407
- $returnedPost = $this->getTweetsFromDBbyID($byID);
408
- }else{
409
- $returnedPost = $this->getTweetsFromDB($ntk);
410
- if(!is_array($returnedPost)) return false;
411
- }
412
- if (count($returnedPost) == 0 ) {
413
- self::addNotice(__('There is no suitable post to tweet make sure you excluded correct categories and selected the right dates.','tweet-old-post'),'error');
414
- }
415
- $users = $this->getUsers();
416
- foreach($returnedPost as $post){
417
- $oknet = false;
418
- foreach($users as $u){
419
- if($u['service'] == $ntk){
420
- $oknet = true;
421
- break;
422
- }
423
- }
424
- if(!$oknet) return false;
425
- $finalTweet = $this->generateTweetFromPost($post,$ntk);
426
- $this->tweetPost( $finalTweet, $ntk, $post );
427
- $this->setAlreadyTweetedPosts($ntk, $post->ID);
428
- }
429
- if ($byID===false) {
430
- $this->scheduleTweet($ntk);
431
- }
432
-
433
-
434
- $this->deleteNetworkLock($ntk);
435
- }
436
-
437
- public function scheduleTweet($ntk){
438
- $time = $this->getNextTweetTime( $ntk );
439
-
440
- if($time != 0 && $time > $this->getTime()){
441
- if(wp_next_scheduled( $ntk.'roptweetcron',array($ntk) ) === false) {
442
- wp_schedule_single_event( $time, $ntk . 'roptweetcron', array( $ntk ) );
443
- }
444
- }else{
445
- self::addNotice(__("Invalid next schedule: ",'tweet-old-post').date ( 'M j, Y @ G:i',$time),'error');
446
- }
447
- }
448
- public function getAvailableNetworks(){
449
- $networks = array();
450
- $users = is_array($this->users) ? $this->users : array();
451
- foreach($users as $u){
452
- if(!in_array($u['service'],$networks))
453
- $networks[] = $u['service'];
454
- }
455
-
456
- return $networks;
457
- }
458
-
459
- public function getAllNetworks($all = false){
460
- global $cwp_rop_all_networks;
461
- if(empty($cwp_rop_all_networks)) return array();
462
-
463
- return ($all) ? $cwp_rop_all_networks : array_keys($cwp_rop_all_networks);
464
- }
465
- public function findInString($where,$what) {
466
- if (!is_string($where)) {
467
- return false;
468
- }
469
- else
470
- return strpos($where,$what);
471
- }
472
-
473
- public function getNotice() {
474
- if(!is_admin()) return false;
475
- $notice = get_option('rop_notice_active');
476
- if(!is_array($notice)) $notice = array();
477
-
478
- foreach($notice as $k=>$n){
479
- $notice[$k]['message'] = strip_tags($n['message']);
480
- }
481
- echo json_encode($notice);
482
- die();
483
- }
484
-
485
- public function tweetNow() {
486
- if(!is_admin()) return false;
487
- $networks = $this->getAvailableNetworks();
488
- foreach($networks as $net){
489
-
490
- $this->tweetOldPost($net,get_option('top_lastID'));
491
- }
492
- die();
493
- }
494
-
495
- public function viewSampleTweet()
496
- {
497
-
498
- if(!is_admin()) return false;
499
- $returnedTweets = $this->getTweetsFromDB();
500
-
501
- $messages = array();
502
- $networks = $this->getAvailableNetworks();
503
-
504
- if(count($returnedTweets) == 0) {
505
- foreach($networks as $net){
506
- $messages[$net] = __("No posts to share",'tweet-old-post');
507
- }
508
- $networks = array();
509
- }
510
- foreach($networks as $n) {
511
-
512
- $finalTweetsPreview = $this->generateTweetFromPost($returnedTweets[0],$n);
513
- if (is_array($finalTweetsPreview)){
514
- $finalTweetsPreview = $finalTweetsPreview['message']." ".$finalTweetsPreview['link'];
515
- }
516
- $messages[$n] = $finalTweetsPreview;
517
- }
518
- if(isset($returnedTweets[0]))
519
- update_option( 'top_lastID', $returnedTweets[0]->ID);
520
-
521
- foreach($networks as $n) {
522
- if (CWP_TOP_PRO && $this->isPostWithImageEnabled($n)) {
523
-
524
- if(defined('ROP_PRO_VERSION')){
525
- global $CWP_TOP_Core_PRO;
526
- $image = $CWP_TOP_Core_PRO->getPostImage($returnedTweets[0]->ID);
527
-
528
- }else {
529
- if ( has_post_thumbnail( $returnedTweets[0]->ID ) ) :
530
-
531
- $image_array = wp_get_attachment_image_src( get_post_thumbnail_id( $returnedTweets[0]->ID ) );
532
-
533
- $image = $image_array[0];
534
- else :
535
- $post = get_post( $returnedTweets[0]->ID );
536
- $image = '';
537
- ob_start();
538
- ob_end_clean();
539
- $output = preg_match_all( '/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches );
540
- if(isset($matches [1] [0]))
541
- $image = $matches [1] [0];
542
-
543
- endif;
544
- }
545
- if(!empty($image))
546
- $messages[$n] = '<img class="top_preview" src="'.$image.'"/>'.$messages[$n];
547
- }
548
- }
549
-
550
- echo json_encode($messages);
551
-
552
-
553
- die(); // required
554
- }
555
-
556
- /**
557
- * Returns if the post is already tweeted
558
- * @param [type] $postId Post ID
559
- * @return boolean True if not already tweeted / False if already tweeted
560
- */
561
-
562
- public function isNotAlreadyTweeted($postId) {
563
- // Get all already tweeted posts
564
-
565
- $tweetedPosts = get_option("top_opt_already_tweeted_posts");
566
-
567
- if (!$tweetedPosts) {
568
- add_option("top_opt_already_tweeted_posts");
569
- return true;
570
- }
571
-
572
- // If the new post ID is in the array, which means that is already tweeted
573
- if (!empty($tweetedPosts) && is_array($tweetedPosts) ) {
574
-
575
- if (in_array($postId, $tweetedPosts))
576
- return false;
577
- else
578
- return true;
579
- }
580
- else
581
- {
582
- return true;
583
- }
584
- }
585
-
586
- public function getStrLen($string) {
587
-
588
- if (function_exists("mb_strlen"))
589
- return mb_strlen($string);
590
- else
591
- return strlen($string);
592
- }
593
-
594
- public function ropSubstr($string,$nr1,$nr2 ) {
595
-
596
- return substr($string,$nr1, $nr2);
597
- }
598
-
599
- /**
600
- * Generates the tweet based on the user settings
601
- * @param [type] $postQuery Returned post from database
602
- * @return [type] Generated Tweet
603
- */
604
-
605
- public function generateTweetFromPost($postQuery,$network)
606
- {
607
-
608
- $format_fields = $this->getFormatFields();
609
- $tweetedPosts = get_option("top_opt_already_tweeted_posts");
610
- $formats = get_option('top_opt_post_formats');
611
- $tweet_content = isset($formats[$network."_"."top_opt_tweet_type"]) ? $formats[$network."_"."top_opt_tweet_type"] : get_option( 'top_opt_tweet_type' );
612
- $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' );
613
- $additional_text = isset($formats[$network."_"."top_opt_add_text"]) ? $formats[$network."_"."top_opt_add_text"] : get_option( 'top_opt_tweet_type_custom_field' );
614
- $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' );
615
- $max_length = isset($formats[$network."_"."top_opt_tweet_length"]) ? $formats[$network."_"."top_opt_tweet_length"] : $format_fields[$network]['top_opt_tweet_length']['default_value'];
616
- $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' );
617
- $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' );
618
- $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' );
619
- $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' );
620
- $url_shortner_service = isset($formats[$network."_"."top_opt_url_shortner"]) ? $formats[$network."_"."top_opt_url_shortner"] : get_option( 'top_opt_url_shortner' );
621
- $hashtags = isset($formats[$network."_"."top_opt_custom_hashtag_option"]) ? $formats[$network."_"."top_opt_custom_hashtag_option"] : get_option( 'top_opt_custom_hashtag_option' );
622
- $common_hashtags = isset($formats[$network."_"."top_opt_hashtags"]) ? $formats[$network."_"."top_opt_hashtags"] : get_option( 'top_opt_hashtags' );
623
- $maximum_hashtag_length = isset($formats[$network."_"."top_opt_hashtag_length"]) ? $formats[$network."_"."top_opt_hashtag_length"] : get_option( 'top_opt_hashtag_length' );
624
- $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' );
625
- $bitly_key = isset($formats[$network."_"."top_opt_bitly_key"]) ? $formats[$network."_"."top_opt_bitly_key"] : get_option( 'top_opt_bitly_key' );
626
- $bitly_user = isset($formats[$network."_"."top_opt_bitly_user"]) ? $formats[$network."_"."top_opt_bitly_user"] : get_option( 'top_opt_bitly_user' );
627
- $post_with_image = isset($formats[$network."_". 'top_opt_post_with_image']) ? $formats[$network."_". 'top_opt_post_with_image'] : get_option( 'top_opt_bitly_user' );
628
- $ga_tracking = get_option( 'top_opt_ga_tracking' );
629
- $additionalTextBeginning = "";
630
- $additionalTextEnd = "";
631
-
632
- // If the user set to not use hashtags, set it to empty variable.
633
- if ( $hashtags == 'nohashtag' ) {
634
- $newHashtags = "";
635
- }
636
- // Generate the tweet content.
637
- switch ( $tweet_content ) {
638
- case 'title':
639
- $tweetContent = $postQuery->post_title;
640
- break;
641
- case 'body':
642
- $tweetContent = get_post_field( 'post_content', $postQuery->ID );
643
- break;
644
- case 'titlenbody':
645
- $tweetContent = $postQuery->post_title . " " . get_post_field( 'post_content', $postQuery->ID );
646
- break;
647
- case 'custom-field':
648
- $tweetContent = get_post_meta( $postQuery->ID, $tweet_content_custom_field, true );
649
- break;
650
- default:
651
- $tweetContent = "";
652
- break;
653
- }
654
- // Trim new empty lines.
655
- if(!is_string($tweetContent)) $tweetContent = '';
656
- $tweetContent = strip_tags( html_entity_decode( $tweetContent,ENT_QUOTES ) );
657
- //$tweetContent = esc_html($tweetContent);
658
- //$tweetContent = esc_html($tweetContent);
659
- //$tweetContent = trim(preg_replace('/\s+/', ' ', $tweetContent));
660
- // Remove html entinies.
661
- //$tweetContent = preg_replace("/&#?[a-z0-9]+;/i","", $tweetContent);
662
- // Strip all shortcodes from content.
663
- $tweetContent = strip_shortcodes( $tweetContent );
664
- $fTweet = array();
665
- $post_url = get_permalink( $postQuery->ID );
666
- // Generate the post link.
667
- if ( $include_link == 'true' ) {
668
- if ( $fetch_url_from_custom_field == 'on' ) {
669
- //$post_url = preg_replace('/https?:\/\/[^\s"<>]+/', '$0', );
670
- preg_match_all('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', get_post_meta( $postQuery->ID, $custom_field_url, true ), $match);
671
- if(isset($match[0])){
672
- if(isset($match[0][0]))
673
- $post_url = $match[0][0];
674
- }
675
- } else {
676
- $post_url = "" . get_permalink( $postQuery->ID );
677
- }
678
- if ( $post_url == "" ) {
679
- $post_url = "" . get_permalink( $postQuery->ID );
680
- }
681
- if ( $ga_tracking == "on" ) {
682
- $param = 'utm_source=ReviveOldPost&utm_medium=social&utm_campaign=ReviveOldPost';
683
- $post_url = rtrim( $post_url );
684
- if ( strpos( $post_url, "?" ) === false ) {
685
- $post_url .= '?' . $param;
686
- } else {
687
- $post_url .= '&' . $param;
688
- }
689
- }
690
- if ( $use_url_shortner == 'on' ) {
691
- $post_url = "" . $this->shortenURL( $post_url, $url_shortner_service, $postQuery->ID, $bitly_key, $bitly_user );
692
- }
693
- if ( $post_url == "" ) {
694
- $post_url = "" . get_permalink( $postQuery->ID );
695
- }
696
- $post_url = $post_url . "";
697
- } else {
698
- $post_url = "";
699
- }
700
- // Generate the hashtags
701
- $newHashtags = "";
702
- if ( $hashtags != 'nohashtag' ) {
703
- switch ( $hashtags ) {
704
- case 'common':
705
- $newHashtags = $common_hashtags;
706
- break;
707
- case 'categories':
708
- if ( $postQuery->post_type == "post" ) {
709
- $postCategories = get_the_category( $postQuery->ID );
710
- foreach ( $postCategories as $category ) {
711
- if ( strlen( $category->slug . $newHashtags ) <= $maximum_hashtag_length || $maximum_hashtag_length == 0 ) {
712
- $newHashtags = $newHashtags . " #" . preg_replace( '/-/', '', strtolower( $category->slug ) );
713
- }
714
- }
715
- } else {
716
- if ( CWP_TOP_PRO ) {
717
- global $CWP_TOP_Core_PRO;
718
- $newHashtags = $CWP_TOP_Core_PRO->topProGetCustomCategories( $postQuery, $maximum_hashtag_length );
719
- }
720
- }
721
- break;
722
- case 'tags':
723
- $postTags = wp_get_post_tags( $postQuery->ID );
724
- foreach ( $postTags as $postTag ) {
725
- if ( strlen( $postTag->slug . $newHashtags ) <= $maximum_hashtag_length || $maximum_hashtag_length == 0 ) {
726
- $newHashtags = $newHashtags . " #" . preg_replace( '/-/', '', strtolower( $postTag->slug ) );
727
- }
728
- }
729
- break;
730
- case 'custom':
731
- $newHashtags = get_post_meta( $postQuery->ID, $hashtag_custom_field, true );
732
- if($maximum_hashtag_length != 0){
733
- if(strlen( $newHashtags ) <= $maximum_hashtag_length)
734
- {
735
- $newHashtags = $this->ropSubstr($newHashtags,0,$maximum_hashtag_length);
736
- }
737
- }
738
- break;
739
- default:
740
- break;
741
- }
742
- }
743
- // Generate the additional text
744
- if ( $additional_text_at == 'beginning' ) {
745
- $additionalTextBeginning = $additional_text . " ";
746
- }
747
- if ( $additional_text_at == 'end' ) {
748
- $additionalTextEnd = " " . $additional_text;
749
- }
750
-
751
- $fTweet['link'] = $post_url;
752
- $adTextELength = 0;
753
- if(is_string($additionalTextEnd)){
754
- $adTextELength = $this->getStrLen($additionalTextEnd);
755
- }
756
- $adTextBLength = 0;
757
- if(is_string($additionalTextBeginning)){
758
- $adTextBLength = $this->getStrLen($additionalTextBeginning);
759
- }
760
- $hashLength = 0;
761
- if(is_string($newHashtags) && $network != 'tumblr'){
762
- $hashLength = $this->getStrLen($newHashtags);
763
- }
764
- $finalTweetSize = $max_length - $hashLength - $adTextELength - $adTextBLength ;
765
- if($network == 'twitter' && !empty($fTweet['link']) ){
766
- $finalTweetSize = $finalTweetSize - 25;
767
-
768
-
769
- }
770
- if($network == 'twitter' && CWP_TOP_PRO && $this->isPostWithImageEnabled($network)){
771
- $finalTweetSize = $finalTweetSize - 25;
772
- }
773
- $tweetContent = $this->ropSubstr( $tweetContent,0,$finalTweetSize);
774
- if($network == 'twitter'){
775
- if(!empty($fTweet['link'])) $fTweet['link'] = " ".$fTweet['link']." ";
776
-
777
- $finalTweet = $additionalTextBeginning . $tweetContent .$fTweet['link'].$newHashtags . $additionalTextEnd;
778
- $fTweet['link'] = '';
779
- $finalTweet = preg_replace('/\s+/', ' ', trim( $finalTweet));
780
-
781
- }else{
782
- if($network === 'tumblr') {
783
- $fTweet['tags'] = implode(",",array_filter(explode("#", $newHashtags)));
784
- $finalTweet = $additionalTextBeginning . $tweetContent . $additionalTextEnd;
785
- }else{
786
- $finalTweet = $additionalTextBeginning . $tweetContent .$newHashtags . $additionalTextEnd;
787
- }
788
- }
789
-
790
- $fTweet['message'] = $finalTweet ;
791
-
792
- return $fTweet;
793
- }
794
-
795
- /**
796
- * Tweets the returned post from generateTweetFromPost()
797
- * @param [type] $finalTweet Generated tweet
798
- */
799
-
800
- public function tweetPost($finalTweet,$network = 'twitter',$post)
801
- {
802
- // Added by Ash/Upwork
803
- if(ROP_IS_TEST){
804
- self::addLog("Not posting because ROP_IS_TEST is set");
805
- return;
806
- }
807
- // Added by Ash/Upwork
808
-
809
- $users = $this->getUsers();
810
- foreach ($users as $user) {
811
- if($network == $user['service'] ){
812
-
813
- switch ($user['service']) {
814
- case 'twitter':
815
- // Create a new twitter connection using the stored user credentials.
816
- $connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
817
- $args = array('status' => $finalTweet['message'].$finalTweet['link']);
818
- $response = false;
819
- //self::addNotice(strlen($args["status"]),"error");
820
- if($this->isPostWithImageEnabled($network) && CWP_TOP_PRO) {
821
- global $CWP_TOP_Core_PRO;
822
-
823
-
824
- if(defined('ROP_IMAGE_CHECK')){
825
- $args = $CWP_TOP_Core_PRO->topProImage( $connection, $finalTweet, $post->ID, $network );
826
- // Added by Ash/Upwork: !empty($args['media[]'])
827
- if ( isset( $args['media[]'] ) && !empty($args['media[]'])) {
828
- $image = array("media"=>$args['media[]']);
829
- $response = $connection->upload( 'https://upload.twitter.com/1.1/media/upload.json', $image );
830
- unset($args['media[]']);
831
- $args["media_ids"] = $response->media_id_string;
832
- $response = $connection->post( 'statuses/update', $args );
833
- } else {
834
- $response = $connection->post( 'statuses/update', $args );
835
- }
836
- }else{
837
- $response = $CWP_TOP_Core_PRO->topProImage( $connection, $finalTweet['message']. " " .$finalTweet['link'], $post->ID, $network );
838
- }
839
- }else{
840
-
841
- $response = $connection->post('statuses/update',$args);
842
- }
843
-
844
- if($response !== false){
845
- $status = '';
846
- if(!is_object($response))
847
- $status = json_decode($response);
848
- if(!is_object($status)){
849
-
850
- // self::addNotice("Error for post ".$post->post_title." when sending to Twitter: Invalid response - ".$response,'error');
851
-
852
- }
853
- else{
854
-
855
- if($status->errors[0]->code != 200) {
856
- // self::addNotice("Error for post ".$post->post_title." when sending to Twitter: ".$status->errors[0]->message,'error');
857
-
858
-
859
- }
860
- else{
861
-
862
- }
863
- }
864
- if($connection->http_code == 200 ){
865
- self::addNotice("Post ".$post->post_title." has been successfully sent to Twitter.",'notice');
866
-
867
- }
868
- }
869
- break;
870
- case 'facebook':
871
-
872
- $args = array(
873
-
874
- 'body' => array( 'message' => $finalTweet['message'],'link' => $finalTweet['link']),
875
- 'timeout'=>20
876
-
877
- );
878
- if($this->isPostWithImageEnabled($network) && CWP_TOP_PRO){
879
- global $CWP_TOP_Core_PRO;
880
- if(defined('ROP_IMAGE_CHECK'))
881
- $args = $CWP_TOP_Core_PRO->topProImage($connection, $finalTweet, $post->ID,$network);
882
- }
883
-
884
- $pp=wp_remote_post("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/".$user['id']."/feed?access_token=".$user['oauth_token'],$args);
885
- if(is_wp_error( $pp )){
886
- self::addNotice(__("Error for posting on facebook for:",'tweet-old-post')." ".$post->post_title."".$pp->get_error_message(),'error' );
887
-
888
- }else{
889
- if($pp['response']['code'] == 200){
890
-
891
- self::addNotice(sprintf(__("Post %s has been successfully sent to facebook",'tweet-old-post'), $post->post_title),'notice');
892
- }else{
893
- self::addNotice(__("Error for facebook share on post ",'tweet-old-post'). $post->post_title." ".$pp['response']['message']." @".$user['oauth_user_details']->name,'error');
894
-
895
- }
896
-
897
- }
898
-
899
- break;
900
-
901
- case 'linkedin':
902
-
903
- $lk_message = str_replace("&", "&amp;",$finalTweet['message']);
904
- $sharedLink = str_replace("&", "&amp;",$finalTweet['link']);
905
- $content_xml = "";
906
- $visibility="anyone";
907
- $content_xml.="<content><title>".$lk_message."</title><submitted-url>".$sharedLink."</submitted-url></content>";
908
- $url = 'https://api.linkedin.com/v1/people/~/shares?oauth2_access_token='.$user["oauth_token"];
909
-
910
-
911
- $xml = '<?xml version="1.0" encoding="UTF-8"?><share>
912
- ' . $content_xml . '
913
- <visibility>
914
- <code>' . $visibility . '</code>
915
- </visibility>
916
- </share>';
917
- $headers = array(
918
- "Content-type: text/xml",
919
- "Content-length: " . strlen($xml),
920
- "Connection: close",
921
- );
922
-
923
- if (!function_exists('curl_version'))
924
- self::addNotice(__("Your host does not support CURL",'tweet-old-post'),'error');
925
- $ch = curl_init();
926
- curl_setopt($ch, CURLOPT_URL,$url);
927
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
928
- curl_setopt($ch, CURLOPT_TIMEOUT, 10);
929
- curl_setopt($ch, CURLOPT_POST, true);
930
- curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
931
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
932
-
933
- $data = curl_exec($ch);
934
-
935
-
936
- if(curl_errno($ch))
937
- {
938
-
939
- self::addNotice("Curl error: ". curl_error($ch),'error');
940
- }
941
- else{
942
- self::addNotice("Post ". $post->post_title." has been successfully sent to LinkedIN.",'notice');
943
- curl_close($ch);
944
- }
945
- break;
946
- default:
947
- if(CWP_TOP_PRO){
948
- global $CWP_TOP_Core_PRO;
949
- if(method_exists($CWP_TOP_Core_PRO,"tweetPostPro")){
950
- $CWP_TOP_Core_PRO->tweetPostPro($finalTweet,$network ,$post,$user);
951
- }
952
-
953
- }
954
-
955
- break;
956
-
957
-
958
-
959
- }
960
-
961
- }
962
-
963
- }
964
- }
965
- public function getRestrictedShowFields(){
966
-
967
- global $cwp_rop_restricted_show;
968
- return $cwp_rop_restricted_show;
969
- }
970
- public function system_info(){
971
-
972
- global $wpdb;
973
- $restricted = $this->getRestrictedShowFields();
974
-
975
- if(CWP_TOP_PRO){
976
-
977
- $pro = get_plugin_data(ROPPROPLUGINPATH."/tweet-old-post-pro.php");
978
- }
979
- $lite = get_plugin_data(ROPPLUGINPATH."/tweet-old-post.php");
980
- if ( get_bloginfo( 'version' ) < '3.4' ) {
981
- $theme_data = get_theme_data( get_stylesheet_directory() . '/style.css' );
982
- $theme = $theme_data['Name'] . ' ' . $theme_data['Version'];
983
- } else {
984
- $theme_data = wp_get_theme();
985
- $theme = $theme_data->Name . ' ' . $theme_data->Version;
986
- }
987
-
988
- // Try to identifty the hosting provider
989
- $host = false;
990
- if( defined( 'WPE_APIKEY' ) ) {
991
- $host = 'WP Engine';
992
- } elseif( defined( 'PAGELYBIN' ) ) {
993
- $host = 'Pagely';
994
- }
995
-
996
- ?>
997
- <div class="wrap">
998
- <h2><?php _e( 'System Information', 'tweet-old-post'); ?></h2><br/>
999
- <form action="" method="post" dir="ltr">
1000
- <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' ); ?>">
1001
-
1002
- ## Please include this information when posting support requests ##
1003
-
1004
- ## BEGIN ROP CONFIGS ##
1005
-
1006
- <?php
1007
- $options = $this->getPostFormatValues();
1008
- $cwp_top_global_schedule = $this->getSchedule();
1009
- $cwp_rop_all_networks = $this->getFormatFields();
1010
- echo "## ROP POST FORMAT";
1011
- foreach($cwp_rop_all_networks as $n=>$d){
1012
- echo "\n \n \n ##".$n." \n \n \n";
1013
-
1014
-
1015
-
1016
-
1017
- foreach($d as $fname => $f){
1018
- if(!in_array($fname,$restricted))
1019
- echo $f['name']. " : ". $options[$n."_".$f['option']]." \n";
1020
- }
1021
-
1022
- }
1023
- ?>
1024
-
1025
- ## END ROP CONFIGS ##
1026
-
1027
-
1028
- ## Begin Remote Data
1029
-
1030
- Beta User: <?php echo $this->getBetaUserStatus(); ?><?php echo "\n"; ?>
1031
- Remote Check: <?php echo $this->getRemoteCheck(); ?><?php echo "\n"; ?>
1032
-
1033
- ## End Remote Data
1034
-
1035
-
1036
-
1037
- ## Begin CRON Info
1038
-
1039
- CRON Active: <?php echo (defined("DISABLE_WP_CRON") ? ((DISABLE_WP_CRON) ? "no" : "yes") : "yes" ); ?><?php echo "\n"; ?>
1040
- Alternate WP Cron: <?php echo defined("ALTERNATE_WP_CRON") ? ((ALTERNATE_WP_CRON) ? "yes" : "no" ) : "no"; ?><?php echo "\n";
1041
-
1042
- ?>
1043
- Time now: <?php echo date ( 'M j, Y @ G:i',time()); ?> <?php echo "\n"; ?>
1044
- ROP Crons:
1045
- <?php
1046
- $all = $this->getAllNetworks();
1047
- foreach($all as $nn ){
1048
- if(wp_next_scheduled($nn.'roptweetcron',array($nn)) === false) continue;
1049
- echo date ( 'M j, Y @ G:i', wp_next_scheduled($nn.'roptweetcron',array($nn)) );
1050
- }
1051
-
1052
- ?>
1053
-
1054
- ## End Cron Info
1055
-
1056
- ##Begin General Settings:
1057
-
1058
- <?php
1059
- $cwp_top_fields = $this->getGeneralFields();
1060
- foreach($cwp_top_fields as $general_field){
1061
- echo $general_field['name']. " : ";
1062
- if(is_array(get_option($general_field['option'])))
1063
- echo implode(",",get_option($general_field['option']))." \n" ;
1064
- else
1065
- echo get_option($general_field['option'])." \n";
1066
- }
1067
- ?>
1068
-
1069
- ##End General Settings
1070
-
1071
-
1072
- <?php
1073
- if(CWP_TOP_PRO):?>
1074
- ##Begin Custom schedule settings:
1075
-
1076
- <?php foreach($all as $a) {
1077
-
1078
- if( $cwp_top_global_schedule[$a.'_schedule_type_selected'] == 'each')
1079
- {
1080
- echo strtoupper($a)." post on every ".$cwp_top_global_schedule[$a.'_top_opt_interval']." hours"." \n" ;
1081
- }else{
1082
- echo strtoupper($a)." post each ".$cwp_top_global_schedule[$a.'_top_opt_interval']['days']." days of the week at: "." \n" ;
1083
- foreach($cwp_top_global_schedule[$a.'_top_opt_interval']['times'] as $time){
1084
- echo ''.$time['hour']." : ".$time['minute']." \n " ;
1085
-
1086
-
1087
- }
1088
- }
1089
- ?>
1090
- <?php } ?>
1091
-
1092
- ##End Custom schedule settings
1093
- <?php endif;
1094
- ?>
1095
-
1096
- ### Begin System Info ###
1097
-
1098
-
1099
- Multisite: <?php echo is_multisite() ? 'Yes' . "\n" : 'No' . "\n" ?>
1100
-
1101
- SITE_URL: <?php echo site_url() . "\n"; ?>
1102
- HOME_URL: <?php echo home_url() . "\n"; ?>
1103
- <?php if(CWP_TOP_PRO): ?>
1104
- ROP PRO Version: <?php echo $pro['Version'] . "\n"; ?>
1105
- <?php endif; ?>
1106
- ROP Lite Version: <?php echo $lite['Version'] . "\n"; ?>
1107
- WordPress Version: <?php echo get_bloginfo( 'version' ) . "\n"; ?>
1108
- Permalink Structure: <?php echo get_option( 'permalink_structure' ) . "\n"; ?>
1109
- Active Theme: <?php echo $theme . "\n"; ?>
1110
- <?php if( $host ) : ?>
1111
- Host: <?php echo $host . "\n"; ?>
1112
- <?php endif; ?>
1113
- PHP Version: <?php echo PHP_VERSION . "\n"; ?>
1114
- MySQL Version: <?php echo mysqli_get_client_info() . "\n"; ?>
1115
- Web Server Info: <?php echo $_SERVER['SERVER_SOFTWARE'] . "\n"; ?>
1116
- WordPress Memory Limit: <?php echo WP_MEMORY_LIMIT ; ?><?php echo "\n"; ?>
1117
- PHP Safe Mode: <?php echo ini_get( 'safe_mode' ) ? "Yes" : "No\n"; ?>
1118
- PHP Memory Limit: <?php echo ini_get( 'memory_limit' ) . "\n"; ?>
1119
- PHP Upload Max Size: <?php echo ini_get( 'upload_max_filesize' ) . "\n"; ?>
1120
- PHP Post Max Size: <?php echo ini_get( 'post_max_size' ) . "\n"; ?>
1121
- PHP Upload Max Filesize: <?php echo ini_get( 'upload_max_filesize' ) . "\n"; ?>
1122
- PHP Time Limit: <?php echo ini_get( 'max_execution_time' ) . "\n"; ?>
1123
- PHP Max Input Vars: <?php echo ini_get( 'max_input_vars' ) . "\n"; ?>
1124
- PHP Arg Separator: <?php echo ini_get( 'arg_separator.output' ) . "\n"; ?>
1125
- PHP Allow URL File Open: <?php echo (ini_get( 'allow_url_fopen' ) ? "Yes" : "No" ). "\n"; ?>
1126
- WP_DEBUG: <?php echo defined( 'WP_DEBUG' ) ? WP_DEBUG ? 'Enabled' . "\n" : 'Disabled' . "\n" : 'Not set' . "\n" ?>
1127
- 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"; ?>
1128
- Show On Front: <?php echo get_option( 'show_on_front' ) . "\n" ?>
1129
- Page On Front: <?php $id = get_option( 'page_on_front' ); echo get_the_title( $id ) . ' (#' . $id . ')' . "\n" ?>
1130
- Page For Posts: <?php $id = get_option( 'page_for_posts' ); echo get_the_title( $id ) . ' (#' . $id . ')' . "\n" ?>
1131
- Session: <?php echo isset( $_SESSION ) ? 'Enabled' : 'Disabled'; ?><?php echo "\n"; ?>
1132
- Session Name: <?php echo esc_html( ini_get( 'session.name' ) ); ?><?php echo "\n"; ?>
1133
- Cookie Path: <?php echo esc_html( ini_get( 'session.cookie_path' ) ); ?><?php echo "\n"; ?>
1134
- Save Path: <?php echo esc_html( ini_get( 'session.save_path' ) ); ?><?php echo "\n"; ?>
1135
- Use Cookies: <?php echo ini_get( 'session.use_cookies' ) ? 'On' : 'Off'; ?><?php echo "\n"; ?>
1136
- Use Only Cookies: <?php echo ini_get( 'session.use_only_cookies' ) ? 'On' : 'Off'; ?><?php echo "\n"; ?>
1137
- DISPLAY ERRORS: <?php echo ( ini_get( 'display_errors' ) ) ? 'On (' . ini_get( 'display_errors' ) . ')' : 'N/A'; ?><?php echo "\n"; ?>
1138
- FSOCKOPEN: <?php echo ( function_exists( 'fsockopen' ) ) ? 'Your server supports fsockopen.' : 'Your server does not support fsockopen.'; ?><?php echo "\n"; ?>
1139
- cURL: <?php echo ( function_exists( 'curl_init' ) ) ? 'Your server supports cURL.' : 'Your server does not support cURL.'; ?><?php echo "\n"; ?>
1140
- 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"; ?>
1141
-
1142
- ACTIVE PLUGINS:
1143
-
1144
-
1145
- <?php
1146
- $plugins = get_plugins();
1147
- $active_plugins = get_option( 'active_plugins', array() );
1148
-
1149
- foreach ( $plugins as $plugin_path => $plugin ) {
1150
- // If the plugin isn't active, don't show it.
1151
- if ( ! in_array( $plugin_path, $active_plugins ) )
1152
- continue;
1153
-
1154
- echo $plugin['Name'] . ': ' . $plugin['Version'] ."\n";
1155
- }
1156
-
1157
- if ( is_multisite() ) :
1158
- ?>
1159
-
1160
- NETWORK ACTIVE PLUGINS:
1161
-
1162
- <?php
1163
- $plugins = wp_get_active_network_plugins();
1164
- $active_plugins = get_site_option( 'active_sitewide_plugins', array() );
1165
-
1166
- foreach ( $plugins as $plugin_path ) {
1167
- $plugin_base = plugin_basename( $plugin_path );
1168
-
1169
- // If the plugin isn't active, don't show it.
1170
- if ( ! array_key_exists( $plugin_base, $active_plugins ) )
1171
- continue;
1172
-
1173
- $plugin = get_plugin_data( $plugin_path );
1174
-
1175
- echo "\t"."\t"."\t"."\t".$plugin['Name'] . ' :' . $plugin['Version'] ."\n";
1176
- }
1177
-
1178
- endif;
1179
- ?>
1180
-
1181
-
1182
-
1183
- ### End System Info ###
1184
-
1185
- ##Begin Log info
1186
-
1187
- <?php $logs = get_option('rop_notice_active');
1188
- if(!is_array($logs)) $logs = array();
1189
- foreach($logs as $log){
1190
- echo strtoupper($log['type']). " @ ".$log['time']. ' - '. $log['message']." \n ";
1191
- }
1192
- ?>
1193
- <?php ?>
1194
-
1195
- #End log info
1196
-
1197
- ##Begin user info
1198
-
1199
- <?php
1200
- $users = $this->getUsers();
1201
- foreach($all as $a ){
1202
- if(!isset($$a)) $$a = 0;
1203
- foreach($users as $us){
1204
- if($us['service'] == $a) $$a ++;
1205
-
1206
- }
1207
-
1208
- }
1209
- foreach($all as $a){
1210
- echo strtoupper($a)." accounts - ".$$a." \n";
1211
-
1212
- }
1213
-
1214
- ?>
1215
-
1216
- ##End user info
1217
-
1218
- </textarea>
1219
- <p class="submit">
1220
- <input type="hidden" name="cwp-action" value="download_sysinfo" />
1221
- <?php submit_button( __('Download System Info File','tweet-old-post'), 'primary', 'cwp-download-sysinfo', false ); ?>
1222
- </p>
1223
- </form>
1224
- </div>
1225
- </div>
1226
- <?php
1227
- }
1228
- /*public function tweetPostwithImage($finalTweet, $id,$ntk = 'twitter')
1229
- {
1230
-
1231
- $k=1;
1232
- $tw=0;
1233
- $nrOfUsers = count($this->users);
1234
- $time = get_option("top_last_tweets");
1235
-
1236
- foreach ($this->users as $user) {
1237
-
1238
- if($ntk == $user['service'] ){
1239
- if(isset($time[$ntk])){
1240
- if(time() - $time[$ntk] < 60)
1241
- return false;
1242
-
1243
- }
1244
-
1245
- $time[$ntk] = time();
1246
- update_option("top_last_tweets",$time);
1247
- switch ($user['service']) {
1248
- case 'twitter':
1249
- // Create a new twitter connection using the stored user credentials.
1250
- $connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
1251
- // Post the new tweet
1252
- if (CWP_TOP_PRO){
1253
- global $CWP_TOP_Core_PRO;
1254
- $status = $CWP_TOP_Core_PRO->topProImage($connection, $finalTweet['message'], $id);
1255
- }
1256
- //var_dump($status);
1257
- //$tw++;
1258
- //} else {
1259
- /// //$connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
1260
- //$status = $connection->post('statuses/update', array('status' => "acesta e un tweet"));
1261
- //$tw++;
1262
- //}
1263
-
1264
- if ($nrOfUsers == $k)
1265
- return $status;
1266
- else
1267
- $k++;
1268
-
1269
- case 'facebook':
1270
- $args = array(
1271
-
1272
- 'body' => array( 'message' => $finalTweet['message'],'link' => $finalTweet['link']),
1273
-
1274
- );
1275
-
1276
- $pp=wp_remote_post("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/$user[id]/feed?access_token=$user[oauth_token]",$args);
1277
- if ($nrOfUsers == $k)
1278
- return $pp['response']['message'];
1279
- else
1280
- $k++;
1281
-
1282
- break;
1283
-
1284
- case 'linkedin':
1285
-
1286
- $lk_message = str_replace("&", "&amp;",$finalTweet['message']);
1287
- $sharedLink = str_replace("&", "&amp;",$finalTweet['link']);
1288
- $content_xml = "";
1289
- $visibility="anyone";
1290
- $content_xml.="<content><title>".$lk_message."</title><submitted-url>".$sharedLink."</submitted-url></content>";
1291
- $url = 'https://api.linkedin.com/v1/people/~/shares?oauth2_access_token='.$user["oauth_token"];
1292
-
1293
-
1294
- $xml = '<?xml version="1.0" encoding="UTF-8"?><share>
1295
- ' . $content_xml . '
1296
- <visibility>
1297
- <code>' . $visibility . '</code>
1298
- </visibility>
1299
- </share>';
1300
- $headers = array(
1301
- "Content-type: text/xml",
1302
- "Content-length: " . strlen($xml),
1303
- "Connection: close",
1304
- );
1305
- if (!function_exists('curl_version'))
1306
- update_option('cwp_topnew_notice',"You host does not support CURL");
1307
- $ch = curl_init();
1308
- curl_setopt($ch, CURLOPT_URL,$url);
1309
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1310
- curl_setopt($ch, CURLOPT_TIMEOUT, 10);
1311
- curl_setopt($ch, CURLOPT_POST, true);
1312
- curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
1313
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
1314
-
1315
- $data = curl_exec($ch);
1316
-
1317
- if ($nrOfUsers == $k)
1318
- return $data;
1319
- else
1320
- $k++;
1321
-
1322
- if(curl_errno($ch))
1323
- print curl_error($ch);
1324
- else
1325
- curl_close($ch);
1326
-
1327
- break;
1328
- default:
1329
- $connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
1330
- // Post the new tweet
1331
- if (CWP_TOP_PRO) {
1332
- global $$CWP_TOP_Core_PRO;
1333
- $status = $CWP_TOP_Core_PRO->topProImage( $connection, $finalTweet['message'], $id );
1334
- }
1335
- if ($nrOfUsers == $k)
1336
- return $status;
1337
- else
1338
- $k++;
1339
-
1340
-
1341
- }
1342
- }
1343
- //sleep(100);
1344
- }
1345
- }*/
1346
-
1347
- // Generates the tweet date range based on the user input.
1348
- // Corrected by Ash/Upwork: added a few efficiencies
1349
- public function getTweetPostDateRange()
1350
- {
1351
- $max = intval(get_option('top_opt_max_age_limit'));
1352
-
1353
- if( !is_int($max) ) {
1354
- 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');
1355
- return false;
1356
- }
1357
-
1358
- $min = intval(get_option('top_opt_age_limit'));
1359
-
1360
- if(!is_int($min) ){
1361
- 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');
1362
- return false;
1363
-
1364
- }
1365
- if($max > 0 && $min > 0 && $max < $min){
1366
- 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');
1367
- return false;
1368
-
1369
- }
1370
-
1371
- $dateQuery = array();
1372
- if($max > 0){
1373
- $maxLimit = time() - $max*24*60*60;
1374
- $dateQuery['before'] = date("Y-m-d H:i:s", $maxLimit);
1375
- }
1376
-
1377
- if($min > 0){
1378
- $minLimit = time() - $min*24*60*60;
1379
- $dateQuery['after'] = date("Y-m-d H:i:s", $minLimit);
1380
- }
1381
-
1382
- return $dateQuery;
1383
-
1384
-
1385
- }
1386
-
1387
- // Gets the omited tweet categories
1388
-
1389
- public function getExcludedCategories()
1390
- {
1391
- $postQueryCategories = "";
1392
- $postCategories = get_option('top_opt_omit_cats');
1393
-
1394
- if(!empty($postCategories) && is_array($postCategories)) {
1395
- $postQueryCategories = implode(',',$postCategories);
1396
- }
1397
- else
1398
- $postQueryCategories = get_option('top_opt_omit_cats');
1399
-
1400
- return $postQueryCategories;
1401
- }
1402
-
1403
- // Gets the tweet post type.
1404
- public function getTweetPostType()
1405
- {
1406
- $postQueryPostTypes = "";
1407
- $top_opt_post_type = get_option('top_opt_post_type');
1408
-
1409
- if(!empty($top_opt_post_type) && is_array($top_opt_post_type)) {
1410
- $postQueryPostTypes = implode(',',$top_opt_post_type);
1411
- }
1412
- else
1413
- $postQueryPostTypes = get_option('top_opt_post_type');
1414
-
1415
- return $postQueryPostTypes;
1416
-
1417
- }
1418
-
1419
-
1420
- // Creates a custom Tweet Old Post schedule
1421
- public function createCustomSchedule($schedules)
1422
- {
1423
- $schedules['cwp_top_schedule'] = array(
1424
- 'interval' => floatval($this->intervalSet) * 60 * 60,
1425
- 'display' => __("Custom Tweet User Interval", 'tweet-old-post')
1426
- );
1427
-
1428
- return $schedules;
1429
- }
1430
-
1431
- // Clears the custom Tweet Old Post cron job.
1432
- public function clearScheduledTweets()
1433
- {
1434
- $all = $this->getAllNetworks();
1435
- foreach($all as $n){
1436
- wp_clear_scheduled_hook($n.'roptweetcron',array($n));
1437
- }
1438
- }
1439
-
1440
- // Deactivation hook
1441
- public function deactivationHook()
1442
- {
1443
- $this->clearScheduledTweets();
1444
- $this->deleteAllOptions();
1445
- $this->remoteTrigger("off");
1446
- }
1447
-
1448
- // Sets all authentication settings
1449
- public function setAlloAuthSettings()
1450
- {
1451
- global $cwp_top_settings;
1452
-
1453
- $this->consumer = $cwp_top_settings['oAuth_settings']['consumer_key'];
1454
- $this->consumerSecret = $cwp_top_settings['oAuth_settings']['consumer_secret'];
1455
- $this->oAuthCallback = CURRENTURL;
1456
-
1457
- $this->cwp_top_access_token = get_option('cwp_top_access_token');
1458
- $this->cwp_top_oauth_token = get_option('cwp_top_oauth_token');
1459
- $this->cwp_top_oauth_token_secret = get_option('cwp_top_oauth_token_secret');
1460
-
1461
- $this->user_info = get_option('cwp_top_oauth_user_details');
1462
- $this->users = apply_filters("rop_users_filter",get_option('cwp_top_logged_in_users'));
1463
-
1464
- $this->pluginStatus = get_option('cwp_topnew_active_status');
1465
- $this->intervalSet = get_option('top_opt_interval');
1466
-
1467
- self::$date_format = 'M j, Y @ G:i';
1468
- //update_option('cwp_top_logged_in_users', '');
1469
- }
1470
-
1471
- // Checks if twitter returned any temporary credentials to log in the user.
1472
- public function afterAddAccountCheck()
1473
- {
1474
- if( time() - get_option("top_reauthorize") > 2592000 )
1475
- $this->reAuthorize();
1476
- global $cwp_top_settings;
1477
- $code="";
1478
- if(isset($_REQUEST['code']))
1479
- $code = $_REQUEST["code"];
1480
- $cnetwork = self::getCurrentNetwork();
1481
- if(isset($_REQUEST['oauth_token']) && $cnetwork == 'twitter') {
1482
-
1483
- if($_REQUEST['oauth_token'] == $this->cwp_top_oauth_token) {
1484
-
1485
- $twitter = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $this->cwp_top_oauth_token, $this->cwp_top_oauth_token_secret );
1486
- $access_token = $twitter->getAccessToken($_REQUEST['oauth_verifier']);
1487
- $user_details = $twitter->get('account/verify_credentials');
1488
- $user_details->status = array();
1489
-
1490
- $newUser = array(
1491
- 'user_id' => $user_details->id,
1492
- 'oauth_token' => $access_token['oauth_token'],
1493
- 'oauth_token_secret' => $access_token['oauth_token_secret'],
1494
- 'oauth_user_details' => $user_details,
1495
- 'service' => 'twitter'
1496
- );
1497
-
1498
- $loggedInUsers = get_option('cwp_top_logged_in_users');
1499
- if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1500
-
1501
-
1502
- if(in_array($newUser, $loggedInUsers)) {
1503
- echo "You already added that user! no can do !";
1504
- } else {
1505
- array_push($loggedInUsers, $newUser);
1506
- update_option('cwp_top_logged_in_users', $loggedInUsers);
1507
- }
1508
-
1509
- header("Location: " . top_settings_url());
1510
- exit;
1511
- }
1512
- }
1513
- if(isset($_REQUEST['state']) && (get_option('top_fb_session_state') === $_REQUEST['state'])) {
1514
-
1515
- $token_url = "https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/oauth/access_token?"
1516
- . "client_id=" . get_option('cwp_top_app_id') . "&redirect_uri=" . top_settings_url()
1517
- . "&client_secret=" . get_option('cwp_top_app_secret') . "&code=" . $code;
1518
-
1519
- $params = null;$access_token="";
1520
- $response = wp_remote_get($token_url);
1521
-
1522
- if(is_array($response))
1523
- {
1524
- if(isset($response['body']))
1525
- {
1526
- parse_str($response['body'], $params);
1527
- if(isset($params['access_token']))
1528
- $access_token = $params['access_token'];
1529
- }
1530
- }
1531
-
1532
- if($access_token!="")
1533
- {
1534
- update_option('top_fb_token',$access_token);
1535
-
1536
- }
1537
- header("Location: " . top_settings_url().'&fbadd');
1538
- }
1539
-
1540
- if (isset($_GET['code'])&&isset($_GET['state'])&&get_option('top_lk_session_state') == $_GET['state']) {
1541
-
1542
- $lk_auth_token = get_option('cwp_top_lk_app_id');
1543
- $lk_auth_secret = get_option('cwp_top_lk_app_secret');
1544
- $params = array('grant_type' => 'authorization_code',
1545
- 'client_id' => $lk_auth_token,
1546
- 'client_secret' => $lk_auth_secret,
1547
- 'code' => $_GET['code'],
1548
- 'redirect_uri' => top_settings_url(),
1549
- );
1550
-
1551
- $url = 'https://www.linkedin.com/uas/oauth2/accessToken?' . http_build_query($params);
1552
- //echo $url;
1553
- $response = wp_remote_post($url);
1554
- $token = json_decode($response['body']);
1555
- //print_r($response);
1556
- //print_r($token);
1557
- if($token->access_token) {
1558
- // the request went through without an error, gather user's 'access' tokens
1559
- //AQVBBQ6_ggJaUVFYmJ5oVF_kSH-wn6VNREGgC_sYPWp0YV0U4r2CFwptnLXUbJra5Glp0ZMax96CrD2azzf_HkJ2UdLp5q5zoiT_rbl5bmTMf50XnDfRcdm8Vl2k2XoYhGQ-LkYTnddFz1K-OBcW0CWsapzgZH2hepMVMhc1Lw7bhwTab04"
1560
- update_option('top_linkedin_token',$token->access_token);
1561
- update_option('top_linkedin_token_expires',$token->expires_in);
1562
- }
1563
-
1564
- $url = 'https://api.linkedin.com/v1/people/~:(id,picture-url,first_name,last_name)?oauth2_access_token='.$token->access_token;
1565
- //echo $url;
1566
- $response = wp_remote_get($url);
1567
- $response = wp_remote_retrieve_body($response);
1568
- //print_r($response);
1569
- $person = simplexml_load_string($response);
1570
-
1571
- if (isset($person->id)) {
1572
- $user_details = array('profile_image_url' => (string)$person->{'picture-url'},'name'=> (string)$person->{'first-name'} );
1573
-
1574
- $newUser = array(
1575
- 'user_id' => (string)$person->id,
1576
- 'oauth_token' => $token->access_token,
1577
- 'oauth_token_secret' => '',
1578
- 'oauth_user_details' => (object)$user_details,
1579
- 'service' => 'linkedin'
1580
- );
1581
-
1582
- $loggedInUsers = get_option('cwp_top_logged_in_users');
1583
- if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1584
-
1585
- foreach ($loggedInUsers as $key=>$user) {
1586
- if ($user['user_id'] == $person->id)
1587
- unset($loggedInUsers[$key]);
1588
- }
1589
-
1590
- if(in_array($newUser, $loggedInUsers)) {
1591
- echo "You already added that user! no can do !";
1592
- } else {
1593
- array_push($loggedInUsers, $newUser);
1594
- update_option('cwp_top_logged_in_users', $loggedInUsers);
1595
- }
1596
- }
1597
-
1598
-
1599
-
1600
- header("Location: " . top_settings_url());
1601
- }
1602
-
1603
- if(CWP_TOP_PRO){
1604
- global $CWP_TOP_Core_PRO;
1605
- if(method_exists($CWP_TOP_Core_PRO,"afterCheckPro")){
1606
- $CWP_TOP_Core_PRO->afterCheckPro();
1607
- }
1608
-
1609
- }
1610
- }
1611
-
1612
- // Used to display the login buttons
1613
- public function displayLoginButton($social_network)
1614
- {
1615
- // display the twitter login button
1616
- if($this->userIsLoggedIn($social_network)) {
1617
- $this->setAlloAuthSettings($social_network);
1618
- return true;
1619
- } else {
1620
- return false;
1621
- }
1622
- }
1623
-
1624
- public function reAuthorize() {
1625
- $top_session_state = uniqid('', true);
1626
- update_option('top_reauthorize',time());
1627
- $loggedInUsers = get_option('cwp_top_logged_in_users');
1628
- if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1629
- $lk = 0;
1630
- $fb = 0;
1631
-
1632
- foreach ($loggedInUsers as $key=>$user) {
1633
- if ($user['service'] === "linkedin"&&$lk===0) {
1634
- $lk++;
1635
- $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();
1636
- header("Location: " . $url);
1637
-
1638
- update_option('top_lk_session_state',$top_session_state);
1639
-
1640
- }
1641
-
1642
- if ($user['service'] === "facebook"&&$fb===0) {
1643
- $top_session_state_fb = md5(uniqid(rand(), TRUE));
1644
- $fb++;
1645
- update_option('top_fb_session_state',$top_session_state_fb);
1646
- $dialog_url = "https://www.facebook.com/".ROP_TOP_FB_API_VERSION."/dialog/oauth?client_id="
1647
- . get_option("cwp_top_app_id") . "&redirect_uri=" . top_settings_url() . "&state="
1648
- . $top_session_state_fb . "&scope=publish_actions,manage_pages,publish_pages,user_posts,user_photos";
1649
-
1650
- header("Location: " . $dialog_url);
1651
- }
1652
- }
1653
-
1654
- }
1655
-
1656
- // Adds pages
1657
- public function displayPages()
1658
- {
1659
-
1660
- if(!is_admin()) return false;
1661
- $social_network = $_POST['social_network'];
1662
- $access_token = get_option('top_fb_token');
1663
-
1664
- switch ($social_network) {
1665
- case 'facebook':
1666
- $result1="";$pagearray1="";
1667
- $pp=wp_remote_get("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/me/accounts?access_token=$access_token&limit=100&offset=0");
1668
- //print_r($pp);
1669
- $me=wp_remote_get("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/me/?access_token=$access_token&limit=100&offset=0");
1670
- if(is_array($pp))
1671
- {
1672
- $result1=$pp['body'];
1673
- $result2 = $me['body'];
1674
- $pagearray2 = json_decode($result2);
1675
- //print_r($pagearray2);
1676
- $pagearray1 = json_decode($result1);
1677
- $profile['name'] = $pagearray2->first_name.' '.$pagearray2->last_name;
1678
- $profile['id'] = $pagearray2->id;
1679
- $profile['category'] ='profile';
1680
- $profile['access_token'] = $access_token;
1681
- if(is_array($pagearray1->data))
1682
- array_unshift($pagearray1->data, $profile);
1683
- //$pagearray1->data[count($pagearray1->data)] = $profile;
1684
- $result1 = json_encode($pagearray1);
1685
- //print_r($results1);
1686
- echo $result1;
1687
-
1688
- }
1689
- break;
1690
- }
1691
- die(); // Required
1692
- }
1693
- public function adminNotice(){
1694
- if(is_array($this->notices)){
1695
-
1696
- foreach($this->notices as $n){
1697
- ?>
1698
- <div class="error">
1699
- <p><?php _e( $n, 'tweet-old-post' ); ?></p>
1700
- </div>
1701
- <?php
1702
- }
1703
- }
1704
-
1705
- }
1706
- public function checkVersion(){
1707
- if(!defined("ROP_PRO_VERSION") && CWP_TOP_PRO) echo 'rop-not-version';
1708
-
1709
- }
1710
- public function addPages()
1711
- {
1712
-
1713
- if(!is_admin()) return false;
1714
- $social_network = $_POST['social_network'];
1715
- $access_token = $_POST['page_token'];
1716
- $page_id= $_POST['page_id'];
1717
-
1718
- switch ($social_network) {
1719
- case 'facebook':
1720
- $user_details['profile_image_url'] = $_POST['picture_url'];
1721
- $user_details['name'] = $_POST['page_name'];
1722
- $user_details = (object) $user_details;
1723
- $newUser = array(
1724
- 'user_id' => $page_id,
1725
- 'oauth_token' => $access_token,
1726
- 'oauth_token_secret' => "",
1727
- 'oauth_user_details' => $user_details,
1728
- 'service' => 'facebook'
1729
- );
1730
-
1731
- $loggedInUsers = get_option('cwp_top_logged_in_users');
1732
- if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1733
-
1734
- foreach ($loggedInUsers as $key=>$user) {
1735
- if ($user['user_id'] == $page_id)
1736
- unset($loggedInUsers[$key]);
1737
- }
1738
-
1739
- if(in_array($newUser, $loggedInUsers)) {
1740
- echo "You already added that user! no can do !";
1741
- } else {
1742
- array_push($loggedInUsers, $newUser);
1743
- update_option('cwp_top_logged_in_users', $loggedInUsers);
1744
- echo top_settings_url();
1745
- }
1746
-
1747
-
1748
- break;
1749
- }
1750
- die(); // Required
1751
- }
1752
- public static function setCurrentNetwork($network){
1753
- update_option("rop_current_network_oauth",$network);
1754
-
1755
- }
1756
- public static function getCurrentNetwork(){
1757
- $network = get_option("rop_current_network_oauth");
1758
- if($network == false) return '';
1759
- return $network;
1760
- }
1761
- // Adds new account
1762
- public function addNewAccount()
1763
- {
1764
-
1765
- if(!is_admin()) return false;
1766
- if(!function_exists('curl_version')){
1767
-
1768
- 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');
1769
- return false;
1770
- }
1771
- global $cwp_top_settings;
1772
- $social_network = $_POST['social_network'];
1773
- self::setCurrentNetwork($social_network);
1774
- $networks = $this->getAvailableNetworks();
1775
- $allnetworks = $this->getAllNetworks(true);
1776
- $response = array();
1777
-
1778
- if($allnetworks[$social_network] && !CWP_TOP_PRO){
1779
- 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');
1780
-
1781
- }else if(in_array($social_network,$networks) && !CWP_TOP_PRO) {
1782
- 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');
1783
-
1784
-
1785
- }else{
1786
- switch ($social_network) {
1787
- case 'twitter':
1788
- $this->oAuthCallback = $_POST['currentURL'];
1789
- $twitter = new RopTwitterOAuth($this->consumer, $this->consumerSecret);
1790
- $requestToken = $twitter->getRequestToken($this->oAuthCallback);
1791
-
1792
- update_option('cwp_top_oauth_token', $requestToken['oauth_token']);
1793
- update_option('cwp_top_oauth_token_secret', $requestToken['oauth_token_secret']);
1794
-
1795
- switch ($twitter->http_code) {
1796
- case 200:
1797
- $url = $twitter->getAuthorizeURL($requestToken['oauth_token']);
1798
- $response['url'] = $url;
1799
- break;
1800
-
1801
- default:
1802
- self::addNotice(__("Could not connect to Twitter!"),'tweet-old-post');
1803
-
1804
- break;
1805
- }
1806
- break;
1807
- case 'facebook':
1808
- if (empty($_POST['extra']['app_id'])){
1809
- self::addNotice(__("Could not connect to Facebook! You need to add the App ID",'tweet-old-post'),'error');
1810
- }else
1811
- if (empty($_POST['extra']['app_secret'])){
1812
- self::addNotice(__("Could not connect to Facebook! You need to add the App Secret",'tweet-old-post'),'error');
1813
-
1814
- }else{
1815
- update_option('cwp_top_app_id', $_POST['extra']['app_id']);
1816
- update_option('cwp_top_app_secret', $_POST['extra']['app_secret']);
1817
-
1818
- $top_session_state = md5(uniqid(rand(), TRUE));
1819
-
1820
- update_option('top_fb_session_state',$top_session_state);
1821
- $dialog_url = "https://www.facebook.com/".ROP_TOP_FB_API_VERSION."/dialog/oauth?client_id="
1822
- . $_POST['extra']['app_id'] . "&redirect_uri=" . top_settings_url() . "&state="
1823
- . $top_session_state . "&scope=publish_actions,manage_pages,publish_pages,user_posts,user_photos";
1824
-
1825
- $response['url'] = $dialog_url;
1826
-
1827
- }
1828
-
1829
- break;
1830
- default:
1831
- if(CWP_TOP_PRO){
1832
- global $CWP_TOP_Core_PRO;
1833
- $CWP_TOP_Core_PRO->topProAddNewAccount();
1834
- }
1835
- }
1836
-
1837
- }
1838
-
1839
- echo json_encode($response);
1840
-
1841
- die(); // Required
1842
- }
1843
-
1844
- // Adds more than one account
1845
- public function addNewAccountPro()
1846
- {
1847
-
1848
- if(!is_admin()) return false;
1849
- if (CWP_TOP_PRO) {
1850
- global $CWP_TOP_Core_PRO;
1851
- $CWP_TOP_Core_PRO->topProAddNewAccount($_POST['social_network']);
1852
- }
1853
- else{
1854
- 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!");
1855
- 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!";
1856
-
1857
- }
1858
- die(); // Required
1859
- }
1860
-
1861
- // Gets the next tweet interval.
1862
- public function getNextTweetInterval()
1863
- {
1864
- $timestamp = wp_next_scheduled( 'cwptoptweetcronnew' );
1865
-
1866
- //echo $timestamp;
1867
- //$timestamp = date("Y-m-d H:i:s", $timestamp);
1868
- //$timeLeft = get_date_from_gmt($timestamp);
1869
- //$timeLeft = strtotime($timeLeft);
1870
- echo $timestamp;
1871
- }
1872
-
1873
- // Checks if the user is logged in/
1874
- public function userIsLoggedIn()
1875
- {
1876
- if(!empty($this->cwp_top_oauth_token) && !empty($this->cwp_top_oauth_token_secret)) {
1877
- return true;
1878
- } else {
1879
- return false;
1880
- }
1881
- }
1882
-
1883
- // Clears all Twitter user credentials.
1884
- public function logOutUser()
1885
- {
1886
- if(!is_admin()) return false;
1887
- $userID = $_POST['user_id'];
1888
-
1889
- $users = get_option('cwp_top_logged_in_users');
1890
-
1891
- foreach ($users as $id => $user) {
1892
- foreach ($user as $key => $value) {
1893
- if($userID == $value) {
1894
- $user_id = array_search($user, $users);
1895
- unset($users[$user_id]);
1896
- }
1897
- }
1898
- }
1899
-
1900
- update_option('cwp_top_logged_in_users', $users);
1901
-
1902
- $this->setAlloAuthSettings();
1903
- die();
1904
- }
1905
-
1906
- function getUpperDays($day,$days){
1907
- $tmp = array();
1908
- foreach($days as $d){
1909
- if($day <= $d){
1910
- $tmp[] = $d;
1911
- }
1912
- }
1913
- return $tmp;
1914
- }
1915
- public function getSchedule(){
1916
- $db = get_option("cwp_top_global_schedule" ) ;
1917
- if(!is_array($db)) $db = array();
1918
- $networks = $this->getAllNetworks();
1919
- foreach($networks as $network){
1920
- if(!isset($db[$network.'_schedule_type_selected'])) $db[$network.'_schedule_type_selected'] = "each";
1921
- if(!isset($db[$network.'_top_opt_interval'])) $db[$network.'_top_opt_interval'] = 8;
1922
-
1923
- }
1924
- return $db;
1925
- }
1926
- function getNextTweetTime($network){
1927
- $time = 0;
1928
- if(!CWP_TOP_PRO){
1929
- $time = $this->getTime() + ( floatval(get_option('top_opt_interval')) * 3600 ) ;
1930
- if($time > $this->getTime()) {
1931
- return $time;
1932
- }else{
1933
- return 0;
1934
- }
1935
- }
1936
- $cwp_top_global_schedule = $this->getSchedule();
1937
- $type = $cwp_top_global_schedule[$network.'_schedule_type_selected'];
1938
- if($type == 'each'){
1939
- $time = $this->getTime() + floatval($cwp_top_global_schedule[$network.'_top_opt_interval']) * 3600;
1940
- if($time > $this->getTime()) {
1941
- return $time;
1942
- }else{
1943
- return 0;
1944
- }
1945
- }else{
1946
- if (date('N', $this->getTime()) == 1){
1947
- $start = strtotime("monday this week",$this->getTime()) ;
1948
- }else{
1949
- $start = strtotime("last Monday",$this->getTime()) ;
1950
- }
1951
-
1952
- $days = explode(",",$cwp_top_global_schedule[$network.'_top_opt_interval']['days']);
1953
-
1954
- $times = $cwp_top_global_schedule[$network.'_top_opt_interval']['times'];
1955
- $schedules_days = array();
1956
- if(count($times) == 0 ) return false;
1957
- if(count($days) == 0 ) return false;
1958
- foreach($days as $rday){
1959
- $schedules_days[] = $start + ($rday-1) * 3600 * 24;
1960
-
1961
- }
1962
- $schedules = array();
1963
- foreach($schedules_days as $schedule){
1964
-
1965
- foreach($times as $time){
1966
-
1967
- $schedules[] = $schedule + floatval($time['hour']) * 3600 + floatval($time['minute']) * 60;
1968
-
1969
- }
1970
-
1971
- }
1972
- sort($schedules,SORT_REGULAR);
1973
- $ctime = $this->getTime();
1974
-
1975
- foreach($schedules as $s ){
1976
- if($s > $ctime ) {
1977
- return $s;
1978
- }
1979
-
1980
- }
1981
- foreach($schedules as $s){
1982
- $s += 7 * 24 * 3600;
1983
- if($s > $ctime) return $s;
1984
-
1985
- }
1986
- return 0;
1987
- }
1988
- return 0;
1989
- }
1990
- public function getAllOptions(){
1991
- $options = array();
1992
-
1993
- $format_fields = $this->getFormatFields();
1994
- $all = $this->getAllNetworks();
1995
- foreach($format_fields as $n=>$detail){
1996
- foreach($detail as $df){
1997
-
1998
- $options[] = $n."_".$df['option'];
1999
-
2000
- }
2001
- }
2002
- foreach($all as $a){
2003
-
2004
- $options[] = $a."_schedule_type_selected";
2005
- $options[] = $a."_top_schedule_days";
2006
- $options[] = $a."_time_choice_hour";
2007
- $options[] = $a."_top_opt_interval";
2008
- $options[] = $a."_time_choice_min";
2009
- }
2010
- $cwp_top_fields = $this->getGeneralFields();
2011
- foreach ($cwp_top_fields as $field)
2012
- {
2013
- $options[] = $field['option'];
2014
- }
2015
- return $options;
2016
- }
2017
- public function sanitizeRequest(){
2018
-
2019
- $dataSent = $_POST['dataSent']['dataSent'];
2020
- $valid = array();
2021
- parse_str($dataSent, $options);
2022
- $all_options = $this->getAllOptions();
2023
- $invalid = array();
2024
- foreach($options as $k => $option ){
2025
- if(in_array($k,$all_options)){
2026
- $valid[$k] = $option;
2027
-
2028
- }else{
2029
- $invalid[] = $k;
2030
- }
2031
-
2032
- }
2033
- $_POST['dataSent']['dataSent'] = http_build_query($valid);
2034
- }
2035
- // Updates all options.
2036
- public function updateAllOptions()
2037
- {
2038
- if(!is_admin()) return false;
2039
- $dataSent = $_POST['dataSent']['dataSent'];
2040
- $this->sanitizeRequest();
2041
- $options = array();
2042
-
2043
- parse_str($dataSent, $options);
2044
- foreach ($options as $option => $newValue) {
2045
- //$newValue = sanitize_text_field($newValue);
2046
- update_option($option, $newValue);
2047
- }
2048
-
2049
- //update_option('top_opt_post_type', 'post');
2050
-
2051
- if(!array_key_exists('top_opt_custom_url_option', $options)) {
2052
- update_option('top_opt_custom_url_option', 'off');
2053
- }
2054
-
2055
- if(!array_key_exists('top_opt_use_url_shortner', $options)) {
2056
- update_option('top_opt_use_url_shortner', 'off');
2057
- }
2058
-
2059
- if(!array_key_exists('top_opt_post_with_image', $options)) {
2060
- update_option('top_opt_post_with_image', 'off');
2061
- }
2062
-
2063
- if(!array_key_exists('top_opt_tweet_multiple_times', $options)) {
2064
- update_option('top_opt_tweet_multiple_times', 'off');
2065
- }
2066
-
2067
- if(!array_key_exists('top_opt_ga_tracking', $options)) {
2068
- update_option('top_opt_ga_tracking', 'off');
2069
- }
2070
-
2071
- //if(!array_key_exists('top_opt_tweet_specific_category', $options)) {
2072
- // update_option('top_opt_tweet_specific_category', '');
2073
- //}
2074
-
2075
- if(!array_key_exists('top_opt_omit_cats', $options)) {
2076
- update_option('top_opt_omit_cats', '');
2077
- }
2078
-
2079
- if(!array_key_exists('top_opt_post_type', $options)) {
2080
- update_option('top_opt_post_type', 'post');
2081
- }
2082
-
2083
- //update_option("top_opt_already_tweeted_posts", array());
2084
- $this->updateAllPostFormat();
2085
- if(CWP_TOP_PRO){
2086
-
2087
- global $CWP_TOP_Core_PRO;
2088
- $CWP_TOP_Core_PRO->updateTopProAjax();
2089
- }
2090
- die();
2091
- }
2092
-
2093
- public function updateAllPostFormat()
2094
- {
2095
- $all = $this->getAllNetworks();
2096
- $dataSent = $_POST['dataSent']['dataSent'];
2097
-
2098
- $options = array();
2099
- parse_str($dataSent, $options);
2100
-
2101
- //print_r($options);
2102
- foreach($all as $n){
2103
-
2104
- if(!array_key_exists($n.'_top_opt_custom_url_option', $options)) {
2105
- $options[$n.'_top_opt_custom_url_option'] = 'off';
2106
- }
2107
-
2108
- if(!array_key_exists($n.'_top_opt_use_url_shortner', $options)) {
2109
- $options[$n.'_top_opt_use_url_shortner'] = 'off';
2110
- }
2111
-
2112
- if(!array_key_exists($n.'_top_opt_post_with_image', $options)) {
2113
- $options[$n.'_top_opt_post_with_image'] = 'off';
2114
- }
2115
-
2116
- if(!array_key_exists($n.'_top_opt_tweet_multiple_times', $options)) {
2117
- $options[$n.'_top_opt_tweet_multiple_times'] = 'off';
2118
- }
2119
-
2120
- if(!array_key_exists($n.'_top_opt_ga_tracking', $options)) {
2121
- $options[$n.'_top_opt_ga_tracking'] = 'off';
2122
- }
2123
-
2124
- //if(!array_key_exists('top_opt_tweet_specific_category', $options)) {
2125
- // update_option('top_opt_tweet_specific_category', '');
2126
- //}
2127
-
2128
- if(!array_key_exists($n.'_top_opt_omit_cats', $options)) {
2129
- $options[$n.'_top_opt_omit_cats'] = '';
2130
- }
2131
-
2132
- if(!array_key_exists($n.'_top_opt_post_type', $options)) {
2133
- $options[$n.'_top_opt_post_type'] = 'post';
2134
- }
2135
-
2136
- }
2137
-
2138
- update_option('top_opt_post_formats', $options);
2139
-
2140
- }
2141
-
2142
- public function top_admin_notice() {
2143
- global $current_user ;
2144
- $user_id = $current_user->ID;
2145
- /* Check that the user hasn't already clicked to ignore the message */
2146
- if ( ! get_user_meta($user_id, 'top_ignore_notice3') ) {
2147
- // echo '<div class="error"><p>';
2148
- // 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>'));
2149
- // echo "</p></div>";
2150
- }
2151
- }
2152
- public function top_nag_ignore() {
2153
-
2154
- global $current_user;
2155
- $user_id = $current_user->ID;
2156
- /* If user clicks to ignore the notice, add that to their user meta */
2157
- if ( isset($_GET['top_nag_ignore']) && '0' == $_GET['top_nag_ignore'] ) {
2158
- add_user_meta($user_id, 'top_ignore_notice3', 'true', true);
2159
- }
2160
- }
2161
-
2162
- public function resetAllOptions()
2163
- {
2164
-
2165
- if(!is_admin()) return false;
2166
-
2167
- $defaultOptions = array(
2168
- 'top_opt_tweet_type' => 'title',
2169
- 'top_opt_post_with_image' => 'off',
2170
- 'top_opt_bitly_user' =>'',
2171
- 'top_opt_bitly_key' =>'',
2172
- 'top_opt_post_type_custom_field' => '',
2173
- 'top_opt_add_text' => '',
2174
- 'top_opt_add_text_at' => 'beginning',
2175
- 'top_opt_include_link' => 'true',
2176
- 'top_opt_custom_url_option' => 'off',
2177
- 'top_opt_use_url_shortner' => 'off',
2178
- 'top_opt_ga_tracking' => 'on',
2179
- 'top_opt_url_shortner' => 'is.gd',
2180
- 'top_opt_custom_hashtag_option' => 'nohashtag',
2181
- 'top_opt_hashtags' => '',
2182
- 'top_opt_hashtag_length' => '0',
2183
- 'top_opt_custom_hashtag_field' => '',
2184
- 'top_opt_interval' => '8',
2185
- 'top_opt_age_limit' => '30',
2186
- 'top_opt_max_age_limit' => '0',
2187
- 'top_opt_no_of_tweet' => '1',
2188
- 'top_opt_post_type' => 'post',
2189
- 'top_opt_post_type_value' => 'post',
2190
- 'top_opt_custom_url_field' => '',
2191
- 'top_opt_omit_cats' => '',
2192
- 'cwp_topnew_active_status' => 'false',
2193
- 'cwp_topnew_notice' => '',
2194
- 'top_opt_excluded_post' => '',
2195
- 'top_opt_tweet-multiple-times' => 'off',
2196
- 'cwp_top_logged_in_users' => '',
2197
- 'top_fb_token' =>'',
2198
- 'top_opt_post_formats' =>'',
2199
- // Added by Ash/Upwork
2200
- 'top_opt_posts_buffer_twitter' => '',
2201
- 'top_opt_posts_buffer_facebook' => '',
2202
- 'top_opt_posts_buffer_linkedin' => '',
2203
- 'top_opt_posts_buffer_tumblr' => '',
2204
- 'top_opt_posts_buffer_xing' => '',
2205
- // Added by Ash/Upwork
2206
- );
2207
-
2208
- foreach ($defaultOptions as $option => $defaultValue) {
2209
- update_option($option, $defaultValue);
2210
- }
2211
-
2212
-
2213
- update_option("top_opt_post_formats",array());
2214
- update_option("cwp_top_global_schedule",array());
2215
- $this->clearScheduledTweets();
2216
- //die();
2217
- }
2218
- public function getPostFormatValues(){
2219
- $cwp_rop_all_networks = $this->getFormatFields();
2220
- $options = get_option("top_opt_post_formats");
2221
- $return = array();
2222
- foreach($cwp_rop_all_networks as $n=>$d){
2223
-
2224
- foreach($d as $fname => $f){
2225
-
2226
- if(!isset($options[$n."_".$f['option']])){
2227
- $return[$n."_".$f['option']] = $f['default_value'];
2228
-
2229
- }else{
2230
- $return[$n."_".$f['option']] = $options[$n."_".$f['option']];
2231
-
2232
- }
2233
-
2234
- }
2235
-
2236
- }
2237
-
2238
- return $return;
2239
-
2240
-
2241
- }
2242
- public function deleteAllOptions()
2243
- {
2244
- global $defaultOptions;
2245
- foreach ($defaultOptions as $option => $defaultValue) {
2246
- delete_option($option);
2247
- }
2248
- }
2249
-
2250
- // Generate all fields based on settings
2251
- public static function generateFieldType($field)
2252
- {
2253
- $disabled = "";
2254
- $pro = "";
2255
-
2256
- switch ($field['type']) {
2257
- case 'image-list':
2258
- $pro = "";
2259
- $disabled = "";
2260
- if (isset($field['available_pro'])) {
2261
-
2262
-
2263
- if(!CWP_TOP_PRO){
2264
- $pro = CWP_TOP_PRO_STRING;
2265
- $disabled = "disabled='disabled'";
2266
- }
2267
- }
2268
- $images = array();
2269
- $images[] = "full";
2270
- $images = array_merge($images,get_intermediate_image_sizes());
2271
-
2272
- echo "<select name='".$field['option']."' id='".$field['option']."' ".$disabled ." >";
2273
- foreach($images as $image){
2274
- echo "<option ".(($field["option_value"] == $image) ? "selected" : "")." value='".$image."'>".$image."</option>";
2275
- }
2276
-
2277
- echo "</select><br/>".$pro;
2278
- break;
2279
- case 'text':
2280
- if (isset($field['available_pro'])) {
2281
-
2282
-
2283
- if(!CWP_TOP_PRO && $field['available_pro'] == 'yes') {
2284
- if ( isset( $field["pro_text"] ) ) {
2285
- $pro = __($field["pro_text"],'tweet-old-post');
2286
- } else {
2287
- $pro = CWP_TOP_PRO_STRING;
2288
- }
2289
- $disabled = "disabled='disabled'";
2290
- }
2291
- }
2292
- echo "<input type='text' placeholder='".__($field['description'],'tweet-old-post')."' ".$disabled." value='".$field['option_value']."' name='".$field['option']."' id='".$field['option']."'><br/>".$pro;
2293
- break;
2294
-
2295
- case 'number':
2296
- if (isset($field['available_pro'])) {
2297
-
2298
-
2299
- if(!CWP_TOP_PRO){
2300
- $pro = CWP_TOP_PRO_STRING;
2301
- $disabled = "disabled='disabled'";
2302
- }
2303
- }
2304
- 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;
2305
- break;
2306
-
2307
- case 'select':
2308
- $noFieldOptions = intval(count($field['options']));
2309
- $fieldOptions = array_keys($field['options']);
2310
- if (isset($field['available_pro'])) {
2311
-
2312
-
2313
- if(!CWP_TOP_PRO && $field['available_pro'] == 'yes'){
2314
- $pro = CWP_TOP_PRO_STRING;
2315
- $disabled = "disabled='disabled'";
2316
- }
2317
- }
2318
- //if ($field['option']=='top_opt_post_type') $disabled = "disabled";
2319
- print "<select id='".$field['option']."' name='".$field['option']."'".$disabled.">";
2320
- for ($i=0; $i < $noFieldOptions; $i++) {
2321
- print "<option value=".$fieldOptions[$i];
2322
- if($field['option_value'] == $fieldOptions[$i]) { echo " selected='selected'"; }
2323
- print ">".__($field['options'][$fieldOptions[$i]],'tweet-old-post')."</option>";
2324
- }
2325
- print "</select>".$pro;
2326
- break;
2327
-
2328
- case 'checkbox':
2329
-
2330
- if (isset($field['available_pro'])) {
2331
-
2332
- if(!CWP_TOP_PRO){
2333
- $pro = CWP_TOP_PRO_STRING;
2334
- $disabled = "disabled='disabled'";
2335
- }
2336
- }
2337
- print "<input id='".$field['option']."' type='checkbox' ".$disabled." name='".$field['option']."'";
2338
- if($field['option_value'] == 'on') { echo "checked=checked"; }
2339
- print " />".$pro;
2340
-
2341
-
2342
- break;
2343
-
2344
- case 'categories-list':
2345
-
2346
- $taxs = get_taxonomies(array(
2347
- 'public' => true
2348
- ),"object","and");
2349
-
2350
- $post_types = get_post_types( array(
2351
- 'public' => true,
2352
- ), "object","and");
2353
- $post_types["post"] = get_post_type_object( 'post' );
2354
- $post_types["page"] = get_post_type_object( 'page' );
2355
-
2356
- foreach($post_types as $pt=>$pd){
2357
- foreach($taxs as $tx){
2358
-
2359
- if(in_array($pt,$tx->object_type)){
2360
-
2361
- $terms = get_terms($tx->name, array(
2362
- 'hide_empty' => true,
2363
- 'number' =>400
2364
-
2365
- ) );
2366
- if(!empty($terms)){
2367
- print "<div class='categories-list cwp-hidden cwp-tax-".$pt."'><p class='rop-category-header'>".$tx->labels->name." </p>";
2368
- foreach ($terms as $t) {
2369
-
2370
- if (!is_array(get_option('top_opt_omit_cats')))
2371
- $top_opt_omit_specific_cats = explode(',',get_option('top_opt_omit_cats'));
2372
- else
2373
- $top_opt_omit_specific_cats = get_option('top_opt_omit_cats');
2374
-
2375
- print "<div class='cwp-cat'>";
2376
- print "<input type='checkbox' data-posttype='".$pt."' name='".$field['option']."[]' value='".$t->term_id."' id='".$field['option']."_cat_".$t->term_id."'";
2377
-
2378
- if($field['option'] == 'top_opt_omit_cats') {
2379
- if(is_array($top_opt_omit_specific_cats)) {
2380
- if(in_array($t->term_id, $top_opt_omit_specific_cats)) {
2381
- print "checked=checked";
2382
- }
2383
- }
2384
- }
2385
-
2386
-
2387
- print ">";
2388
- print "<label for='".$field['option']."_cat_".$t->term_id."'>".$t->name."</label>";
2389
- print "</div>";
2390
- }
2391
- print "<div class='clear'></div></div>";
2392
- }
2393
-
2394
- }
2395
-
2396
- }
2397
-
2398
- }
2399
-
2400
-
2401
- break;
2402
-
2403
- case 'custom-post-type':
2404
- print "<div class='post-type-list clearfix'>";
2405
- $args = array(
2406
- 'public' => true,
2407
- '_builtin' => false
2408
- );
2409
-
2410
- $output = 'names'; // names or objects, note names is the default
2411
- $operator = 'and'; // 'and' or 'or'
2412
- if (isset($field['available_pro'])) {
2413
- if(!CWP_TOP_PRO){
2414
- $pro = CWP_TOP_PRO_STRING;
2415
- $disabled = "disabled='disabled'";
2416
- }
2417
- }
2418
- $post_types = get_post_types( $args, $output, $operator );
2419
- array_push($post_types,"post","page");
2420
- foreach ($post_types as $post_type) {
2421
-
2422
- //$top_opt_tweet_specific_category = get_option('top_opt_tweet_specific_category');
2423
-
2424
- if (!is_array(get_option('top_opt_post_type')))
2425
- $top_opt_post_types = explode(',',get_option('top_opt_post_type'));
2426
- else
2427
- $top_opt_post_types = get_option('top_opt_post_type');
2428
-
2429
- print "<div class='cwp-cat '>";
2430
- print "<input ".$disabled." type='checkbox' class='cwp-cpt-checkbox' name='".$field['option']."[]' value='".$post_type."' id='".$field['option']."_cat_".$post_type."'";
2431
-
2432
- if($field['option'] == 'top_opt_post_type') {
2433
- if(is_array($top_opt_post_types)) {
2434
- if(in_array($post_type, $top_opt_post_types)) {
2435
- print "checked=checked";
2436
- }
2437
- }
2438
- }
2439
-
2440
-
2441
- print ">";
2442
- print "<label for='".$field['option']."_cat_".$post_type."'>".$post_type."</label>";
2443
- print "</div>";
2444
-
2445
- }
2446
- print "</div> ".$pro;
2447
- break;
2448
-
2449
- }
2450
-
2451
- }
2452
-
2453
-
2454
- public function echoTime() {
2455
-
2456
- echo $this->getTime();
2457
-
2458
- die();
2459
- }
2460
- public function getTime() {
2461
-
2462
- return time() ;
2463
-
2464
- //return time() - 253214 + 2 * 3600 + 24 * 3600;
2465
- }
2466
-
2467
- function top_plugin_action_links($links, $file) {
2468
-
2469
- if ($file == ROPPLUGINBASENAME) {
2470
- // The "page" query string value must be equal to the slug
2471
- // of the Settings admin page we defined earlier, which in
2472
- // this case equals "myplugin-settings".
2473
- $settings_link = '<a href="' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=TweetOldPost">Settings</a>';
2474
- array_unshift($links, $settings_link);
2475
- }
2476
-
2477
- return $links;
2478
- }
2479
- public function getRemoteCheck(){
2480
- $remote_check = get_option("cwp_rop_remote_trigger");
2481
- if($remote_check === false) $remote_check = "off";
2482
- return $remote_check;
2483
- }
2484
- public function getBetaUserStatus(){
2485
- $beta_user = get_option("cwp_rop_beta_user");
2486
- if($beta_user === false) $beta_user = "off";
2487
- return $beta_user;
2488
- }
2489
- public function fixCron() {
2490
- update_option('cwp_topnew_notice','');
2491
-
2492
- if ( defined( 'ALTERNATE_WP_CRON' ) ) {
2493
-
2494
- //delete_option( 'hmbkp_wp_cron_test_failed' );
2495
-
2496
- //echo 1;
2497
-
2498
- return 0;
2499
-
2500
- }
2501
- else {
2502
-
2503
- $response = wp_remote_head( site_url( 'wp-cron.php' ), array( 'timeout' => 30 ) );
2504
-
2505
- if ( is_wp_error( $response ) ) {
2506
-
2507
- 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!");
2508
-
2509
- } elseif ( wp_remote_retrieve_response_code( $response ) != 200 ) {
2510
-
2511
- 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!");
2512
-
2513
- }
2514
-
2515
-
2516
-
2517
- }
2518
- }
2519
- public function clearOldCron(){
2520
- if(isset($_POST['cwp-action'])){
2521
- if($_POST['cwp-action'] == 'download_sysinfo'){
2522
- header('Content-Disposition: attachment; filename="report.txt"');
2523
- header('Content-type: text/plain');
2524
- echo $_POST['cwp-top-sysinfo'];
2525
- die();
2526
-
2527
- }
2528
-
2529
- }
2530
- if ( false === ( $remote_calls = get_transient( 'rop_remote_calls' ) ) ) {
2531
- $beta_user = $this->getBetaUserStatus();
2532
- if($beta_user == "on" ) {
2533
- $this->sendBetaUserTrigger($beta_user);
2534
- }
2535
- $remote_call = $this->getRemoteCheck();
2536
- if($remote_call == "on" ) {
2537
- $this->sendBetaUserTrigger($remote_call);
2538
- }
2539
-
2540
- $this->sendRemoteTrigger($this->getRemoteCheck());
2541
- set_transient( 'rop_remote_calls', "done", 24 * HOUR_IN_SECONDS );
2542
- }
2543
- if(!defined("VERSION_CHECK") && function_exists('topProImage')){
2544
- $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";
2545
-
2546
- }
2547
- $all = $this->getAllNetworks();
2548
-
2549
- if($this->pluginStatus !== 'true'){
2550
-
2551
- foreach($all as $a){
2552
-
2553
- wp_clear_scheduled_hook($a.'roptweetcron',array($a));
2554
-
2555
-
2556
- }
2557
- return false;
2558
- }
2559
-
2560
-
2561
- $networks = $this->getAvailableNetworks();
2562
- if(wp_next_scheduled( 'cwp_top_tweet_cron' ) !== false) {
2563
-
2564
- $timestamp = wp_next_scheduled( 'cwp_top_tweet_cron' );
2565
- wp_clear_scheduled_hook('cwp_top_tweet_cron');
2566
- foreach($networks as $network){
2567
- wp_schedule_single_event($timestamp,$network.'roptweetcron',array($network));
2568
- }
2569
-
2570
- }else{
2571
-
2572
- if(wp_next_scheduled( 'cwptoptweetcronnew' ) !== false) {
2573
- $timestamp = wp_next_scheduled( 'cwptoptweetcronnew' );
2574
- wp_clear_scheduled_hook('cwptoptweetcronnew');
2575
- foreach($networks as $network){
2576
- wp_schedule_single_event($timestamp,$network.'roptweetcron',array($network));
2577
- }
2578
- }
2579
- else{
2580
-
2581
- foreach($all as $a){
2582
- if(wp_next_scheduled( $a.'cwptoptweetcron',array($a) ) !== false) {
2583
-
2584
- $timestamp = wp_next_scheduled($a.'cwptoptweetcron',array($a) );
2585
- wp_clear_scheduled_hook($a.'cwptoptweetcron',array($a));
2586
- wp_schedule_single_event($timestamp,$a.'roptweetcron',array($a));
2587
- }
2588
- }
2589
- foreach($all as $a){
2590
- if(!in_array($a,$networks)){
2591
- wp_clear_scheduled_hook($a.'roptweetcron',array($a));
2592
- }
2593
-
2594
- }
2595
-
2596
- }
2597
-
2598
- }
2599
-
2600
- if($this->pluginStatus === 'true'){
2601
- foreach($networks as $avn){
2602
- if(wp_next_scheduled( $avn.'roptweetcron',array($avn) ) === false) {
2603
- $this->scheduleTweet($avn);
2604
- }
2605
- }
2606
- }
2607
- }
2608
- public function loadAllHooks()
2609
- {
2610
-
2611
- // loading all actions and filters
2612
- add_action('admin_menu', array($this, 'addAdminMenuPage'));
2613
-
2614
- add_action('admin_enqueue_scripts', array($this, 'loadAllScriptsAndStyles'));
2615
-
2616
- add_action( 'admin_notices', array($this, 'adminNotice') );
2617
-
2618
- add_filter('plugin_action_links',array($this,'top_plugin_action_links'), 10, 2);
2619
-
2620
- add_action( 'plugins_loaded', array($this, 'addLocalization') );
2621
-
2622
- //ajax actions
2623
-
2624
- // Update all options ajax action.
2625
- add_action('wp_ajax_update_response', array($this, 'updateAllOptions'));
2626
-
2627
- // Reset all options ajax action.
2628
- add_action('wp_ajax_reset_options', array($this, 'resetAllOptions'));
2629
-
2630
- // Add new twitter account ajax action
2631
- add_action('wp_ajax_add_new_account', array($this, 'addNewAccount'));
2632
-
2633
- // Display managed pages ajax action
2634
- add_action('wp_ajax_display_pages', array($this, 'displayPages'));
2635
-
2636
- // Add new account managed pages ajax action
2637
- add_action('wp_ajax_add_pages', array($this, 'addPages'));
2638
-
2639
- // Add more than one twitter account ajax action
2640
- add_action('wp_ajax_add_new_account_pro', array($this, 'addNewAccountPro'));
2641
-
2642
- // Log Out Twitter user ajax action
2643
- add_action('wp_ajax_log_out_user', array($this, 'logOutUser'));
2644
-
2645
- //start ROP
2646
- add_action('wp_ajax_tweet_old_post_action', array($this, 'startTweetOldPost'));
2647
-
2648
- //clear Log messages
2649
- add_action('wp_ajax_rop_clear_log', array($this, 'clearLog'));
2650
-
2651
- //remote trigger cron
2652
- add_action('wp_ajax_remote_trigger', array($this, 'remoteTrigger'));
2653
- add_action('wp_ajax_beta_user_trigger', array($this, 'betaUserTrigger'));
2654
-
2655
- //sample tweet messages
2656
- add_action('wp_ajax_view_sample_tweet_action', array($this, 'viewSampleTweet'));
2657
-
2658
- // Tweet Old Post tweet now action.
2659
- add_action('wp_ajax_tweet_now_action', array($this, 'tweetNow'));
2660
-
2661
- add_action('wp_ajax_gettime_action', array($this, 'echoTime'));
2662
-
2663
- //get notice
2664
- add_action('wp_ajax_getNotice_action', array($this, 'getNotice'));
2665
-
2666
- //stop ROP
2667
- add_action('wp_ajax_stop_tweet_old_post', array($this, 'stopTweetOldPost'));
2668
-
2669
- //custom actions
2670
-
2671
- add_action("rop_start_posting",array($this,"startPosting"));
2672
- add_action("rop_stop_posting",array($this,"stopPosting"));
2673
- $networks = $this->getAllNetworks();
2674
-
2675
- foreach($networks as $network){
2676
- add_action($network.'roptweetcron',array($this,"tweetOldPost"));
2677
-
2678
- }
2679
-
2680
- //admin_init actions
2681
-
2682
- add_action('admin_init', array($this,'top_nag_ignore'));
2683
- add_action('admin_init', array($this,'clearOldCron'));
2684
- // Added by Ash/Upwork
2685
- add_filter('template_include', array($this, 'captureRewrites'), 1, 1);
2686
- add_filter('query_vars', array($this, 'addRewriteVars'));
2687
- // Added by Ash/Upwork
2688
-
2689
- //filters
2690
-
2691
- add_filter("rop_users_filter",array($this,"rop_users_filter_free"),1,1);
2692
-
2693
- // Added by Ash/Upwork
2694
- // test action, only to be used for testing
2695
- if(ROP_IS_TEST) add_action("admin_init", array($this, "doTestAction"));
2696
- // Added by Ash/Upwork
2697
-
2698
- if(isset($_GET['debug']) ) {
2699
- //$this->getNextTweetTime('twitter');
2700
- //$this->tweetOldPost("twitter"); global $CWP_TOP_Core_PRO;
2701
- $this->tweetOldPost("twitter");
2702
-
2703
- die();
2704
- }
2705
-
2706
- }
2707
-
2708
- // Added by Ash/Upwork
2709
- function addRewriteVars($vars){
2710
- global $cwp_rop_self_endpoint;
2711
- $vars[] = $cwp_rop_self_endpoint;
2712
- return $vars;
2713
- }
2714
-
2715
- function captureRewrites($template){
2716
- global $wp_query, $cwp_rop_self_endpoint;
2717
- if (get_query_var($cwp_rop_self_endpoint, false)){
2718
- $this->processServerRequest();
2719
- return null;
2720
- }
2721
- return $template;
2722
- }
2723
-
2724
- private function processServerRequest(){
2725
- if(
2726
- !get_option("cwp_rop_remote_trigger", false)
2727
- ||
2728
- !get_option("cwp_topnew_active_status", false)
2729
- ) return;
2730
-
2731
- $crons = _get_cron_array();
2732
- $this->clearScheduledTweets();
2733
-
2734
- foreach($crons as $time => $cron){
2735
- foreach($cron as $hook => $dings){
2736
- if(strpos($hook, "roptweetcron") === FALSE) continue;
2737
-
2738
- $network = trim(str_replace("roptweetcron", "", $hook));
2739
- if($time > $this->getTime()){
2740
- // echo "FUTURE $hook for $time (current time is " . $this->getTime() . ") <br>";
2741
- wp_schedule_single_event($time, $network.'roptweetcron', array($network));
2742
- continue;
2743
- }
2744
-
2745
- //echo "NOW $hook for $network for $time (current time is " . $this->getTime() . ") <br>";
2746
-
2747
- foreach($dings as $hash => $data){
2748
- do_action($hook, $network);
2749
- }
2750
- }
2751
- }
2752
- }
2753
- // Added by Ash/Upwork
2754
-
2755
- public function rop_users_filter_free($users){
2756
-
2757
- if(!is_array($users)) $users = array();
2758
- foreach($users as $k=>$user){
2759
- if(!isset($user['service'])) {
2760
- if ( strpos( $user['oauth_user_details']->profile_image_url, 'twimg' ) ) {
2761
-
2762
- $users[ $k ]['service'] = 'twitter';
2763
- }
2764
- if ( strpos( $user['oauth_user_details']->profile_image_url, 'facebook' ) ) {
2765
-
2766
- $users[ $k ]['service'] = 'facebook';
2767
- }
2768
- }
2769
- }
2770
-
2771
- return $users;
2772
- }
2773
-
2774
- public function remoteTrigger($status = ""){
2775
- if(!is_admin()) return false;
2776
- $state = isset($_POST["state"]) ? $_POST["state"] : "";
2777
-
2778
- if(!empty($status)) $state = $status;
2779
-
2780
- if(!empty($state) &&( $state == "on" || $state == "off")){
2781
-
2782
- update_option("cwp_rop_remote_trigger",$state);
2783
- // Added by Ash/Upwork
2784
- $response = $this->sendRemoteTrigger($state);
2785
- if($response){
2786
- $error = __('Error: ','tweet-old-post') . $response;
2787
- self::addNotice($error, 'error');
2788
- update_option("cwp_rop_remote_trigger", "off");
2789
- // if you want to show the user an alert, make showAlert true
2790
- wp_send_json_error(array("error" => $error, "showAlert" => false));
2791
- }
2792
- // Added by Ash/Upwork
2793
- }
2794
-
2795
- if(empty($status)) die();
2796
- }
2797
-
2798
- public function sendRemoteTrigger($state){
2799
-
2800
- global $cwp_rop_remote_trigger_url;
2801
- $state = ($state == "on") ? "yes" : "no";
2802
-
2803
- $response = wp_remote_post( $cwp_rop_remote_trigger_url, array(
2804
- 'method' => 'POST',
2805
- 'timeout' => 1,
2806
- 'redirection' => 5,
2807
- 'httpversion' => '1.0',
2808
- 'blocking' => true,
2809
- 'headers' => array(),
2810
- 'body' => array( 'url' => get_site_url(), 'status' => $state ),
2811
- 'cookies' => array()
2812
- )
2813
- );
2814
-
2815
- // Added by Ash/Upwork
2816
- if(is_wp_error($response)){
2817
- return $response->get_error_message();
2818
- }
2819
- return null;
2820
- // Added by Ash/Upwork
2821
- }
2822
-
2823
- public function betaUserTrigger($status = ""){
2824
- if(!is_admin()) return false;
2825
- $state = $_POST["state"];
2826
- if(!empty($status)) $state = $status;
2827
-
2828
- if(!empty($state) &&( $state == "on" || $state == "off")){
2829
-
2830
- update_option("cwp_rop_beta_user",$state);
2831
- $this->sendBetaUserTrigger($state);
2832
-
2833
- }
2834
-
2835
- die();
2836
- }
2837
-
2838
-
2839
- public function sendBetaUserTrigger($state){
2840
-
2841
- global $cwp_rop_beta_trigger_url;
2842
- $state = ($state == "on") ? "yes" : "no";
2843
-
2844
- wp_remote_post( $cwp_rop_beta_trigger_url, array(
2845
- 'method' => 'POST',
2846
- 'timeout' => 1,
2847
- 'redirection' => 5,
2848
- 'httpversion' => '1.0',
2849
- 'blocking' => true,
2850
- 'headers' => array(),
2851
- 'body' => array( 'email' => get_bloginfo('admin_email'), 'status' => $state ),
2852
- 'cookies' => array()
2853
- )
2854
- );
2855
-
2856
- }
2857
- public function loadAllScriptsAndStyles()
2858
- {
2859
- global $cwp_top_settings; // Global Tweet Old Post Settings
2860
-
2861
- // Enqueue and register all scripts on plugin's page
2862
- if(isset($_GET['page'])) {
2863
- if ($_GET['page'] == $cwp_top_settings['slug'] || $_GET['page'] == "ExcludePosts") {
2864
-
2865
- // Enqueue and Register Main CSS File
2866
- wp_register_style( 'cwp_top_stylesheet', ROPCSSFILE, false, time() );
2867
- wp_enqueue_style( 'cwp_top_stylesheet' );
2868
-
2869
- // Register Main JS File
2870
- wp_enqueue_script( 'cwp_top_js_countdown', ROPJSCOUNTDOWN, array(), time(), true );
2871
- wp_enqueue_script( 'cwp_top_javascript', ROPJSFILE, array(), time(), true );
2872
- wp_localize_script( 'cwp_top_javascript', 'cwp_top_ajaxload', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
2873
- }
2874
- }
2875
-
2876
- }
2877
-
2878
- function top_check_user_role( $role, $user_id = null ) {
2879
-
2880
- if ( is_numeric( $user_id ) )
2881
- $user = get_userdata( $user_id );
2882
- else
2883
- $user = wp_get_current_user();
2884
-
2885
- if ( empty( $user ) )
2886
- return false;
2887
-
2888
- return in_array( $role, (array) $user->roles );
2889
- }
2890
-
2891
- public function addAdminMenuPage()
2892
- {
2893
- global $cwp_top_settings; // Global Tweet Old Post Settings
2894
- if (!current_user_can('manage_options') && $this->top_check_user_role( 'Administrator' ))
2895
- $cap = 1;
2896
- else
2897
- $cap='manage_options';
2898
- add_menu_page($cwp_top_settings['name'], $cwp_top_settings['name'], $cap, $cwp_top_settings['slug'], array($this, 'loadMainView'), '','99.87514');
2899
- add_submenu_page($cwp_top_settings['slug'], __('Exclude Posts','tweet-old-post'), __('Exclude Posts','tweet-old-post'), 'manage_options', 'ExcludePosts', 'rop_exclude_posts');
2900
-
2901
- add_submenu_page($cwp_top_settings['slug'], __('System Info','tweet-old-post'), __('System Info','tweet-old-post'), 'manage_options', 'SystemInfo', array($this,'system_info'));
2902
-
2903
- }
2904
-
2905
- public function getFormatFields(){
2906
-
2907
- $all = $this->getAllNetworks(true);
2908
- global $cwp_format_fields;
2909
- $networks_fields = array();
2910
-
2911
- foreach($all as $network=>$pro){
2912
- if(CWP_TOP_PRO == $pro) {
2913
- $networks_fields[ $network ] = $cwp_format_fields;
2914
- }else{
2915
- foreach($cwp_format_fields as $k=>$v){
2916
- $v[ "available_pro"] = "yes";
2917
- $networks_fields[ $network][$k] = $v;
2918
- }
2919
-
2920
- }
2921
- }
2922
- return $networks_fields;
2923
- }
2924
- public function getGeneralFields(){
2925
- global $cwp_top_fields;
2926
-
2927
- return $cwp_top_fields;
2928
-
2929
- }
2930
- public function loadMainView()
2931
- {
2932
- $cwp_top_fields = $this->getGeneralFields();
2933
- foreach ($cwp_top_fields as $field => $value) {
2934
- $cwp_top_fields[$field]['option_value'] = get_option($cwp_top_fields[$field]['option']);
2935
- }
2936
- $all_networks = $this->getAllNetworks();
2937
- $format_fields = $this->getFormatFields();
2938
- $options = get_option("top_opt_post_formats");
2939
- global $cwp_top_global_schedule;
2940
- $cwp_top_global_schedule = $this->getSchedule();
2941
- if($options === false ) $options = array();
2942
- if($cwp_top_global_schedule === false ) $cwp_top_global_schedule = array();
2943
-
2944
- $schedule = $cwp_top_fields["interval"]['option_value'];
2945
- foreach ($format_fields as $network_name => $network_details) {
2946
- foreach ($network_details as $field => $vvalue) {
2947
- $value = isset($options[$network_name."_".$format_fields[$network_name][$field]['option']]) ? $options[$network_name."_".$format_fields[$network_name][$field]['option']] : false ;
2948
- if($value === false) {
2949
- $value = get_option($format_fields[$network_name][$field]['option']);
2950
- if($value === false) {
2951
- if(isset($vvalue['default_value']))
2952
- $value = $vvalue['default_value'];
2953
- }
2954
- }
2955
- $format_fields[$network_name][$field]['option_value'] = $value;
2956
- }
2957
- if(!isset($cwp_top_global_schedule[$network_name."_schedule_type_selected"])){
2958
- $cwp_top_global_schedule[$network_name."_schedule_type_selected"] = "each";
2959
- $cwp_top_global_schedule[$network_name."_top_opt_interval"] = $schedule;
2960
- }
2961
- }
2962
- require_once(plugin_dir_path( __FILE__ )."view.php");
2963
- }
2964
-
2965
- // Sends a request to the passed URL
2966
- public function sendRequest($url, $method='GET', $data='', $auth_user='', $auth_pass='') {
2967
-
2968
- $ch = curl_init($url);
2969
-
2970
- if (strtoupper($method) == "POST") {
2971
- curl_setopt($ch, CURLOPT_POST, 1);
2972
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
2973
- }
2974
-
2975
- if (ini_get('open_basedir') == '' && ini_get('safe_mode') == 'Off') {
2976
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
2977
- }
2978
-
2979
- curl_setopt($ch, CURLOPT_HEADER, 0);
2980
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
2981
-
2982
- if ($auth_user != '' && $auth_pass != '') {
2983
- curl_setopt($ch, CURLOPT_USERPWD, "{$auth_user}:{$auth_pass}");
2984
- }
2985
-
2986
- $response = curl_exec($ch);
2987
-
2988
- $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
2989
-
2990
- curl_close($ch);
2991
-
2992
- if ($httpcode != 200) {
2993
- self::addNotice("Error for request: " . $url . " : ". $response,'error');
2994
- return $httpcode;
2995
- }
2996
-
2997
- return $response;
2998
- }
2999
-
3000
- // Shortens the url.
3001
- public function shortenURL($url, $service, $id, $bitly_key, $bitly_user) {
3002
- $url = urlencode($url);
3003
- if ($service == "bit.ly") {
3004
-
3005
- //$shortURL = $url;
3006
- $url = trim($url);
3007
- $bitly_key = trim($bitly_key);
3008
- $bitly_user = trim($bitly_user);
3009
- $shortURL = "http://api.bit.ly/v3/shorten?format=txt&login=".$bitly_user."&apiKey=".$bitly_key."&longUrl={$url}";
3010
- $shortURL = $this->sendRequest($shortURL, 'GET');
3011
-
3012
- } elseif ($service == "tr.im") {
3013
- $shortURL = "http://api.tr.im/api/trim_simple?url={$url}";
3014
- $shortURL = $this->sendRequest($shortURL, 'GET');
3015
- } elseif ($service == "3.ly") {
3016
- $shortURL = "http://3.ly/?api=em5893833&u={$url}";
3017
- $shortURL = $this->sendRequest($shortURL, 'GET');
3018
- } elseif ($service == "tinyurl") {
3019
- $shortURL = "http://tinyurl.com/api-create.php?url=" . $url;
3020
- $shortURL = $this->sendRequest($shortURL, 'GET');
3021
- } elseif ($service == "u.nu") {
3022
- $shortURL = "http://u.nu/unu-api-simple?url={$url}";
3023
- $shortURL = $this->sendRequest($shortURL, 'GET');
3024
- } elseif ($service == "1click.at") {
3025
- $shortURL = "http://1click.at/api.php?action=shorturl&url={$url}&format=simple";
3026
- $shortURL = $this->sendRequest($shortURL, 'GET');
3027
- } elseif ($service == "is.gd") {
3028
-
3029
- $shortURL = "http://is.gd/api.php?longurl={$url}";
3030
-
3031
- $shortURL = $this->sendRequest($shortURL, 'GET');
3032
- } elseif ($service == "t.co") {
3033
- $shortURL = "http://twitter.com/share?url={$url}";
3034
- $shortURL = $this->sendRequest($shortURL, 'GET');
3035
- } else {
3036
- $shortURL = wp_get_shortlink($id);
3037
- }
3038
- if($shortURL != ' 400 '&& $shortURL!="500" && $shortURL!="0") {
3039
- return $shortURL;
3040
- }
3041
- else
3042
- update_option('cwp_topnew_notice','Looks like is an error with your url shortner');
3043
- }
3044
-
3045
- public function rop_load_dashboard_icon()
3046
- {
3047
- wp_register_style( 'rop_custom_dashboard_icon', ROPCUSTOMDASHBOARDICON, false, ROP_VERSION );
3048
- wp_enqueue_style( 'rop_custom_dashboard_icon' );
3049
-
3050
- }
3051
-
3052
- }
3053
- }
3054
-
3055
- if(class_exists('CWP_TOP_Core')) {
3056
- $CWP_TOP_Core = new CWP_TOP_Core;
3057
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ // Added by Ash/Upwork
8
+ define("ROP_IS_TEST", false);
9
+ // Added by Ash/Upwork
10
+
11
+
12
+ if (!class_exists('CWP_TOP_Core')) {
13
+ class CWP_TOP_Core {
14
+
15
+ // All fields
16
+ public static $fields;
17
+ public static $networks;
18
+ // Number of fields
19
+ public static $noFields;
20
+ public $notices;
21
+ // Consumer key, Consumer Secret key, oAuth Callback Key
22
+ public $consumer;
23
+ public $lastID;
24
+ public $consumerSecret;
25
+ public $oAuthCallback;
26
+ public $bitly_key;
27
+ public $bitly_user;
28
+ // Access token, oAuth Token, oAuth Token Secret and User Information
29
+ private $cwp_top_access_token;
30
+ private $cwp_top_oauth_token;
31
+ private $cwp_top_oauth_token_secret;
32
+
33
+ public $users;
34
+ private $user_info;
35
+
36
+ // Plugin Status
37
+ public $pluginStatus;
38
+ // Interval Set
39
+ public $intervalSet;
40
+ public $cwp_twitter;
41
+ public static $date_format;
42
+ public function __construct() {
43
+ // Get all fields
44
+ global $cwp_top_fields;
45
+ global $cwp_top_networks;
46
+
47
+
48
+ $this->setAlloAuthSettings();
49
+ // Load all hooks
50
+ $this->loadAllHooks();
51
+
52
+ // Set all authentication settings
53
+ // Check if the user added any account
54
+ $this->afterAddAccountCheck();
55
+
56
+ // Save all fields in static var
57
+ self::$fields = $cwp_top_fields;
58
+ self::$networks = $cwp_top_networks;
59
+
60
+ // Save all number of fields in static var
61
+ self::$noFields = count(self::$fields);
62
+ }
63
+ public static function addNotice($message,$type){
64
+ $errors = get_option('rop_notice_active');
65
+ if(count($errors) > 30) $errors = array();
66
+ $errors[] = array(
67
+ "time"=>date('j-m-Y h:i:s A'),
68
+ 'message'=>$message,
69
+ "type" => $type
70
+ );
71
+ update_option("rop_notice_active",$errors);
72
+
73
+ }
74
+ public static function clearLog(){
75
+ if(!is_admin()) return false;
76
+ update_option("rop_notice_active",array());
77
+
78
+ }
79
+ public static function addLog($m){
80
+ $m .= date('l jS \of F Y h:i:s A')." - ".$m." \n\n ";
81
+ file_put_contents("rop.log",$m,FILE_APPEND);
82
+
83
+ }
84
+ public function addLocalization() {
85
+
86
+ load_plugin_textdomain('tweet-old-post', false, dirname(ROPPLUGINBASENAME).'/languages/');
87
+ }
88
+ function checkUsers(){
89
+ if(!is_array($this->users)) $this->users = array();
90
+ if(count($this->users) == 0){
91
+
92
+ self::addNotice(__("You have no account set to post !", 'tweet-old-post'),"error");
93
+ die();
94
+ }
95
+
96
+ }
97
+ public function startTweetOldPost( )
98
+ {
99
+ if(!is_admin()) return false;
100
+ $this->checkUsers();
101
+ if($this->pluginStatus !== 'true' ) {
102
+ do_action("rop_start_posting");
103
+ }
104
+ die();
105
+ }
106
+ public function startPosting(){
107
+
108
+ update_option('cwp_topnew_active_status', 'true');
109
+ update_option('top_opt_already_tweeted_posts',array());
110
+ update_option('top_last_tweets',array());
111
+ $timeNow = $this->getTime();
112
+ $timeNow = $timeNow+15;
113
+ // Added by Ash/Upwork for advanced scheduling
114
+ set_transient('top_firstpost_time', $timeNow, 15);
115
+ //error_log("first post time " . date("g:i:s A", $timeNow));
116
+ // Added by Ash/Upwork for advanced scheduling
117
+
118
+ $this->clearScheduledTweets();
119
+ $networks = $this->getAvailableNetworks();
120
+
121
+ foreach($networks as $network){
122
+ wp_schedule_single_event($timeNow,$network.'roptweetcron',array($network));
123
+ }
124
+
125
+ }
126
+
127
+ public function stopPosting(){
128
+
129
+ // Set it to inactive status
130
+ update_option('cwp_topnew_active_status', 'false');
131
+ update_option('cwp_topnew_notice', '');
132
+ update_option('top_opt_already_tweeted_posts',array());
133
+
134
+ // Clear all scheduled tweets
135
+ $this->clearScheduledTweets();
136
+ }
137
+ public function stopTweetOldPost()
138
+ {
139
+ if(!is_admin()) return false;
140
+ //echo $this->pluginStatus;
141
+ // If the plugin is active
142
+ if($this->pluginStatus !== 'false') {
143
+ do_action("rop_stop_posting");
144
+ }
145
+
146
+ die(); // Required for AJAX
147
+ }
148
+
149
+ public function getExcludedPosts($ntk=null) {
150
+
151
+ $postQueryPosts = "";
152
+ $postPosts = get_option('top_opt_excluded_post');
153
+
154
+ if(!empty($postPosts) && is_array($postPosts)) {
155
+ $postQueryPosts = implode(',',$postPosts);
156
+ }
157
+ else
158
+ $postQueryPosts = get_option('top_opt_excluded_post');
159
+
160
+ // Added by Ash/Upwork
161
+ if($ntk){
162
+ $excludePosts = get_option("cwp_top_exclude_from_" . $ntk);
163
+ if(!is_array($excludePosts)){
164
+ $excludePosts = array();
165
+ }
166
+ if(!is_array($postQueryPosts)){
167
+ $postQueryPosts = explode(",", $postQueryPosts);
168
+ }
169
+ if(!is_array($postQueryPosts)){
170
+ $postQueryPosts = array();
171
+ }
172
+ $postQueryPosts = array_merge($postQueryPosts, $excludePosts);
173
+ $postQueryPosts = implode(",", $postQueryPosts);
174
+ }
175
+ // Added by Ash/Upwork
176
+ return $postQueryPosts;
177
+
178
+ }
179
+
180
+ public function getTweetsFromDBbyID($id)
181
+ {
182
+ global $wpdb;
183
+ $query = "
184
+ SELECT * FROM {$wpdb->prefix}posts where ID = '{$id}'";
185
+ $returnedPost = $wpdb->get_results($query);
186
+ //echo $query;
187
+ return $returnedPost;
188
+ }
189
+
190
+ // Added by Ash/Upwork
191
+ /**
192
+ * This will get the postIDs for the particular network
193
+ */
194
+ private function getAlreadyTweetedPosts($ntk){
195
+ $array = array();
196
+ if(!$ntk) return $array;
197
+
198
+ $opt = get_option("top_opt_posts_buffer_" . $ntk, array());
199
+ if(!$opt || !is_array($opt)) return $array;
200
+
201
+ return $opt;
202
+ }
203
+
204
+ /**
205
+ * This will add the postID to the network buffer to note which post was posted on which network
206
+ */
207
+ public function setAlreadyTweetedPosts($ntk, $postID){
208
+ if(!$ntk || !$postID) return;
209
+ $opt = get_option("top_opt_posts_buffer_" . $ntk, array());
210
+ if(!$opt || !is_array($opt)){
211
+ $opt = array();
212
+ }
213
+ $opt[] = $postID;
214
+
215
+
216
+ update_option("top_opt_posts_buffer_" . $ntk, $opt);
217
+ }
218
+
219
+ /**
220
+ * This will clear the network buffer
221
+ */
222
+ private function clearAlreadyTweetedPosts($ntk){
223
+ if(!$ntk) return;
224
+ delete_option("top_opt_posts_buffer_" . $ntk);
225
+ }
226
+
227
+ /**
228
+ * This is a test method that will be fired on admin_init. Only to be used for testing.
229
+ * In production, this function will just return harmlessly
230
+ */
231
+ public function doTestAction(){
232
+ if(!ROP_IS_TEST) return;
233
+
234
+ $networks = array("twitter", "facebook", "linkedin", "tumblr");
235
+ $ntk = $networks[array_rand($networks)];
236
+ for($x = 0; $x < rand(0,5); $x++) $this->setAlreadyTweetedPosts($ntk, rand(0,100));
237
+ echo "<pre>network=".$ntk.print_r($this->getAlreadyTweetedPosts($ntk),true). "</pre>";
238
+ }
239
+
240
+ // Added by Ash/Upwork
241
+
242
+ public function getTweetsFromDB($ntk=null, $clearNetworkBuffer=false, $tweetCount=null)
243
+ {
244
+ global $wpdb;
245
+ $limit = 50;
246
+ // Generate the Tweet Post Date Range
247
+ $dateQuery = $this->getTweetPostDateRange();
248
+ if(!is_array($dateQuery)) return false;
249
+ // Get the number of tweets to be tweeted each interval.
250
+ if($tweetCount){
251
+ $limit = $tweetCount;
252
+ }else{
253
+ $tweetCount = intval(get_option('top_opt_no_of_tweet'));
254
+ }
255
+ if($tweetCount == 0 ) {
256
+ self::addNotice("Invalid number for Number of Posts to share. It must be a value greater than 0 ",'error');
257
+ return false;
258
+ }
259
+ // Get post categories set.
260
+ // $postQueryCategories = $this->getTweetCategories();
261
+ $excludedIds = "";
262
+ // Added by Ash/Upwork
263
+ $tweetedPosts = $this->getAlreadyTweetedPosts($ntk);
264
+ /*
265
+ $tweetedPosts = get_option("top_opt_already_tweeted_posts");
266
+ if(!is_array($tweetedPosts)) $tweetedPosts = array();
267
+
268
+ if (get_option('top_opt_tweet_multiple_times')=="on") {
269
+
270
+ $tweetedPosts = array();
271
+ }
272
+ */
273
+ $postQueryExcludedPosts = $this->getExcludedPosts($ntk);
274
+ $postQueryExcludedPosts = explode (',',$postQueryExcludedPosts);
275
+ $excluded = array_merge($tweetedPosts,$postQueryExcludedPosts);
276
+ $excluded = array_unique($excluded);
277
+ $excluded = array_filter($excluded);
278
+ $postQueryExcludedCategories = $this->getExcludedCategories();
279
+ $somePostType = $this->getTweetPostType();
280
+ // Generate dynamic query.
281
+ $query = "
282
+ SELECT {$wpdb->prefix}posts.ID
283
+ FROM {$wpdb->prefix}posts
284
+ LEFT JOIN {$wpdb->prefix}term_relationships ON ({$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id)
285
+ WHERE 1=1 ";
286
+
287
+ // Added by Ash/Upwork
288
+ if(array_key_exists("before", $dateQuery)){
289
+ $query .= "AND post_date >= '{$dateQuery['before']}' ";
290
+ }
291
+ if(array_key_exists("after", $dateQuery)){
292
+ $query .= "AND post_date <= '{$dateQuery['after']}' ";
293
+ }
294
+ // Added by Ash/Upwork
295
+
296
+ // If there are no categories set, select the post from all.
297
+ //if(!empty($postQueryCategories)) {
298
+ // $query .= "AND (wp_term_relationships.term_taxonomy_id IN ({$postQueryCategories})) ";
299
+ // }
300
+
301
+ if(!empty($postQueryExcludedCategories)) {
302
+ $query .= "AND ( {$wpdb->prefix}posts.ID NOT IN (
303
+ SELECT object_id
304
+ FROM {$wpdb->prefix}term_relationships
305
+ INNER JOIN {$wpdb->prefix}term_taxonomy ON ( {$wpdb->prefix}term_relationships.term_taxonomy_id = {$wpdb->prefix}term_taxonomy.term_taxonomy_id )
306
+ WHERE {$wpdb->prefix}term_taxonomy.term_id IN ({$postQueryExcludedCategories}))) ";
307
+ }
308
+
309
+ if(!empty($excluded)) {
310
+ $excluded = implode(',',$excluded);
311
+ $query .= "AND ( {$wpdb->prefix}posts.ID NOT IN ({$excluded})) ";
312
+ }
313
+ if(!empty($somePostType)){
314
+ $somePostType = explode(',',$somePostType);
315
+ $somePostType = "'".implode("','",$somePostType)."'";
316
+ }
317
+
318
+ // Added by Ash/Upwork
319
+ // Use a more efficient = condition than a costly IN condition if only one type is present
320
+ if(!empty($somePostType)){
321
+ if(strpos($somePostType, ",") !== FALSE){
322
+ $query .= "AND {$wpdb->prefix}posts.post_type IN ({$somePostType}) ";
323
+ }else{
324
+ $query .= "AND {$wpdb->prefix}posts.post_type = ({$somePostType}) ";
325
+ }
326
+ }
327
+ // Added by Ash/Upwork
328
+
329
+ $query .= "AND ({$wpdb->prefix}posts.post_status = 'publish')
330
+ GROUP BY {$wpdb->prefix}posts.ID ";
331
+ if(!ROP_IS_TEST){
332
+ $query .= "order by RAND() ";
333
+ }
334
+ $query .= "limit {$limit}";
335
+
336
+ $returnedPost = $wpdb->get_results( $query);
337
+
338
+ //self::addLog("rows " . count($returnedPost) . " from " . $query);
339
+
340
+ // Added by Ash/Upwork
341
+ // If the number of posts found is zero and a post can be shared multiple times, lets clear the buffer and fetch again
342
+ if($ntk && !$clearNetworkBuffer && count($returnedPost) == 0 && get_option('top_opt_tweet_multiple_times') == "on"){
343
+ //self::addLog("clearing for $ntk!!");
344
+ $this->clearAlreadyTweetedPosts($ntk);
345
+ return $this->getTweetsFromDB($ntk, true);
346
+ }
347
+ // Added by Ash/Upwork
348
+
349
+ if(count($returnedPost) > $tweetCount) {
350
+ $rand_keys = array_rand( $returnedPost, $tweetCount );
351
+
352
+ if ( is_int( $rand_keys ) ) {
353
+ $rand_keys = array( $rand_keys );
354
+ }
355
+ $return = array();
356
+
357
+ foreach ( $rand_keys as $rk ) {
358
+ $return[] = $returnedPost[ $rk ];
359
+ }
360
+ $returnedPost = $return;
361
+ if ( count( $returnedPost ) > $tweetCount ) {
362
+ $returnedPost = array_slice( $returnedPost, 0, $tweetCount );
363
+ }
364
+ }
365
+ $ids = array();
366
+ foreach($returnedPost as $rp){
367
+ $ids[] = $rp->ID;
368
+
369
+ }
370
+
371
+
372
+ $returnedPost = array();
373
+ if(!empty($ids))
374
+ $returnedPost = $wpdb->get_results("select * from {$wpdb->prefix}posts where ID in (".implode(",",$ids).") ");
375
+
376
+ return $returnedPost;
377
+
378
+ }
379
+ public function isPostWithImageEnabled ($ntk = "twitter") {
380
+ $options = get_option("top_opt_post_formats");
381
+ $format_fields = $this->getFormatFields();
382
+ $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") ;
383
+ if ($value !='on')
384
+ return false;
385
+ else
386
+ return true;
387
+ }
388
+ public function getUsers(){
389
+ $users = apply_filters("rop_users_filter",get_option('cwp_top_logged_in_users'));
390
+ return is_array($users) ? $users : array();
391
+
392
+
393
+ }
394
+ public function checkNetworkLock($ntk){
395
+ if ( wp_using_ext_object_cache() ) {
396
+ $value = wp_cache_get( $ntk.'roplock', 'transient', true );
397
+ return ( false !== $value) ;
398
+ } else {
399
+
400
+
401
+ return (false !== ( $value = get_transient( $ntk.'roplock' ) ));
402
+ }
403
+
404
+
405
+
406
+
407
+ }
408
+ public function setNetworkLock($ntk){
409
+ if ( wp_using_ext_object_cache() ) {
410
+ wp_cache_set( $ntk.'roplock', "lock", 'transient', 5 * MINUTE_IN_SECONDS );
411
+ } else {
412
+ set_transient( $ntk.'roplock' , "lock",5 * MINUTE_IN_SECONDS);
413
+ }
414
+
415
+ }
416
+ public function deleteNetworkLock($ntk){
417
+ if ( wp_using_ext_object_cache() ) {
418
+ wp_cache_delete($ntk.'roplock','transient');
419
+ } else {
420
+ delete_transient($ntk.'roplock');
421
+ }
422
+
423
+ }
424
+
425
+ public function tweetOldPost($ntk = "",$byID = false)
426
+
427
+ {
428
+ if ( $this->checkNetworkLock($ntk) && $byID === false ) return false;
429
+
430
+
431
+ $this->setNetworkLock($ntk);
432
+ if ($byID!==false) {
433
+
434
+ $returnedPost = $this->getTweetsFromDBbyID($byID);
435
+ }else{
436
+ $returnedPost = $this->getTweetsFromDB($ntk);
437
+ if(!is_array($returnedPost)) return false;
438
+ }
439
+ if (count($returnedPost) == 0 ) {
440
+ self::addNotice(__('There is no suitable post to tweet make sure you excluded correct categories and selected the right dates.','tweet-old-post'),'error');
441
+ }
442
+ $users = $this->getUsers();
443
+ foreach($returnedPost as $post){
444
+ $oknet = false;
445
+ foreach($users as $u){
446
+ if($u['service'] == $ntk){
447
+ $oknet = true;
448
+ break;
449
+ }
450
+ }
451
+ if(!$oknet) return false;
452
+ $finalTweet = $this->generateTweetFromPost($post,$ntk);
453
+ $this->tweetPost( $finalTweet, $ntk, $post );
454
+ $this->setAlreadyTweetedPosts($ntk, $post->ID);
455
+ }
456
+ if ($byID===false) {
457
+ $this->scheduleTweet($ntk);
458
+ }
459
+
460
+
461
+ $this->deleteNetworkLock($ntk);
462
+ }
463
+
464
+ public function scheduleTweet($ntk){
465
+ $time = $this->getNextTweetTime( $ntk );
466
+
467
+ if($time != 0 && $time > $this->getTime()){
468
+ if(wp_next_scheduled( $ntk.'roptweetcron',array($ntk) ) === false) {
469
+ wp_schedule_single_event( $time, $ntk . 'roptweetcron', array( $ntk ) );
470
+ }
471
+ }else{
472
+ self::addNotice(__("Invalid next schedule: ",'tweet-old-post').date ( 'M j, Y @ G:i',$time),'error');
473
+ }
474
+ }
475
+ public function getAvailableNetworks(){
476
+ $networks = array();
477
+ $users = is_array($this->users) ? $this->users : array();
478
+ foreach($users as $u){
479
+ if(!in_array($u['service'],$networks))
480
+ $networks[] = $u['service'];
481
+ }
482
+
483
+ return $networks;
484
+ }
485
+
486
+ public function getAllNetworks($all = false){
487
+ global $cwp_rop_all_networks;
488
+ if(empty($cwp_rop_all_networks)) return array();
489
+
490
+ return ($all) ? $cwp_rop_all_networks : array_keys($cwp_rop_all_networks);
491
+ }
492
+ public function findInString($where,$what) {
493
+ if (!is_string($where)) {
494
+ return false;
495
+ }
496
+ else
497
+ return strpos($where,$what);
498
+ }
499
+
500
+ public function getNotice() {
501
+ if(!is_admin()) return false;
502
+ $notice = get_option('rop_notice_active');
503
+ if(!is_array($notice)) $notice = array();
504
+
505
+ foreach($notice as $k=>$n){
506
+ $notice[$k]['message'] = strip_tags($n['message']);
507
+ }
508
+ echo json_encode($notice);
509
+ die();
510
+ }
511
+
512
+ public function tweetNow() {
513
+ if(!is_admin()) return false;
514
+ $networks = $this->getAvailableNetworks();
515
+ foreach($networks as $net){
516
+
517
+ $this->tweetOldPost($net,get_option('top_lastID'));
518
+ }
519
+ die();
520
+ }
521
+
522
+ public function viewSampleTweet()
523
+ {
524
+
525
+ if(!is_admin()) return false;
526
+ $returnedTweets = $this->getTweetsFromDB();
527
+
528
+ $messages = array();
529
+ $networks = $this->getAvailableNetworks();
530
+
531
+ if(count($returnedTweets) == 0) {
532
+ foreach($networks as $net){
533
+ $messages[$net] = __("No posts to share",'tweet-old-post');
534
+ }
535
+ $networks = array();
536
+ }
537
+ foreach($networks as $n) {
538
+
539
+ $finalTweetsPreview = $this->generateTweetFromPost($returnedTweets[0],$n);
540
+ if (is_array($finalTweetsPreview)){
541
+ $finalTweetsPreview = $finalTweetsPreview['message']." ".$finalTweetsPreview['link'];
542
+ }
543
+ $messages[$n] = $finalTweetsPreview;
544
+ }
545
+ if(isset($returnedTweets[0]))
546
+ update_option( 'top_lastID', $returnedTweets[0]->ID);
547
+
548
+ foreach($networks as $n) {
549
+ $image = $this->getImageForPost($n, $returnedTweets[0]->ID);
550
+ if(!empty($image)){
551
+ $messages[$n] = '<img class="top_preview" src="'.$image.'"/>'.$messages[$n];
552
+ }
553
+ }
554
+
555
+ echo json_encode($messages);
556
+
557
+
558
+ die(); // required
559
+ }
560
+
561
+ // Added by Ash/Upwork
562
+ function sortPosts($all){
563
+ uasort($all, array($this, "sortPostsByTimeDesc"));
564
+ return $all;
565
+ }
566
+
567
+ function sortPostsByTimeDesc($x, $y){
568
+ if($x["time"] == $y["time"]) return 0;
569
+
570
+ return $x["time"] < $y["time"] ? -1 : 1;
571
+ }
572
+
573
+ function getImageForPost($n, $postID){
574
+ if (ROP_IS_TEST || (CWP_TOP_PRO && $this->isPostWithImageEnabled($n))) {
575
+ if(defined('ROP_PRO_VERSION')){
576
+ global $CWP_TOP_Core_PRO;
577
+ $image = $CWP_TOP_Core_PRO->getPostImage($postID, $n);
578
+
579
+ }else {
580
+ if ( has_post_thumbnail($postID) ) :
581
+
582
+ $image_array = wp_get_attachment_image_src( get_post_thumbnail_id($postID) );
583
+
584
+ $image = $image_array[0];
585
+ else :
586
+ $post = get_post($postID);
587
+ $image = '';
588
+ ob_start();
589
+ ob_end_clean();
590
+ $output = preg_match_all( '/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches );
591
+ if(isset($matches [1] [0]))
592
+ $image = $matches [1] [0];
593
+
594
+ endif;
595
+ }
596
+
597
+ $top_opt_saved_images = get_option("top_opt_saved_images");
598
+ if($top_opt_saved_images && is_array($top_opt_saved_images) && in_array($postID, $top_opt_saved_images)){
599
+ $imageID = get_post_meta($postID, "top_opt_saved_post_image_" . $n, true);
600
+ if($imageID){
601
+ $image = wp_get_attachment_url($imageID);
602
+ }
603
+ }
604
+
605
+ if(!empty($image)){
606
+ return '<img class="top_preview" src="'.$image.'"/>';
607
+ }
608
+ }
609
+ return null;
610
+ }
611
+
612
+ function getFutureTime($network_name, $time, $array){
613
+ $firstPostTime = get_transient('top_firstpost_time');
614
+ if($firstPostTime !== false){
615
+ delete_transient('top_firstpost_time');
616
+ return $firstPostTime;
617
+ }
618
+
619
+ if(array_key_exists("time", $array)){
620
+ $time = $array["time"];
621
+ }else{
622
+ $time = CWP_TOP_Core::getNextTweetTime($network_name, $time ? $time : $this->getTime());
623
+ }
624
+ return $time;
625
+ }
626
+ // Added by Ash/Upwork
627
+
628
+ /**
629
+ * Returns if the post is already tweeted
630
+ * @param [type] $postId Post ID
631
+ * @return boolean True if not already tweeted / False if already tweeted
632
+ */
633
+
634
+ public function isNotAlreadyTweeted($postId) {
635
+ // Get all already tweeted posts
636
+
637
+ $tweetedPosts = get_option("top_opt_already_tweeted_posts");
638
+
639
+ if (!$tweetedPosts) {
640
+ add_option("top_opt_already_tweeted_posts");
641
+ return true;
642
+ }
643
+
644
+ // If the new post ID is in the array, which means that is already tweeted
645
+ if (!empty($tweetedPosts) && is_array($tweetedPosts) ) {
646
+
647
+ if (in_array($postId, $tweetedPosts))
648
+ return false;
649
+ else
650
+ return true;
651
+ }
652
+ else
653
+ {
654
+ return true;
655
+ }
656
+ }
657
+
658
+ public function getStrLen($string) {
659
+ // multibyte string support for multibyte strings: DO NOT REMOVE
660
+ if (function_exists("mb_strlen"))
661
+ return mb_strlen($string);
662
+ else
663
+ return strlen($string);
664
+ }
665
+
666
+ public function ropSubstr($string,$nr1,$nr2 ) {
667
+ // multibyte string support for multibyte strings: DO NOT REMOVE
668
+ if (function_exists("mb_substr")) {
669
+ return mb_substr($string, $nr1,$nr2);
670
+ } else {
671
+ return substr($string, $nr1, $nr2);
672
+ }
673
+ }
674
+
675
+ /**
676
+ * Author Daniel Brown (contact info at http://ymb.tc/contact)
677
+ * Includes hashtag in $tweet_content if possible
678
+ * to save space, avoid redundancy, and allow more hashtags
679
+ * @param [string] $tweetContent The regular text in the Tweet
680
+ * @param [string] $hashtag The hashtag to include in $tweetContent, if possible
681
+ * @return [mixed] The new $tweetContent or FALSE if the $tweetContent doesn't contain the hashtag
682
+ */
683
+
684
+ public function tweetContentHashtag ($tweetContent, $hashtag) {
685
+ $location = stripos($tweetContent, ' ' . $hashtag . ' ');
686
+ if ( $location !== false ) $location++; // the actual # location will be past the space
687
+ elseif ( stripos($tweetContent, $hashtag . ' ') === 0 ) { // see if the hashtag is at the beginning
688
+ $location = 0;
689
+ }
690
+ elseif ( stripos($tweetContent, ' ' . $hashtag) + strlen(' ' . $hashtag) == strlen($tweetContent) ) { // see if the hashtag is at the end
691
+ $location = stripos($tweetContent, ' ' . $hashtag) + 1;
692
+ }
693
+ if ( $location !== false ) {
694
+ return substr_replace($tweetContent, '#', $location, 0);
695
+ }
696
+ else return false;
697
+ }
698
+
699
+ /**
700
+ * Generates the tweet based on the user settings
701
+ * @param [type] $postQuery Returned post from database
702
+ * @return [type] Generated Tweet
703
+ */
704
+
705
+ public function generateTweetFromPost($postQuery, $network, $fromManageQueue=false)
706
+ {
707
+
708
+ $format_fields = $this->getFormatFields();
709
+ $tweetedPosts = get_option("top_opt_already_tweeted_posts");
710
+ $formats = get_option('top_opt_post_formats');
711
+ $tweet_content = isset($formats[$network."_"."top_opt_tweet_type"]) ? $formats[$network."_"."top_opt_tweet_type"] : get_option( 'top_opt_tweet_type' );
712
+ $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' );
713
+ $additional_text = isset($formats[$network."_"."top_opt_add_text"]) ? $formats[$network."_"."top_opt_add_text"] : get_option( 'top_opt_tweet_type_custom_field' );
714
+ $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' );
715
+ $max_length = isset($formats[$network."_"."top_opt_tweet_length"]) ? $formats[$network."_"."top_opt_tweet_length"] : $format_fields[$network]['top_opt_tweet_length']['default_value'];
716
+ $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' );
717
+ $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' );
718
+ $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' );
719
+ $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' );
720
+ $url_shortner_service = isset($formats[$network."_"."top_opt_url_shortner"]) ? $formats[$network."_"."top_opt_url_shortner"] : get_option( 'top_opt_url_shortner' );
721
+ $hashtags = isset($formats[$network."_"."top_opt_custom_hashtag_option"]) ? $formats[$network."_"."top_opt_custom_hashtag_option"] : get_option( 'top_opt_custom_hashtag_option' );
722
+ $common_hashtags = isset($formats[$network."_"."top_opt_hashtags"]) ? $formats[$network."_"."top_opt_hashtags"] : get_option( 'top_opt_hashtags' );
723
+ $maximum_hashtag_length = isset($formats[$network."_"."top_opt_hashtag_length"]) ? $formats[$network."_"."top_opt_hashtag_length"] : get_option( 'top_opt_hashtag_length' );
724
+ $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' );
725
+ $bitly_key = isset($formats[$network."_"."top_opt_bitly_key"]) ? $formats[$network."_"."top_opt_bitly_key"] : get_option( 'top_opt_bitly_key' );
726
+ $bitly_user = isset($formats[$network."_"."top_opt_bitly_user"]) ? $formats[$network."_"."top_opt_bitly_user"] : get_option( 'top_opt_bitly_user' );
727
+ $post_with_image = isset($formats[$network."_". 'top_opt_post_with_image']) ? $formats[$network."_". 'top_opt_post_with_image'] : get_option( 'top_opt_bitly_user' );
728
+ $ga_tracking = get_option( 'top_opt_ga_tracking' );
729
+ $additionalTextBeginning = "";
730
+ $additionalTextEnd = "";
731
+
732
+ // If the user set to not use hashtags, set it to empty variable.
733
+ if ( $hashtags == 'nohashtag' ) {
734
+ $newHashtags = "";
735
+ }
736
+ // Generate the tweet content.
737
+ switch ( $tweet_content ) {
738
+ case 'title':
739
+ $tweetContent = $postQuery->post_title;
740
+ break;
741
+ case 'body':
742
+ $tweetContent = get_post_field( 'post_content', $postQuery->ID );
743
+ break;
744
+ case 'titlenbody':
745
+ $tweetContent = $postQuery->post_title . " " . get_post_field( 'post_content', $postQuery->ID );
746
+ break;
747
+ case 'custom-field':
748
+ $tweetContent = get_post_meta( $postQuery->ID, $tweet_content_custom_field, true );
749
+ break;
750
+ default:
751
+ $tweetContent = "";
752
+ break;
753
+ }
754
+ // Trim new empty lines.
755
+ if(!is_string($tweetContent)) $tweetContent = '';
756
+ $tweetContent = strip_tags( html_entity_decode( $tweetContent,ENT_QUOTES ) );
757
+ //$tweetContent = esc_html($tweetContent);
758
+ //$tweetContent = esc_html($tweetContent);
759
+ //$tweetContent = trim(preg_replace('/\s+/', ' ', $tweetContent));
760
+ // Remove html entinies.
761
+ //$tweetContent = preg_replace("/&#?[a-z0-9]+;/i","", $tweetContent);
762
+ // Strip all shortcodes from content.
763
+ $tweetContent = strip_shortcodes( $tweetContent );
764
+ $fTweet = array();
765
+ $post_url = get_permalink( $postQuery->ID );
766
+ // Generate the post link.
767
+ if ( $include_link == 'true' ) {
768
+ if ( $fetch_url_from_custom_field == 'on' ) {
769
+ //$post_url = preg_replace('/https?:\/\/[^\s"<>]+/', '$0', );
770
+ preg_match_all('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', get_post_meta( $postQuery->ID, $custom_field_url, true ), $match);
771
+ if(isset($match[0])){
772
+ if(isset($match[0][0]))
773
+ $post_url = $match[0][0];
774
+ }
775
+ } else {
776
+ $post_url = "" . get_permalink( $postQuery->ID );
777
+ }
778
+ if ( $post_url == "" ) {
779
+ $post_url = "" . get_permalink( $postQuery->ID );
780
+ }
781
+ if ( $ga_tracking == "on" ) {
782
+ $param = 'utm_source=ReviveOldPost&utm_medium=social&utm_campaign=ReviveOldPost';
783
+ $post_url = rtrim( $post_url );
784
+ if ( strpos( $post_url, "?" ) === false ) {
785
+ $post_url .= '?' . $param;
786
+ } else {
787
+ $post_url .= '&' . $param;
788
+ }
789
+ }
790
+ if ( $use_url_shortner == 'on' ) {
791
+ if ($fromManageQueue) {
792
+ // Added by Ash/Upwork so that the pro version can use this to generate the shortened url when required
793
+ update_post_meta($postQuery->ID, "rop_post_url_" . $network, $post_url);
794
+ // Added by Ash/Upwork
795
+ }
796
+ // $fromManageQueue Added by Ash/Upwork
797
+ $post_url = "" . self::shortenURL( $post_url, $url_shortner_service, $postQuery->ID, $bitly_key, $bitly_user, $fromManageQueue );
798
+ // $fromManageQueue Added by Ash/Upwork
799
+ }
800
+ if ( $post_url == "" ) {
801
+ $post_url = "" . get_permalink( $postQuery->ID );
802
+ }
803
+ $post_url = $post_url . "";
804
+ } else {
805
+ $post_url = "";
806
+ }
807
+ // Generate the hashtags
808
+ $newHashtags = "";
809
+ if ( $hashtags != 'nohashtag' ) {
810
+ switch ( $hashtags ) {
811
+ case 'common':
812
+ $newHashtags = $common_hashtags;
813
+ break;
814
+ case 'categories':
815
+ if ( $postQuery->post_type == "post" ) {
816
+ $postCategories = get_the_category( $postQuery->ID );
817
+ foreach ( $postCategories as $category ) {
818
+ $thisHashtag = $category->slug;
819
+ if ( $this->tweetContentHashtag($tweetContent, $thisHashtag) !== false ) { // if the hashtag exists in $tweetContent
820
+ $tweetContent = $this->tweetContentHashtag($tweetContent, $thisHashtag); // simply add a # there
821
+ $maximum_hashtag_length--; // subtract 1 for the # we added to $tweetContent
822
+ }
823
+ elseif ( strlen( $thisHashtag . $newHashtags ) <= $maximum_hashtag_length || $maximum_hashtag_length == 0 ) {
824
+ $newHashtags = $newHashtags . " #" . preg_replace( '/-/', '', strtolower( $thisHashtag ) );
825
+ }
826
+ }
827
+ } else {
828
+ if ( CWP_TOP_PRO ) {
829
+ global $CWP_TOP_Core_PRO;
830
+ $newHashtags = $CWP_TOP_Core_PRO->topProGetCustomCategories( $postQuery, $maximum_hashtag_length );
831
+ }
832
+ }
833
+ break;
834
+ case 'tags':
835
+ $postTags = wp_get_post_tags( $postQuery->ID );
836
+ foreach ( $postTags as $postTag ) {
837
+ $thisHashtag = $postTag->slug;
838
+ if ( $this->tweetContentHashtag($tweetContent, $thisHashtag) !== false ) { // if the hashtag exists in $tweetContent
839
+ $tweetContent = $this->tweetContentHashtag($tweetContent, $thisHashtag); // simply add a # there
840
+ $maximum_hashtag_length--; // subtract 1 for the # we added to $tweetContent
841
+ }
842
+ elseif ( strlen( $thisHashtag . $newHashtags ) <= $maximum_hashtag_length || $maximum_hashtag_length == 0 ) {
843
+ $newHashtags = $newHashtags . " #" . preg_replace( '/-/', '', strtolower( $thisHashtag ) );
844
+ }
845
+ }
846
+ break;
847
+ case 'custom':
848
+ $newHashtags = get_post_meta( $postQuery->ID, $hashtag_custom_field, true );
849
+ if($maximum_hashtag_length != 0){
850
+ if(strlen( $newHashtags ) <= $maximum_hashtag_length)
851
+ {
852
+ $newHashtags = $this->ropSubstr($newHashtags,0,$maximum_hashtag_length);
853
+ }
854
+ }
855
+ break;
856
+ default:
857
+ break;
858
+ }
859
+ }
860
+ // Generate the additional text
861
+ if ( $additional_text_at == 'beginning' ) {
862
+ $additionalTextBeginning = $additional_text . " ";
863
+ }
864
+ if ( $additional_text_at == 'end' ) {
865
+ $additionalTextEnd = " " . $additional_text;
866
+ }
867
+
868
+ $fTweet['link'] = $post_url;
869
+ $adTextELength = 0;
870
+ if(is_string($additionalTextEnd)){
871
+ $adTextELength = $this->getStrLen($additionalTextEnd);
872
+ }
873
+ $adTextBLength = 0;
874
+ if(is_string($additionalTextBeginning)){
875
+ $adTextBLength = $this->getStrLen($additionalTextBeginning);
876
+ }
877
+ $hashLength = 0;
878
+ if(is_string($newHashtags) && $network != 'tumblr'){
879
+ $hashLength = $this->getStrLen($newHashtags);
880
+ }
881
+ $finalTweetSize = $max_length - $hashLength - $adTextELength - $adTextBLength ;
882
+ if($network == 'twitter' && !empty($fTweet['link']) ){
883
+ $finalTweetSize = $finalTweetSize - 25;
884
+
885
+
886
+ }
887
+ if($network == 'twitter' && CWP_TOP_PRO && $this->isPostWithImageEnabled($network)){
888
+ $finalTweetSize = $finalTweetSize - 25;
889
+ }
890
+ $tweetContent = $this->ropSubstr( $tweetContent,0,$finalTweetSize);
891
+ if($network == 'twitter'){
892
+ if(!empty($fTweet['link'])) $fTweet['link'] = " ".$fTweet['link']." ";
893
+
894
+ $finalTweet = $additionalTextBeginning . $tweetContent .$fTweet['link'].$newHashtags . $additionalTextEnd;
895
+ $fTweet['link'] = '';
896
+ $finalTweet = preg_replace('/\s+/', ' ', trim( $finalTweet));
897
+
898
+ }else{
899
+ if($network === 'tumblr') {
900
+ $fTweet['tags'] = implode(",",array_filter(explode("#", $newHashtags)));
901
+ $finalTweet = $additionalTextBeginning . $tweetContent . $additionalTextEnd;
902
+ }else{
903
+ $finalTweet = $additionalTextBeginning . $tweetContent .$newHashtags . $additionalTextEnd;
904
+ }
905
+ }
906
+
907
+ // Added by Ash/Upwork
908
+ $top_opt_saved_posts = get_option("top_opt_saved_posts");
909
+ if($top_opt_saved_posts && is_array($top_opt_saved_posts) && in_array($postQuery->ID, $top_opt_saved_posts)){
910
+ $newContent = get_post_meta($postQuery->ID, "top_opt_saved_post_content_" . $network, true);
911
+ if($newContent){
912
+ $finalTweet = $newContent;
913
+ }
914
+ }
915
+ // Added by Ash/Upwork
916
+
917
+ $fTweet['message'] = $finalTweet ;
918
+
919
+ return $fTweet;
920
+ }
921
+
922
+ /**
923
+ * Tweets the returned post from generateTweetFromPost()
924
+ * @param [type] $finalTweet Generated tweet
925
+ */
926
+
927
+ public function tweetPost($finalTweet,$network = 'twitter',$post)
928
+ {
929
+ // Added by Ash/Upwork
930
+ if(ROP_IS_TEST){
931
+ self::addLog("Not posting because ROP_IS_TEST is set");
932
+ return;
933
+ }
934
+ // Added by Ash/Upwork
935
+
936
+ $users = $this->getUsers();
937
+ foreach ($users as $user) {
938
+ if($network == $user['service'] ){
939
+
940
+ switch ($user['service']) {
941
+ case 'twitter':
942
+ // Create a new twitter connection using the stored user credentials.
943
+ $connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
944
+ $args = array('status' => $finalTweet['message'].$finalTweet['link']);
945
+ $response = false;
946
+ //self::addNotice(strlen($args["status"]),"error");
947
+ if($this->isPostWithImageEnabled($network) && CWP_TOP_PRO) {
948
+ global $CWP_TOP_Core_PRO;
949
+
950
+
951
+ if(defined('ROP_IMAGE_CHECK')){
952
+ $args = $CWP_TOP_Core_PRO->topProImage( $connection, $finalTweet, $post->ID, $network );
953
+ // Added by Ash/Upwork: !empty($args['media[]'])
954
+ if ( isset( $args['media[]'] ) && !empty($args['media[]'])) {
955
+ $image = array("media"=>$args['media[]']);
956
+ $response = $connection->upload( 'https://upload.twitter.com/1.1/media/upload.json', $image );
957
+ unset($args['media[]']);
958
+ $args["media_ids"] = $response->media_id_string;
959
+ $response = $connection->post( 'statuses/update', $args );
960
+ } else {
961
+ $response = $connection->post( 'statuses/update', $args );
962
+ }
963
+ }else{
964
+ $response = $CWP_TOP_Core_PRO->topProImage( $connection, $finalTweet['message']. " " .$finalTweet['link'], $post->ID, $network );
965
+ }
966
+ }else{
967
+
968
+ $response = $connection->post('statuses/update',$args);
969
+ }
970
+
971
+ if($response !== false){
972
+ $status = '';
973
+ if(!is_object($response))
974
+ $status = json_decode($response);
975
+ if(!is_object($status)){
976
+
977
+ // self::addNotice("Error for post ".$post->post_title." when sending to Twitter: Invalid response - ".$response,'error');
978
+
979
+ }
980
+ else{
981
+
982
+ if($status->errors[0]->code != 200) {
983
+ // self::addNotice("Error for post ".$post->post_title." when sending to Twitter: ".$status->errors[0]->message,'error');
984
+
985
+
986
+ }
987
+ else{
988
+
989
+ }
990
+ }
991
+ if($connection->http_code == 200 ){
992
+ self::addNotice("Post ".$post->post_title." has been successfully sent to Twitter.",'notice');
993
+
994
+ }
995
+ }
996
+ break;
997
+ case 'facebook':
998
+
999
+ $args = array(
1000
+
1001
+ 'body' => array( 'message' => $finalTweet['message'],'link' => $finalTweet['link']),
1002
+ 'timeout'=>20
1003
+
1004
+ );
1005
+ if($this->isPostWithImageEnabled($network) && CWP_TOP_PRO){
1006
+ global $CWP_TOP_Core_PRO;
1007
+ if(defined('ROP_IMAGE_CHECK'))
1008
+ $args = $CWP_TOP_Core_PRO->topProImage($connection, $finalTweet, $post->ID,$network);
1009
+ }
1010
+
1011
+ $pp=wp_remote_post("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/".$user['id']."/feed?access_token=".$user['oauth_token'],$args);
1012
+ if(is_wp_error( $pp )){
1013
+ self::addNotice(__("Error for posting on facebook for:",'tweet-old-post')." ".$post->post_title."".$pp->get_error_message(),'error' );
1014
+
1015
+ }else{
1016
+ if($pp['response']['code'] == 200){
1017
+
1018
+ self::addNotice(sprintf(__("Post %s has been successfully sent to facebook",'tweet-old-post'), $post->post_title),'notice');
1019
+ }else{
1020
+ self::addNotice(__("Error for facebook share on post ",'tweet-old-post'). $post->post_title." ".$pp['response']['message']." @".$user['oauth_user_details']->name,'error');
1021
+
1022
+ }
1023
+
1024
+ }
1025
+
1026
+ break;
1027
+
1028
+ case 'linkedin':
1029
+
1030
+ $lk_message = str_replace("&", "&amp;",$finalTweet['message']);
1031
+ $sharedLink = str_replace("&", "&amp;",$finalTweet['link']);
1032
+ $content_xml = "";
1033
+ $visibility="anyone";
1034
+ $content_xml.="<content><title>".$lk_message."</title><submitted-url>".$sharedLink."</submitted-url></content>";
1035
+ $url = 'https://api.linkedin.com/v1/people/~/shares?oauth2_access_token='.$user["oauth_token"];
1036
+
1037
+
1038
+ $xml = '<?xml version="1.0" encoding="UTF-8"?><share>
1039
+ ' . $content_xml . '
1040
+ <visibility>
1041
+ <code>' . $visibility . '</code>
1042
+ </visibility>
1043
+ </share>';
1044
+ $headers = array(
1045
+ "Content-type: text/xml",
1046
+ "Content-length: " . strlen($xml),
1047
+ "Connection: close",
1048
+ );
1049
+
1050
+ if (!function_exists('curl_version'))
1051
+ self::addNotice(__("Your host does not support CURL",'tweet-old-post'),'error');
1052
+ $ch = curl_init();
1053
+ curl_setopt($ch, CURLOPT_URL,$url);
1054
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1055
+ curl_setopt($ch, CURLOPT_TIMEOUT, 10);
1056
+ curl_setopt($ch, CURLOPT_POST, true);
1057
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
1058
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
1059
+
1060
+ $data = curl_exec($ch);
1061
+
1062
+
1063
+ if(curl_errno($ch))
1064
+ {
1065
+
1066
+ self::addNotice("Curl error: ". curl_error($ch),'error');
1067
+ }
1068
+ else{
1069
+ self::addNotice("Post ". $post->post_title." has been successfully sent to LinkedIN.",'notice');
1070
+ curl_close($ch);
1071
+ }
1072
+ break;
1073
+ default:
1074
+ if(CWP_TOP_PRO){
1075
+ global $CWP_TOP_Core_PRO;
1076
+ if(method_exists($CWP_TOP_Core_PRO,"tweetPostPro")){
1077
+ $CWP_TOP_Core_PRO->tweetPostPro($finalTweet,$network ,$post,$user);
1078
+ }
1079
+
1080
+ }
1081
+
1082
+ break;
1083
+
1084
+
1085
+
1086
+ }
1087
+
1088
+ }
1089
+
1090
+ }
1091
+ }
1092
+ public function getRestrictedShowFields(){
1093
+
1094
+ global $cwp_rop_restricted_show;
1095
+ return $cwp_rop_restricted_show;
1096
+ }
1097
+ public function system_info(){
1098
+
1099
+ global $wpdb;
1100
+ $restricted = $this->getRestrictedShowFields();
1101
+
1102
+ if(CWP_TOP_PRO){
1103
+
1104
+ $pro = get_plugin_data(ROPPROPLUGINPATH."/tweet-old-post-pro.php");
1105
+ }
1106
+ $lite = get_plugin_data(ROPPLUGINPATH."/tweet-old-post.php");
1107
+ if ( get_bloginfo( 'version' ) < '3.4' ) {
1108
+ $theme_data = get_theme_data( get_stylesheet_directory() . '/style.css' );
1109
+ $theme = $theme_data['Name'] . ' ' . $theme_data['Version'];
1110
+ } else {
1111
+ $theme_data = wp_get_theme();
1112
+ $theme = $theme_data->Name . ' ' . $theme_data->Version;
1113
+ }
1114
+
1115
+ // Try to identifty the hosting provider
1116
+ $host = false;
1117
+ if( defined( 'WPE_APIKEY' ) ) {
1118
+ $host = 'WP Engine';
1119
+ } elseif( defined( 'PAGELYBIN' ) ) {
1120
+ $host = 'Pagely';
1121
+ }
1122
+
1123
+ ?>
1124
+ <div class="wrap">
1125
+ <h2><?php _e( 'System Information', 'tweet-old-post'); ?></h2><br/>
1126
+ <form action="" method="post" dir="ltr">
1127
+ <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' ); ?>">
1128
+
1129
+ ## Please include this information when posting support requests ##
1130
+
1131
+ ## BEGIN ROP CONFIGS ##
1132
+
1133
+ <?php
1134
+ $options = $this->getPostFormatValues();
1135
+ $cwp_top_global_schedule = $this->getSchedule();
1136
+ $cwp_rop_all_networks = $this->getFormatFields();
1137
+ echo "## ROP POST FORMAT";
1138
+ foreach($cwp_rop_all_networks as $n=>$d){
1139
+ echo "\n \n \n ##".$n." \n \n \n";
1140
+
1141
+
1142
+
1143
+
1144
+ foreach($d as $fname => $f){
1145
+ if(!in_array($fname,$restricted))
1146
+ echo $f['name']. " : ". $options[$n."_".$f['option']]." \n";
1147
+ }
1148
+
1149
+ }
1150
+ ?>
1151
+
1152
+ ## END ROP CONFIGS ##
1153
+
1154
+
1155
+ ## Begin Remote Data
1156
+
1157
+ Beta User: <?php echo $this->getBetaUserStatus(); ?><?php echo "\n"; ?>
1158
+ Remote Check: <?php echo $this->getRemoteCheck(); ?><?php echo "\n"; ?>
1159
+
1160
+ ## End Remote Data
1161
+
1162
+
1163
+
1164
+ ## Begin CRON Info
1165
+
1166
+ CRON Active: <?php echo (defined("DISABLE_WP_CRON") ? ((DISABLE_WP_CRON) ? "no" : "yes") : "yes" ); ?><?php echo "\n"; ?>
1167
+ Alternate WP Cron: <?php echo defined("ALTERNATE_WP_CRON") ? ((ALTERNATE_WP_CRON) ? "yes" : "no" ) : "no"; ?><?php echo "\n";
1168
+
1169
+ ?>
1170
+ Time now: <?php echo date ( 'M j, Y @ G:i',time()); ?> <?php echo "\n"; ?>
1171
+ ROP Crons:
1172
+ <?php
1173
+ $all = $this->getAllNetworks();
1174
+ foreach($all as $nn ){
1175
+ if(wp_next_scheduled($nn.'roptweetcron',array($nn)) === false) continue;
1176
+ echo date ( 'M j, Y @ G:i', wp_next_scheduled($nn.'roptweetcron',array($nn)) );
1177
+ }
1178
+
1179
+ ?>
1180
+
1181
+ ## End Cron Info
1182
+
1183
+ ##Begin General Settings:
1184
+
1185
+ <?php
1186
+ $cwp_top_fields = $this->getGeneralFields();
1187
+ foreach($cwp_top_fields as $general_field){
1188
+ echo $general_field['name']. " : ";
1189
+ if(is_array(get_option($general_field['option'])))
1190
+ echo implode(",",get_option($general_field['option']))." \n" ;
1191
+ else
1192
+ echo get_option($general_field['option'])." \n";
1193
+ }
1194
+ ?>
1195
+
1196
+ ##End General Settings
1197
+
1198
+
1199
+ <?php
1200
+ if(CWP_TOP_PRO):?>
1201
+ ##Begin Custom schedule settings:
1202
+
1203
+ <?php foreach($all as $a) {
1204
+
1205
+ if( $cwp_top_global_schedule[$a.'_schedule_type_selected'] == 'each')
1206
+ {
1207
+ echo strtoupper($a)." post on every ".$cwp_top_global_schedule[$a.'_top_opt_interval']." hours"." \n" ;
1208
+ }else{
1209
+ echo strtoupper($a)." post each ".$cwp_top_global_schedule[$a.'_top_opt_interval']['days']." days of the week at: "." \n" ;
1210
+ foreach($cwp_top_global_schedule[$a.'_top_opt_interval']['times'] as $time){
1211
+ echo ''.$time['hour']." : ".$time['minute']." \n " ;
1212
+
1213
+
1214
+ }
1215
+ }
1216
+ ?>
1217
+ <?php } ?>
1218
+
1219
+ ##End Custom schedule settings
1220
+ <?php endif;
1221
+ ?>
1222
+
1223
+ ### Begin System Info ###
1224
+
1225
+
1226
+ Multisite: <?php echo is_multisite() ? 'Yes' . "\n" : 'No' . "\n" ?>
1227
+
1228
+ SITE_URL: <?php echo site_url() . "\n"; ?>
1229
+ HOME_URL: <?php echo home_url() . "\n"; ?>
1230
+ <?php if(CWP_TOP_PRO): ?>
1231
+ ROP PRO Version: <?php echo $pro['Version'] . "\n"; ?>
1232
+ <?php endif; ?>
1233
+ ROP Lite Version: <?php echo $lite['Version'] . "\n"; ?>
1234
+ WordPress Version: <?php echo get_bloginfo( 'version' ) . "\n"; ?>
1235
+ Permalink Structure: <?php echo get_option( 'permalink_structure' ) . "\n"; ?>
1236
+ Active Theme: <?php echo $theme . "\n"; ?>
1237
+ <?php if( $host ) : ?>
1238
+ Host: <?php echo $host . "\n"; ?>
1239
+ <?php endif; ?>
1240
+ PHP Version: <?php echo PHP_VERSION . "\n"; ?>
1241
+ MySQL Version: <?php echo mysqli_get_client_info() . "\n"; ?>
1242
+ Web Server Info: <?php echo $_SERVER['SERVER_SOFTWARE'] . "\n"; ?>
1243
+ WordPress Memory Limit: <?php echo WP_MEMORY_LIMIT ; ?><?php echo "\n"; ?>
1244
+ PHP Safe Mode: <?php echo ini_get( 'safe_mode' ) ? "Yes" : "No\n"; ?>
1245
+ PHP Memory Limit: <?php echo ini_get( 'memory_limit' ) . "\n"; ?>
1246
+ PHP Upload Max Size: <?php echo ini_get( 'upload_max_filesize' ) . "\n"; ?>
1247
+ PHP Post Max Size: <?php echo ini_get( 'post_max_size' ) . "\n"; ?>
1248
+ PHP Upload Max Filesize: <?php echo ini_get( 'upload_max_filesize' ) . "\n"; ?>
1249
+ PHP Time Limit: <?php echo ini_get( 'max_execution_time' ) . "\n"; ?>
1250
+ PHP Max Input Vars: <?php echo ini_get( 'max_input_vars' ) . "\n"; ?>
1251
+ PHP Arg Separator: <?php echo ini_get( 'arg_separator.output' ) . "\n"; ?>
1252
+ PHP Allow URL File Open: <?php echo (ini_get( 'allow_url_fopen' ) ? "Yes" : "No" ). "\n"; ?>
1253
+ WP_DEBUG: <?php echo defined( 'WP_DEBUG' ) ? WP_DEBUG ? 'Enabled' . "\n" : 'Disabled' . "\n" : 'Not set' . "\n" ?>
1254
+ 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"; ?>
1255
+ Show On Front: <?php echo get_option( 'show_on_front' ) . "\n" ?>
1256
+ Page On Front: <?php $id = get_option( 'page_on_front' ); echo get_the_title( $id ) . ' (#' . $id . ')' . "\n" ?>
1257
+ Page For Posts: <?php $id = get_option( 'page_for_posts' ); echo get_the_title( $id ) . ' (#' . $id . ')' . "\n" ?>
1258
+ Session: <?php echo isset( $_SESSION ) ? 'Enabled' : 'Disabled'; ?><?php echo "\n"; ?>
1259
+ Session Name: <?php echo esc_html( ini_get( 'session.name' ) ); ?><?php echo "\n"; ?>
1260
+ Cookie Path: <?php echo esc_html( ini_get( 'session.cookie_path' ) ); ?><?php echo "\n"; ?>
1261
+ Save Path: <?php echo esc_html( ini_get( 'session.save_path' ) ); ?><?php echo "\n"; ?>
1262
+ Use Cookies: <?php echo ini_get( 'session.use_cookies' ) ? 'On' : 'Off'; ?><?php echo "\n"; ?>
1263
+ Use Only Cookies: <?php echo ini_get( 'session.use_only_cookies' ) ? 'On' : 'Off'; ?><?php echo "\n"; ?>
1264
+ DISPLAY ERRORS: <?php echo ( ini_get( 'display_errors' ) ) ? 'On (' . ini_get( 'display_errors' ) . ')' : 'N/A'; ?><?php echo "\n"; ?>
1265
+ FSOCKOPEN: <?php echo ( function_exists( 'fsockopen' ) ) ? 'Your server supports fsockopen.' : 'Your server does not support fsockopen.'; ?><?php echo "\n"; ?>
1266
+ cURL: <?php echo ( function_exists( 'curl_init' ) ) ? 'Your server supports cURL.' : 'Your server does not support cURL.'; ?><?php echo "\n"; ?>
1267
+ 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"; ?>
1268
+
1269
+ ACTIVE PLUGINS:
1270
+
1271
+
1272
+ <?php
1273
+ $plugins = get_plugins();
1274
+ $active_plugins = get_option( 'active_plugins', array() );
1275
+
1276
+ foreach ( $plugins as $plugin_path => $plugin ) {
1277
+ // If the plugin isn't active, don't show it.
1278
+ if ( ! in_array( $plugin_path, $active_plugins ) )
1279
+ continue;
1280
+
1281
+ echo $plugin['Name'] . ': ' . $plugin['Version'] ."\n";
1282
+ }
1283
+
1284
+ if ( is_multisite() ) :
1285
+ ?>
1286
+
1287
+ NETWORK ACTIVE PLUGINS:
1288
+
1289
+ <?php
1290
+ $plugins = wp_get_active_network_plugins();
1291
+ $active_plugins = get_site_option( 'active_sitewide_plugins', array() );
1292
+
1293
+ foreach ( $plugins as $plugin_path ) {
1294
+ $plugin_base = plugin_basename( $plugin_path );
1295
+
1296
+ // If the plugin isn't active, don't show it.
1297
+ if ( ! array_key_exists( $plugin_base, $active_plugins ) )
1298
+ continue;
1299
+
1300
+ $plugin = get_plugin_data( $plugin_path );
1301
+
1302
+ echo "\t"."\t"."\t"."\t".$plugin['Name'] . ' :' . $plugin['Version'] ."\n";
1303
+ }
1304
+
1305
+ endif;
1306
+ ?>
1307
+
1308
+
1309
+
1310
+ ### End System Info ###
1311
+
1312
+ ##Begin Log info
1313
+
1314
+ <?php $logs = get_option('rop_notice_active');
1315
+ if(!is_array($logs)) $logs = array();
1316
+ foreach($logs as $log){
1317
+ echo strtoupper($log['type']). " @ ".$log['time']. ' - '. $log['message']." \n ";
1318
+ }
1319
+ ?>
1320
+ <?php ?>
1321
+
1322
+ #End log info
1323
+
1324
+ ##Begin user info
1325
+
1326
+ <?php
1327
+ $users = $this->getUsers();
1328
+ foreach($all as $a ){
1329
+ if(!isset($$a)) $$a = 0;
1330
+ foreach($users as $us){
1331
+ if($us['service'] == $a) $$a ++;
1332
+
1333
+ }
1334
+
1335
+ }
1336
+ foreach($all as $a){
1337
+ echo strtoupper($a)." accounts - ".$$a." \n";
1338
+
1339
+ }
1340
+
1341
+ ?>
1342
+
1343
+ ##End user info
1344
+
1345
+ </textarea>
1346
+ <p class="submit">
1347
+ <input type="hidden" name="cwp-action" value="download_sysinfo" />
1348
+ <?php submit_button( __('Download System Info File','tweet-old-post'), 'primary', 'cwp-download-sysinfo', false ); ?>
1349
+ </p>
1350
+ </form>
1351
+ </div>
1352
+ </div>
1353
+ <?php
1354
+ }
1355
+ /*public function tweetPostwithImage($finalTweet, $id,$ntk = 'twitter')
1356
+ {
1357
+
1358
+ $k=1;
1359
+ $tw=0;
1360
+ $nrOfUsers = count($this->users);
1361
+ $time = get_option("top_last_tweets");
1362
+
1363
+ foreach ($this->users as $user) {
1364
+
1365
+ if($ntk == $user['service'] ){
1366
+ if(isset($time[$ntk])){
1367
+ if(time() - $time[$ntk] < 60)
1368
+ return false;
1369
+
1370
+ }
1371
+
1372
+ $time[$ntk] = time();
1373
+ update_option("top_last_tweets",$time);
1374
+ switch ($user['service']) {
1375
+ case 'twitter':
1376
+ // Create a new twitter connection using the stored user credentials.
1377
+ $connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
1378
+ // Post the new tweet
1379
+ if (CWP_TOP_PRO){
1380
+ global $CWP_TOP_Core_PRO;
1381
+ $status = $CWP_TOP_Core_PRO->topProImage($connection, $finalTweet['message'], $id);
1382
+ }
1383
+ //var_dump($status);
1384
+ //$tw++;
1385
+ //} else {
1386
+ /// //$connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
1387
+ //$status = $connection->post('statuses/update', array('status' => "acesta e un tweet"));
1388
+ //$tw++;
1389
+ //}
1390
+
1391
+ if ($nrOfUsers == $k)
1392
+ return $status;
1393
+ else
1394
+ $k++;
1395
+
1396
+ case 'facebook':
1397
+ $args = array(
1398
+
1399
+ 'body' => array( 'message' => $finalTweet['message'],'link' => $finalTweet['link']),
1400
+
1401
+ );
1402
+
1403
+ $pp=wp_remote_post("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/$user[id]/feed?access_token=$user[oauth_token]",$args);
1404
+ if ($nrOfUsers == $k)
1405
+ return $pp['response']['message'];
1406
+ else
1407
+ $k++;
1408
+
1409
+ break;
1410
+
1411
+ case 'linkedin':
1412
+
1413
+ $lk_message = str_replace("&", "&amp;",$finalTweet['message']);
1414
+ $sharedLink = str_replace("&", "&amp;",$finalTweet['link']);
1415
+ $content_xml = "";
1416
+ $visibility="anyone";
1417
+ $content_xml.="<content><title>".$lk_message."</title><submitted-url>".$sharedLink."</submitted-url></content>";
1418
+ $url = 'https://api.linkedin.com/v1/people/~/shares?oauth2_access_token='.$user["oauth_token"];
1419
+
1420
+
1421
+ $xml = '<?xml version="1.0" encoding="UTF-8"?><share>
1422
+ ' . $content_xml . '
1423
+ <visibility>
1424
+ <code>' . $visibility . '</code>
1425
+ </visibility>
1426
+ </share>';
1427
+ $headers = array(
1428
+ "Content-type: text/xml",
1429
+ "Content-length: " . strlen($xml),
1430
+ "Connection: close",
1431
+ );
1432
+ if (!function_exists('curl_version'))
1433
+ update_option('cwp_topnew_notice',"You host does not support CURL");
1434
+ $ch = curl_init();
1435
+ curl_setopt($ch, CURLOPT_URL,$url);
1436
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
1437
+ curl_setopt($ch, CURLOPT_TIMEOUT, 10);
1438
+ curl_setopt($ch, CURLOPT_POST, true);
1439
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
1440
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
1441
+
1442
+ $data = curl_exec($ch);
1443
+
1444
+ if ($nrOfUsers == $k)
1445
+ return $data;
1446
+ else
1447
+ $k++;
1448
+
1449
+ if(curl_errno($ch))
1450
+ print curl_error($ch);
1451
+ else
1452
+ curl_close($ch);
1453
+
1454
+ break;
1455
+ default:
1456
+ $connection = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $user['oauth_token'], $user['oauth_token_secret']);
1457
+ // Post the new tweet
1458
+ if (CWP_TOP_PRO) {
1459
+ global $$CWP_TOP_Core_PRO;
1460
+ $status = $CWP_TOP_Core_PRO->topProImage( $connection, $finalTweet['message'], $id );
1461
+ }
1462
+ if ($nrOfUsers == $k)
1463
+ return $status;
1464
+ else
1465
+ $k++;
1466
+
1467
+
1468
+ }
1469
+ }
1470
+ //sleep(100);
1471
+ }
1472
+ }*/
1473
+
1474
+ // Generates the tweet date range based on the user input.
1475
+ // Corrected by Ash/Upwork: added a few efficiencies
1476
+ public function getTweetPostDateRange()
1477
+ {
1478
+ $max = intval(get_option('top_opt_max_age_limit'));
1479
+
1480
+ if( !is_int($max) ) {
1481
+ 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');
1482
+ return false;
1483
+ }
1484
+
1485
+ $min = intval(get_option('top_opt_age_limit'));
1486
+
1487
+ if(!is_int($min) ){
1488
+ 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');
1489
+ return false;
1490
+
1491
+ }
1492
+ if($max > 0 && $min > 0 && $max < $min){
1493
+ 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');
1494
+ return false;
1495
+
1496
+ }
1497
+
1498
+ $dateQuery = array();
1499
+ if($max > 0){
1500
+ $maxLimit = time() - $max*24*60*60;
1501
+ $dateQuery['before'] = date("Y-m-d H:i:s", $maxLimit);
1502
+ }
1503
+
1504
+ if($min > 0){
1505
+ $minLimit = time() - $min*24*60*60;
1506
+ $dateQuery['after'] = date("Y-m-d H:i:s", $minLimit);
1507
+ }
1508
+
1509
+ return $dateQuery;
1510
+
1511
+
1512
+ }
1513
+
1514
+ // Gets the omited tweet categories
1515
+
1516
+ public function getExcludedCategories()
1517
+ {
1518
+ $postQueryCategories = "";
1519
+ $postCategories = get_option('top_opt_omit_cats');
1520
+
1521
+ if(!empty($postCategories) && is_array($postCategories)) {
1522
+ $postQueryCategories = implode(',',$postCategories);
1523
+ }
1524
+ else
1525
+ $postQueryCategories = get_option('top_opt_omit_cats');
1526
+
1527
+ return $postQueryCategories;
1528
+ }
1529
+
1530
+ // Gets the tweet post type.
1531
+ public function getTweetPostType()
1532
+ {
1533
+ $postQueryPostTypes = "";
1534
+ $top_opt_post_type = get_option('top_opt_post_type');
1535
+
1536
+ if(!empty($top_opt_post_type) && is_array($top_opt_post_type)) {
1537
+ $postQueryPostTypes = implode(',',$top_opt_post_type);
1538
+ }
1539
+ else
1540
+ $postQueryPostTypes = get_option('top_opt_post_type');
1541
+
1542
+ return $postQueryPostTypes;
1543
+
1544
+ }
1545
+
1546
+
1547
+ // Creates a custom Tweet Old Post schedule
1548
+ public function createCustomSchedule($schedules)
1549
+ {
1550
+ $schedules['cwp_top_schedule'] = array(
1551
+ 'interval' => floatval($this->intervalSet) * 60 * 60,
1552
+ 'display' => __("Custom Tweet User Interval", 'tweet-old-post')
1553
+ );
1554
+
1555
+ return $schedules;
1556
+ }
1557
+
1558
+ // Clears the custom Tweet Old Post cron job.
1559
+ public function clearScheduledTweets()
1560
+ {
1561
+ $all = $this->getAllNetworks();
1562
+ foreach($all as $n){
1563
+ wp_clear_scheduled_hook($n.'roptweetcron',array($n));
1564
+ }
1565
+ }
1566
+
1567
+ // Deactivation hook
1568
+ public function deactivationHook()
1569
+ {
1570
+ $this->clearScheduledTweets();
1571
+ $this->deleteAllOptions();
1572
+ $this->remoteTrigger("off");
1573
+ }
1574
+
1575
+ // Sets all authentication settings
1576
+ public function setAlloAuthSettings()
1577
+ {
1578
+ global $cwp_top_settings;
1579
+
1580
+ $this->consumer = $cwp_top_settings['oAuth_settings']['consumer_key'];
1581
+ $this->consumerSecret = $cwp_top_settings['oAuth_settings']['consumer_secret'];
1582
+ $this->oAuthCallback = CURRENTURL;
1583
+
1584
+ $this->cwp_top_access_token = get_option('cwp_top_access_token');
1585
+ $this->cwp_top_oauth_token = get_option('cwp_top_oauth_token');
1586
+ $this->cwp_top_oauth_token_secret = get_option('cwp_top_oauth_token_secret');
1587
+
1588
+ $this->user_info = get_option('cwp_top_oauth_user_details');
1589
+ $this->users = apply_filters("rop_users_filter",get_option('cwp_top_logged_in_users'));
1590
+
1591
+ $this->pluginStatus = get_option('cwp_topnew_active_status');
1592
+ $this->intervalSet = get_option('top_opt_interval');
1593
+
1594
+ self::$date_format = 'M j, Y @ G:i';
1595
+ //update_option('cwp_top_logged_in_users', '');
1596
+ }
1597
+
1598
+ // Checks if twitter returned any temporary credentials to log in the user.
1599
+ public function afterAddAccountCheck()
1600
+ {
1601
+ if( time() - get_option("top_reauthorize") > 2592000 )
1602
+ $this->reAuthorize();
1603
+ global $cwp_top_settings;
1604
+ $code="";
1605
+ if(isset($_REQUEST['code']))
1606
+ $code = $_REQUEST["code"];
1607
+ $cnetwork = self::getCurrentNetwork();
1608
+ if(isset($_REQUEST['oauth_token']) && $cnetwork == 'twitter') {
1609
+
1610
+ if($_REQUEST['oauth_token'] == $this->cwp_top_oauth_token) {
1611
+
1612
+ $twitter = new RopTwitterOAuth($this->consumer, $this->consumerSecret, $this->cwp_top_oauth_token, $this->cwp_top_oauth_token_secret );
1613
+ $access_token = $twitter->getAccessToken($_REQUEST['oauth_verifier']);
1614
+ $user_details = $twitter->get('account/verify_credentials');
1615
+ $user_details->status = array();
1616
+
1617
+ $newUser = array(
1618
+ 'user_id' => $user_details->id,
1619
+ 'oauth_token' => $access_token['oauth_token'],
1620
+ 'oauth_token_secret' => $access_token['oauth_token_secret'],
1621
+ 'oauth_user_details' => $user_details,
1622
+ 'service' => 'twitter'
1623
+ );
1624
+
1625
+ $loggedInUsers = get_option('cwp_top_logged_in_users');
1626
+ if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1627
+
1628
+
1629
+ if(in_array($newUser, $loggedInUsers)) {
1630
+ echo "You already added that user! no can do !";
1631
+ } else {
1632
+ array_push($loggedInUsers, $newUser);
1633
+ update_option('cwp_top_logged_in_users', $loggedInUsers);
1634
+ }
1635
+
1636
+ header("Location: " . top_settings_url());
1637
+ exit;
1638
+ }
1639
+ }
1640
+ if(isset($_REQUEST['state']) && (get_option('top_fb_session_state') === $_REQUEST['state'])) {
1641
+
1642
+ $token_url = "https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/oauth/access_token?"
1643
+ . "client_id=" . get_option('cwp_top_app_id') . "&redirect_uri=" . top_settings_url()
1644
+ . "&client_secret=" . get_option('cwp_top_app_secret') . "&code=" . $code;
1645
+
1646
+ $params = null;$access_token="";
1647
+ $response = wp_remote_get($token_url);
1648
+
1649
+ if(is_array($response))
1650
+ {
1651
+ if(isset($response['body']))
1652
+ {
1653
+ parse_str($response['body'], $params);
1654
+ if(isset($params['access_token']))
1655
+ $access_token = $params['access_token'];
1656
+ }
1657
+ }
1658
+
1659
+ if($access_token!="")
1660
+ {
1661
+ update_option('top_fb_token',$access_token);
1662
+
1663
+ }
1664
+ header("Location: " . top_settings_url().'&fbadd');
1665
+ }
1666
+
1667
+ if (isset($_GET['code'])&&isset($_GET['state'])&&get_option('top_lk_session_state') == $_GET['state']) {
1668
+
1669
+ $lk_auth_token = get_option('cwp_top_lk_app_id');
1670
+ $lk_auth_secret = get_option('cwp_top_lk_app_secret');
1671
+ $params = array('grant_type' => 'authorization_code',
1672
+ 'client_id' => $lk_auth_token,
1673
+ 'client_secret' => $lk_auth_secret,
1674
+ 'code' => $_GET['code'],
1675
+ 'redirect_uri' => top_settings_url(),
1676
+ );
1677
+
1678
+ $url = 'https://www.linkedin.com/uas/oauth2/accessToken?' . http_build_query($params);
1679
+ //echo $url;
1680
+ $response = wp_remote_post($url);
1681
+ $token = json_decode($response['body']);
1682
+ //print_r($response);
1683
+ //print_r($token);
1684
+ if($token->access_token) {
1685
+ // the request went through without an error, gather user's 'access' tokens
1686
+ //AQVBBQ6_ggJaUVFYmJ5oVF_kSH-wn6VNREGgC_sYPWp0YV0U4r2CFwptnLXUbJra5Glp0ZMax96CrD2azzf_HkJ2UdLp5q5zoiT_rbl5bmTMf50XnDfRcdm8Vl2k2XoYhGQ-LkYTnddFz1K-OBcW0CWsapzgZH2hepMVMhc1Lw7bhwTab04"
1687
+ update_option('top_linkedin_token',$token->access_token);
1688
+ update_option('top_linkedin_token_expires',$token->expires_in);
1689
+ }
1690
+
1691
+ $url = 'https://api.linkedin.com/v1/people/~:(id,picture-url,first_name,last_name)?oauth2_access_token='.$token->access_token;
1692
+ //echo $url;
1693
+ $response = wp_remote_get($url);
1694
+ $response = wp_remote_retrieve_body($response);
1695
+ //print_r($response);
1696
+ $person = simplexml_load_string($response);
1697
+
1698
+ if (isset($person->id)) {
1699
+ $user_details = array('profile_image_url' => (string)$person->{'picture-url'},'name'=> (string)$person->{'first-name'} );
1700
+
1701
+ $newUser = array(
1702
+ 'user_id' => (string)$person->id,
1703
+ 'oauth_token' => $token->access_token,
1704
+ 'oauth_token_secret' => '',
1705
+ 'oauth_user_details' => (object)$user_details,
1706
+ 'service' => 'linkedin'
1707
+ );
1708
+
1709
+ $loggedInUsers = get_option('cwp_top_logged_in_users');
1710
+ if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1711
+
1712
+ foreach ($loggedInUsers as $key=>$user) {
1713
+ if ($user['user_id'] == $person->id)
1714
+ unset($loggedInUsers[$key]);
1715
+ }
1716
+
1717
+ if(in_array($newUser, $loggedInUsers)) {
1718
+ echo "You already added that user! no can do !";
1719
+ } else {
1720
+ array_push($loggedInUsers, $newUser);
1721
+ update_option('cwp_top_logged_in_users', $loggedInUsers);
1722
+ }
1723
+ }
1724
+
1725
+
1726
+
1727
+ header("Location: " . top_settings_url());
1728
+ }
1729
+
1730
+ if(CWP_TOP_PRO){
1731
+ global $CWP_TOP_Core_PRO;
1732
+ if(method_exists($CWP_TOP_Core_PRO,"afterCheckPro")){
1733
+ $CWP_TOP_Core_PRO->afterCheckPro();
1734
+ }
1735
+
1736
+ }
1737
+ }
1738
+
1739
+ // Used to display the login buttons
1740
+ public function displayLoginButton($social_network)
1741
+ {
1742
+ // display the twitter login button
1743
+ if($this->userIsLoggedIn($social_network)) {
1744
+ $this->setAlloAuthSettings($social_network);
1745
+ return true;
1746
+ } else {
1747
+ return false;
1748
+ }
1749
+ }
1750
+
1751
+ public function reAuthorize() {
1752
+ $top_session_state = uniqid('', true);
1753
+ update_option('top_reauthorize',time());
1754
+ $loggedInUsers = get_option('cwp_top_logged_in_users');
1755
+ if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1756
+ $lk = 0;
1757
+ $fb = 0;
1758
+
1759
+ foreach ($loggedInUsers as $key=>$user) {
1760
+ if ($user['service'] === "linkedin"&&$lk===0) {
1761
+ $lk++;
1762
+ $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();
1763
+ header("Location: " . $url);
1764
+
1765
+ update_option('top_lk_session_state',$top_session_state);
1766
+
1767
+ }
1768
+
1769
+ if ($user['service'] === "facebook"&&$fb===0) {
1770
+ $top_session_state_fb = md5(uniqid(rand(), TRUE));
1771
+ $fb++;
1772
+ update_option('top_fb_session_state',$top_session_state_fb);
1773
+ $dialog_url = "https://www.facebook.com/".ROP_TOP_FB_API_VERSION."/dialog/oauth?client_id="
1774
+ . get_option("cwp_top_app_id") . "&redirect_uri=" . top_settings_url() . "&state="
1775
+ . $top_session_state_fb . "&scope=publish_actions,manage_pages,publish_pages,user_posts,user_photos";
1776
+
1777
+ header("Location: " . $dialog_url);
1778
+ }
1779
+ }
1780
+
1781
+ }
1782
+
1783
+ // Adds pages
1784
+ public function displayPages()
1785
+ {
1786
+
1787
+ if(!is_admin()) return false;
1788
+ $social_network = $_POST['social_network'];
1789
+ $access_token = get_option('top_fb_token');
1790
+
1791
+ switch ($social_network) {
1792
+ case 'facebook':
1793
+ $result1="";$pagearray1="";
1794
+ $pp=wp_remote_get("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/me/accounts?access_token=$access_token&limit=100&offset=0");
1795
+ //print_r($pp);
1796
+ $me=wp_remote_get("https://graph.facebook.com/".ROP_TOP_FB_API_VERSION."/me/?access_token=$access_token&limit=100&offset=0");
1797
+ if(is_array($pp))
1798
+ {
1799
+ $result1=$pp['body'];
1800
+ $result2 = $me['body'];
1801
+ $pagearray2 = json_decode($result2);
1802
+ //print_r($pagearray2);
1803
+ $pagearray1 = json_decode($result1);
1804
+ $profile['name'] = $pagearray2->first_name.' '.$pagearray2->last_name;
1805
+ $profile['id'] = $pagearray2->id;
1806
+ $profile['category'] ='profile';
1807
+ $profile['access_token'] = $access_token;
1808
+ if(is_array($pagearray1->data))
1809
+ array_unshift($pagearray1->data, $profile);
1810
+ //$pagearray1->data[count($pagearray1->data)] = $profile;
1811
+ $result1 = json_encode($pagearray1);
1812
+ //print_r($results1);
1813
+ echo $result1;
1814
+
1815
+ }
1816
+ break;
1817
+ }
1818
+ die(); // Required
1819
+ }
1820
+ public function adminNotice(){
1821
+ if(is_array($this->notices)){
1822
+
1823
+ foreach($this->notices as $n){
1824
+ ?>
1825
+ <div class="error">
1826
+ <p><?php _e( $n, 'tweet-old-post' ); ?></p>
1827
+ </div>
1828
+ <?php
1829
+ }
1830
+ }
1831
+
1832
+ }
1833
+ public function checkVersion(){
1834
+ if(!defined("ROP_PRO_VERSION") && CWP_TOP_PRO) echo 'rop-not-version';
1835
+
1836
+ }
1837
+ public function addPages()
1838
+ {
1839
+
1840
+ if(!is_admin()) return false;
1841
+ $social_network = $_POST['social_network'];
1842
+ $access_token = $_POST['page_token'];
1843
+ $page_id= $_POST['page_id'];
1844
+
1845
+ switch ($social_network) {
1846
+ case 'facebook':
1847
+ $user_details['profile_image_url'] = $_POST['picture_url'];
1848
+ $user_details['name'] = $_POST['page_name'];
1849
+ $user_details = (object) $user_details;
1850
+ $newUser = array(
1851
+ 'user_id' => $page_id,
1852
+ 'oauth_token' => $access_token,
1853
+ 'oauth_token_secret' => "",
1854
+ 'oauth_user_details' => $user_details,
1855
+ 'service' => 'facebook'
1856
+ );
1857
+
1858
+ $loggedInUsers = get_option('cwp_top_logged_in_users');
1859
+ if(empty($loggedInUsers)) { $loggedInUsers = array(); }
1860
+
1861
+ foreach ($loggedInUsers as $key=>$user) {
1862
+ if ($user['user_id'] == $page_id)
1863
+ unset($loggedInUsers[$key]);
1864
+ }
1865
+
1866
+ if(in_array($newUser, $loggedInUsers)) {
1867
+ echo "You already added that user! no can do !";
1868
+ } else {
1869
+ array_push($loggedInUsers, $newUser);
1870
+ update_option('cwp_top_logged_in_users', $loggedInUsers);
1871
+ echo top_settings_url();
1872
+ }
1873
+
1874
+
1875
+ break;
1876
+ }
1877
+ die(); // Required
1878
+ }
1879
+ public static function setCurrentNetwork($network){
1880
+ update_option("rop_current_network_oauth",$network);
1881
+
1882
+ }
1883
+ public static function getCurrentNetwork(){
1884
+ $network = get_option("rop_current_network_oauth");
1885
+ if($network == false) return '';
1886
+ return $network;
1887
+ }
1888
+ // Adds new account
1889
+ public function addNewAccount()
1890
+ {
1891
+
1892
+ if(!is_admin()) return false;
1893
+ if(!function_exists('curl_version')){
1894
+
1895
+ 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');
1896
+ return false;
1897
+ }
1898
+ global $cwp_top_settings;
1899
+ $social_network = $_POST['social_network'];
1900
+ self::setCurrentNetwork($social_network);
1901
+ $networks = $this->getAvailableNetworks();
1902
+ $allnetworks = $this->getAllNetworks(true);
1903
+ $response = array();
1904
+
1905
+ if($allnetworks[$social_network] && !CWP_TOP_PRO){
1906
+ 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');
1907
+
1908
+ }else if(in_array($social_network,$networks) && !CWP_TOP_PRO) {
1909
+ 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');
1910
+
1911
+
1912
+ }else{
1913
+ switch ($social_network) {
1914
+ case 'twitter':
1915
+ $this->oAuthCallback = $_POST['currentURL'];
1916
+ $twitter = new RopTwitterOAuth($this->consumer, $this->consumerSecret);
1917
+ $requestToken = $twitter->getRequestToken($this->oAuthCallback);
1918
+
1919
+ update_option('cwp_top_oauth_token', $requestToken['oauth_token']);
1920
+ update_option('cwp_top_oauth_token_secret', $requestToken['oauth_token_secret']);
1921
+
1922
+ switch ($twitter->http_code) {
1923
+ case 200:
1924
+ $url = $twitter->getAuthorizeURL($requestToken['oauth_token']);
1925
+ $response['url'] = $url;
1926
+ break;
1927
+
1928
+ default:
1929
+ self::addNotice(__("Could not connect to Twitter!"),'tweet-old-post');
1930
+
1931
+ break;
1932
+ }
1933
+ break;
1934
+ case 'facebook':
1935
+ if (empty($_POST['extra']['app_id'])){
1936
+ self::addNotice(__("Could not connect to Facebook! You need to add the App ID",'tweet-old-post'),'error');
1937
+ }else
1938
+ if (empty($_POST['extra']['app_secret'])){
1939
+ self::addNotice(__("Could not connect to Facebook! You need to add the App Secret",'tweet-old-post'),'error');
1940
+
1941
+ }else{
1942
+ update_option('cwp_top_app_id', $_POST['extra']['app_id']);
1943
+ update_option('cwp_top_app_secret', $_POST['extra']['app_secret']);
1944
+
1945
+ $top_session_state = md5(uniqid(rand(), TRUE));
1946
+
1947
+ update_option('top_fb_session_state',$top_session_state);
1948
+ $dialog_url = "https://www.facebook.com/".ROP_TOP_FB_API_VERSION."/dialog/oauth?client_id="
1949
+ . $_POST['extra']['app_id'] . "&redirect_uri=" . top_settings_url() . "&state="
1950
+ . $top_session_state . "&scope=publish_actions,manage_pages,publish_pages,user_posts,user_photos";
1951
+
1952
+ $response['url'] = $dialog_url;
1953
+
1954
+ }
1955
+
1956
+ break;
1957
+ default:
1958
+ if(CWP_TOP_PRO){
1959
+ global $CWP_TOP_Core_PRO;
1960
+ $CWP_TOP_Core_PRO->topProAddNewAccount();
1961
+ }
1962
+ }
1963
+
1964
+ }
1965
+
1966
+ echo json_encode($response);
1967
+
1968
+ die(); // Required
1969
+ }
1970
+
1971
+ // Adds more than one account
1972
+ public function addNewAccountPro()
1973
+ {
1974
+
1975
+ if(!is_admin()) return false;
1976
+ if (CWP_TOP_PRO) {
1977
+ global $CWP_TOP_Core_PRO;
1978
+ $CWP_TOP_Core_PRO->topProAddNewAccount($_POST['social_network']);
1979
+ }
1980
+ else{
1981
+ 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!");
1982
+ 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!";
1983
+
1984
+ }
1985
+ die(); // Required
1986
+ }
1987
+
1988
+ // Gets the next tweet interval.
1989
+ public function getNextTweetInterval()
1990
+ {
1991
+ $timestamp = wp_next_scheduled( 'cwptoptweetcronnew' );
1992
+
1993
+ //echo $timestamp;
1994
+ //$timestamp = date("Y-m-d H:i:s", $timestamp);
1995
+ //$timeLeft = get_date_from_gmt($timestamp);
1996
+ //$timeLeft = strtotime($timeLeft);
1997
+ echo $timestamp;
1998
+ }
1999
+
2000
+ // Checks if the user is logged in/
2001
+ public function userIsLoggedIn()
2002
+ {
2003
+ if(!empty($this->cwp_top_oauth_token) && !empty($this->cwp_top_oauth_token_secret)) {
2004
+ return true;
2005
+ } else {
2006
+ return false;
2007
+ }
2008
+ }
2009
+
2010
+ // Clears all Twitter user credentials.
2011
+ public function logOutUser()
2012
+ {
2013
+ if(!is_admin()) return false;
2014
+ $userID = $_POST['user_id'];
2015
+
2016
+ $users = get_option('cwp_top_logged_in_users');
2017
+
2018
+ foreach ($users as $id => $user) {
2019
+ foreach ($user as $key => $value) {
2020
+ if($userID == $value) {
2021
+ $user_id = array_search($user, $users);
2022
+ unset($users[$user_id]);
2023
+ }
2024
+ }
2025
+ }
2026
+
2027
+ update_option('cwp_top_logged_in_users', $users);
2028
+
2029
+ $this->setAlloAuthSettings();
2030
+ die();
2031
+ }
2032
+
2033
+ function getUpperDays($day,$days){
2034
+ $tmp = array();
2035
+ foreach($days as $d){
2036
+ if($day <= $d){
2037
+ $tmp[] = $d;
2038
+ }
2039
+ }
2040
+ return $tmp;
2041
+ }
2042
+ public function getSchedule(){
2043
+ $db = get_option("cwp_top_global_schedule" ) ;
2044
+ if(!is_array($db)) $db = array();
2045
+ $networks = $this->getAllNetworks();
2046
+ foreach($networks as $network){
2047
+ if(!isset($db[$network.'_schedule_type_selected'])) $db[$network.'_schedule_type_selected'] = "each";
2048
+ if(!isset($db[$network.'_top_opt_interval'])) $db[$network.'_top_opt_interval'] = 8;
2049
+
2050
+ }
2051
+ return $db;
2052
+ }
2053
+ function getNextTweetTime($network, $nowTime=null){
2054
+ $time = 0;
2055
+ if(!CWP_TOP_PRO){
2056
+ $time = $this->getTime($nowTime) + ( floatval(get_option('top_opt_interval')) * 3600 ) ;
2057
+ if($time > $this->getTime($nowTime)) {
2058
+ return $time;
2059
+ }else{
2060
+ return 0;
2061
+ }
2062
+ }
2063
+ $cwp_top_global_schedule = $this->getSchedule();
2064
+ $type = $cwp_top_global_schedule[$network.'_schedule_type_selected'];
2065
+ if($type == 'each'){
2066
+ $time = $this->getTime($nowTime) + floatval($cwp_top_global_schedule[$network.'_top_opt_interval']) * 3600;
2067
+ if($time > $this->getTime($nowTime)) {
2068
+ return $time;
2069
+ }else{
2070
+ return 0;
2071
+ }
2072
+ }else{
2073
+ if (date('N', $this->getTime($nowTime)) == 1){
2074
+ $start = strtotime("monday this week",$this->getTime($nowTime)) ;
2075
+ }else{
2076
+ $start = strtotime("last Monday",$this->getTime($nowTime)) ;
2077
+ }
2078
+
2079
+ $days = explode(",",$cwp_top_global_schedule[$network.'_top_opt_interval']['days']);
2080
+
2081
+ $times = $cwp_top_global_schedule[$network.'_top_opt_interval']['times'];
2082
+ $schedules_days = array();
2083
+ if(count($times) == 0 ) return false;
2084
+ if(count($days) == 0 ) return false;
2085
+ foreach($days as $rday){
2086
+ $schedules_days[] = $start + ($rday-1) * 3600 * 24;
2087
+
2088
+ }
2089
+ $schedules = array();
2090
+ foreach($schedules_days as $schedule){
2091
+
2092
+ foreach($times as $time){
2093
+
2094
+ $schedules[] = $schedule + floatval($time['hour']) * 3600 + floatval($time['minute']) * 60;
2095
+
2096
+ }
2097
+
2098
+ }
2099
+ sort($schedules,SORT_REGULAR);
2100
+ $ctime = $this->getTime($nowTime);
2101
+
2102
+ foreach($schedules as $s ){
2103
+ if($s > $ctime ) {
2104
+ return $s;
2105
+ }
2106
+
2107
+ }
2108
+ foreach($schedules as $s){
2109
+ $s += 7 * 24 * 3600;
2110
+ if($s > $ctime) return $s;
2111
+
2112
+ }
2113
+ return 0;
2114
+ }
2115
+ return 0;
2116
+ }
2117
+ public function getAllOptions(){
2118
+ $options = array();
2119
+
2120
+ $format_fields = $this->getFormatFields();
2121
+ $all = $this->getAllNetworks();
2122
+ foreach($format_fields as $n=>$detail){
2123
+ foreach($detail as $df){
2124
+
2125
+ $options[] = $n."_".$df['option'];
2126
+
2127
+ }
2128
+ }
2129
+ foreach($all as $a){
2130
+
2131
+ $options[] = $a."_schedule_type_selected";
2132
+ $options[] = $a."_top_schedule_days";
2133
+ $options[] = $a."_time_choice_hour";
2134
+ $options[] = $a."_top_opt_interval";
2135
+ $options[] = $a."_time_choice_min";
2136
+ }
2137
+ $cwp_top_fields = $this->getGeneralFields();
2138
+ foreach ($cwp_top_fields as $field)
2139
+ {
2140
+ $options[] = $field['option'];
2141
+ }
2142
+ return $options;
2143
+ }
2144
+ public function sanitizeRequest(){
2145
+
2146
+ $dataSent = $_POST['dataSent']['dataSent'];
2147
+ $valid = array();
2148
+ parse_str($dataSent, $options);
2149
+ $all_options = $this->getAllOptions();
2150
+ $invalid = array();
2151
+ foreach($options as $k => $option ){
2152
+ if(in_array($k,$all_options)){
2153
+ $valid[$k] = $option;
2154
+
2155
+ }else{
2156
+ $invalid[] = $k;
2157
+ }
2158
+
2159
+ }
2160
+ $_POST['dataSent']['dataSent'] = http_build_query($valid);
2161
+ }
2162
+ // Updates all options.
2163
+ public function updateAllOptions()
2164
+ {
2165
+ if(!is_admin()) return false;
2166
+ $dataSent = $_POST['dataSent']['dataSent'];
2167
+ $this->sanitizeRequest();
2168
+ $options = array();
2169
+
2170
+ parse_str($dataSent, $options);
2171
+ foreach ($options as $option => $newValue) {
2172
+ //$newValue = sanitize_text_field($newValue);
2173
+ update_option($option, $newValue);
2174
+ }
2175
+
2176
+ //update_option('top_opt_post_type', 'post');
2177
+
2178
+ if(!array_key_exists('top_opt_custom_url_option', $options)) {
2179
+ update_option('top_opt_custom_url_option', 'off');
2180
+ }
2181
+
2182
+ if(!array_key_exists('top_opt_use_url_shortner', $options)) {
2183
+ update_option('top_opt_use_url_shortner', 'off');
2184
+ }
2185
+
2186
+ if(!array_key_exists('top_opt_post_with_image', $options)) {
2187
+ update_option('top_opt_post_with_image', 'off');
2188
+ }
2189
+
2190
+ if(!array_key_exists('top_opt_tweet_multiple_times', $options)) {
2191
+ update_option('top_opt_tweet_multiple_times', 'off');
2192
+ }
2193
+
2194
+ if(!array_key_exists('top_opt_ga_tracking', $options)) {
2195
+ update_option('top_opt_ga_tracking', 'off');
2196
+ }
2197
+
2198
+ //if(!array_key_exists('top_opt_tweet_specific_category', $options)) {
2199
+ // update_option('top_opt_tweet_specific_category', '');
2200
+ //}
2201
+
2202
+ if(!array_key_exists('top_opt_omit_cats', $options)) {
2203
+ update_option('top_opt_omit_cats', '');
2204
+ }
2205
+
2206
+ if(!array_key_exists('top_opt_post_type', $options)) {
2207
+ update_option('top_opt_post_type', 'post');
2208
+ }
2209
+
2210
+ //update_option("top_opt_already_tweeted_posts", array());
2211
+ $this->updateAllPostFormat();
2212
+ if(CWP_TOP_PRO){
2213
+
2214
+ global $CWP_TOP_Core_PRO;
2215
+ $CWP_TOP_Core_PRO->updateTopProAjax();
2216
+ }
2217
+ die();
2218
+ }
2219
+
2220
+ public function updateAllPostFormat()
2221
+ {
2222
+ $all = $this->getAllNetworks();
2223
+ $dataSent = $_POST['dataSent']['dataSent'];
2224
+
2225
+ $options = array();
2226
+ parse_str($dataSent, $options);
2227
+
2228
+ //print_r($options);
2229
+ foreach($all as $n){
2230
+
2231
+ if(!array_key_exists($n.'_top_opt_custom_url_option', $options)) {
2232
+ $options[$n.'_top_opt_custom_url_option'] = 'off';
2233
+ }
2234
+
2235
+ if(!array_key_exists($n.'_top_opt_use_url_shortner', $options)) {
2236
+ $options[$n.'_top_opt_use_url_shortner'] = 'off';
2237
+ }
2238
+
2239
+ if(!array_key_exists($n.'_top_opt_post_with_image', $options)) {
2240
+ $options[$n.'_top_opt_post_with_image'] = 'off';
2241
+ }
2242
+
2243
+ if(!array_key_exists($n.'_top_opt_tweet_multiple_times', $options)) {
2244
+ $options[$n.'_top_opt_tweet_multiple_times'] = 'off';
2245
+ }
2246
+
2247
+ if(!array_key_exists($n.'_top_opt_ga_tracking', $options)) {
2248
+ $options[$n.'_top_opt_ga_tracking'] = 'off';
2249
+ }
2250
+
2251
+ //if(!array_key_exists('top_opt_tweet_specific_category', $options)) {
2252
+ // update_option('top_opt_tweet_specific_category', '');
2253
+ //}
2254
+
2255
+ if(!array_key_exists($n.'_top_opt_omit_cats', $options)) {
2256
+ $options[$n.'_top_opt_omit_cats'] = '';
2257
+ }
2258
+
2259
+ if(!array_key_exists($n.'_top_opt_post_type', $options)) {
2260
+ $options[$n.'_top_opt_post_type'] = 'post';
2261
+ }
2262
+
2263
+ }
2264
+
2265
+ update_option('top_opt_post_formats', $options);
2266
+
2267
+ }
2268
+
2269
+ public function top_admin_notice() {
2270
+ global $current_user ;
2271
+ $user_id = $current_user->ID;
2272
+ /* Check that the user hasn't already clicked to ignore the message */
2273
+ if ( ! get_user_meta($user_id, 'top_ignore_notice3') ) {
2274
+ // echo '<div class="error"><p>';
2275
+ // 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>'));
2276
+ // echo "</p></div>";
2277
+ }
2278
+ }
2279
+ public function top_nag_ignore() {
2280
+
2281
+ global $current_user;
2282
+ $user_id = $current_user->ID;
2283
+ /* If user clicks to ignore the notice, add that to their user meta */
2284
+ if ( isset($_GET['top_nag_ignore']) && '0' == $_GET['top_nag_ignore'] ) {
2285
+ add_user_meta($user_id, 'top_ignore_notice3', 'true', true);
2286
+ }
2287
+ }
2288
+
2289
+ public function resetAllOptions()
2290
+ {
2291
+
2292
+ if(!is_admin()) return false;
2293
+
2294
+ $defaultOptions = array(
2295
+ 'top_opt_tweet_type' => 'title',
2296
+ 'top_opt_post_with_image' => 'off',
2297
+ 'top_opt_bitly_user' =>'',
2298
+ 'top_opt_bitly_key' =>'',
2299
+ 'top_opt_post_type_custom_field' => '',
2300
+ 'top_opt_add_text' => '',
2301
+ 'top_opt_add_text_at' => 'beginning',
2302
+ 'top_opt_include_link' => 'true',
2303
+ 'top_opt_custom_url_option' => 'off',
2304
+ 'top_opt_use_url_shortner' => 'off',
2305
+ 'top_opt_ga_tracking' => 'on',
2306
+ 'top_opt_url_shortner' => 'is.gd',
2307
+ 'top_opt_custom_hashtag_option' => 'nohashtag',
2308
+ 'top_opt_hashtags' => '',
2309
+ 'top_opt_hashtag_length' => '0',
2310
+ 'top_opt_custom_hashtag_field' => '',
2311
+ 'top_opt_interval' => '8',
2312
+ 'top_opt_age_limit' => '30',
2313
+ 'top_opt_max_age_limit' => '0',
2314
+ 'top_opt_no_of_tweet' => '1',
2315
+ 'top_opt_post_type' => 'post',
2316
+ 'top_opt_post_type_value' => 'post',
2317
+ 'top_opt_custom_url_field' => '',
2318
+ 'top_opt_omit_cats' => '',
2319
+ 'cwp_topnew_active_status' => 'false',
2320
+ 'cwp_topnew_notice' => '',
2321
+ 'top_opt_excluded_post' => '',
2322
+ 'top_opt_tweet-multiple-times' => 'off',
2323
+ 'cwp_top_logged_in_users' => '',
2324
+ 'top_fb_token' =>'',
2325
+ 'top_opt_post_formats' =>'',
2326
+ // Added by Ash/Upwork
2327
+ 'top_opt_posts_buffer_twitter' => '',
2328
+ 'top_opt_posts_buffer_facebook' => '',
2329
+ 'top_opt_posts_buffer_linkedin' => '',
2330
+ 'top_opt_posts_buffer_tumblr' => '',
2331
+ 'top_opt_posts_buffer_xing' => '',
2332
+ // Added by Ash/Upwork
2333
+ );
2334
+
2335
+ foreach ($defaultOptions as $option => $defaultValue) {
2336
+ update_option($option, $defaultValue);
2337
+ }
2338
+
2339
+
2340
+ update_option("top_opt_post_formats",array());
2341
+ update_option("cwp_top_global_schedule",array());
2342
+ $this->clearScheduledTweets();
2343
+ //die();
2344
+ }
2345
+ public function getPostFormatValues(){
2346
+ $cwp_rop_all_networks = $this->getFormatFields();
2347
+ $options = get_option("top_opt_post_formats");
2348
+ $return = array();
2349
+ foreach($cwp_rop_all_networks as $n=>$d){
2350
+
2351
+ foreach($d as $fname => $f){
2352
+
2353
+ if(!isset($options[$n."_".$f['option']])){
2354
+ $return[$n."_".$f['option']] = $f['default_value'];
2355
+
2356
+ }else{
2357
+ $return[$n."_".$f['option']] = $options[$n."_".$f['option']];
2358
+
2359
+ }
2360
+
2361
+ }
2362
+
2363
+ }
2364
+
2365
+ return $return;
2366
+
2367
+
2368
+ }
2369
+ public function deleteAllOptions()
2370
+ {
2371
+ global $defaultOptions;
2372
+ foreach ($defaultOptions as $option => $defaultValue) {
2373
+ delete_option($option);
2374
+ }
2375
+ // Added by Ash/Upwork
2376
+ do_action("rop_pro_deactivateFree");
2377
+ // Added by Ash/Upwork
2378
+ }
2379
+
2380
+ // Generate all fields based on settings
2381
+ public static function generateFieldType($field)
2382
+ {
2383
+ $disabled = "";
2384
+ $pro = "";
2385
+
2386
+ switch ($field['type']) {
2387
+ case 'image-list':
2388
+ $pro = "";
2389
+ $disabled = "";
2390
+ if (isset($field['available_pro'])) {
2391
+
2392
+
2393
+ if(!CWP_TOP_PRO){
2394
+ $pro = CWP_TOP_PRO_STRING;
2395
+ $disabled = "disabled='disabled'";
2396
+ }
2397
+ }
2398
+ if(isset($field['available_business'])){
2399
+ if(!apply_filters('rop_is_business_user', false)){
2400
+ $pro = $field["pro_text"];
2401
+ $disabled = "disabled='disabled'";
2402
+ }
2403
+ }
2404
+ $images = array();
2405
+ $images[] = "full";
2406
+ $images = array_merge($images,get_intermediate_image_sizes());
2407
+
2408
+ echo "<select name='".$field['option']."' id='".$field['option']."' ".$disabled ." >";
2409
+ foreach($images as $image){
2410
+ echo "<option ".(($field["option_value"] == $image) ? "selected" : "")." value='".$image."'>".$image."</option>";
2411
+ }
2412
+
2413
+ echo "</select><br/>".$pro;
2414
+ break;
2415
+ case 'text':
2416
+ if (isset($field['available_pro'])) {
2417
+
2418
+
2419
+ if(!CWP_TOP_PRO && $field['available_pro'] == 'yes') {
2420
+ if ( isset( $field["pro_text"] ) ) {
2421
+ $pro = __($field["pro_text"],'tweet-old-post');
2422
+ } else {
2423
+ $pro = CWP_TOP_PRO_STRING;
2424
+ }
2425
+ $disabled = "disabled='disabled'";
2426
+ }
2427
+ }
2428
+
2429
+ if(isset($field['available_business'])){
2430
+
2431
+ if(!apply_filters('rop_is_business_user', false)){
2432
+ $pro = $field["pro_text"];
2433
+ $disabled = "disabled='disabled'";
2434
+
2435
+ }
2436
+ }
2437
+ echo "<input type='text' placeholder='".__($field['description'],'tweet-old-post')."' ".$disabled." value='".$field['option_value']."' name='".$field['option']."' id='".$field['option']."'><br/>".$pro;
2438
+ break;
2439
+
2440
+ case 'number':
2441
+ if (isset($field['available_pro'])) {
2442
+
2443
+
2444
+ if(!CWP_TOP_PRO){
2445
+ $pro = CWP_TOP_PRO_STRING;
2446
+ $disabled = "disabled='disabled'";
2447
+ }
2448
+ }
2449
+ if(isset($field['available_business'])){
2450
+ if(!apply_filters('rop_is_business_user', false)){
2451
+ $pro = $field["pro_text"];
2452
+ $disabled = "disabled='disabled'";
2453
+ }
2454
+ }
2455
+ 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;
2456
+ break;
2457
+
2458
+ case 'select':
2459
+ $noFieldOptions = intval(count($field['options']));
2460
+ $fieldOptions = array_keys($field['options']);
2461
+ if (isset($field['available_pro'])) {
2462
+
2463
+
2464
+ if(!CWP_TOP_PRO && $field['available_pro'] == 'yes'){
2465
+ $pro = CWP_TOP_PRO_STRING;
2466
+ $disabled = "disabled='disabled'";
2467
+ }
2468
+ }
2469
+ if(isset($field['available_business'])){
2470
+ if(!apply_filters('rop_is_business_user', false)){
2471
+ $pro = $field["pro_text"];
2472
+ $disabled = "disabled='disabled'";
2473
+ }
2474
+ }
2475
+ //if ($field['option']=='top_opt_post_type') $disabled = "disabled";
2476
+ print "<select id='".$field['option']."' name='".$field['option']."'".$disabled.">";
2477
+ for ($i=0; $i < $noFieldOptions; $i++) {
2478
+ print "<option value=".$fieldOptions[$i];
2479
+ if($field['option_value'] == $fieldOptions[$i]) { echo " selected='selected'"; }
2480
+ print ">".__($field['options'][$fieldOptions[$i]],'tweet-old-post')."</option>";
2481
+ }
2482
+ print "</select>".$pro;
2483
+ break;
2484
+
2485
+ case 'checkbox':
2486
+
2487
+ if (isset($field['available_pro'])) {
2488
+
2489
+ if(!CWP_TOP_PRO){
2490
+ $pro = CWP_TOP_PRO_STRING;
2491
+ $disabled = "disabled='disabled'";
2492
+ }
2493
+ }
2494
+ if(isset($field['available_business'])){
2495
+ if(!apply_filters('rop_is_business_user', false)){
2496
+ $pro = $field["pro_text"];
2497
+ $disabled = "disabled='disabled'";
2498
+ }
2499
+ }
2500
+ print "<input id='".$field['option']."' type='checkbox' ".$disabled." name='".$field['option']."'";
2501
+ if($field['option_value'] == 'on') { echo "checked=checked"; }
2502
+ print " />".$pro;
2503
+
2504
+
2505
+ break;
2506
+
2507
+ case 'categories-list':
2508
+
2509
+ $taxs = get_taxonomies(array(
2510
+ 'public' => true
2511
+ ),"object","and");
2512
+
2513
+ $post_types = get_post_types( array(
2514
+ 'public' => true,
2515
+ ), "object","and");
2516
+ $post_types["post"] = get_post_type_object( 'post' );
2517
+ $post_types["page"] = get_post_type_object( 'page' );
2518
+
2519
+ foreach($post_types as $pt=>$pd){
2520
+ foreach($taxs as $tx){
2521
+
2522
+ if(in_array($pt,$tx->object_type)){
2523
+
2524
+ $terms = get_terms($tx->name, array(
2525
+ 'hide_empty' => true,
2526
+ 'number' =>400
2527
+
2528
+ ) );
2529
+ if(!empty($terms)){
2530
+ print "<div class='categories-list cwp-hidden cwp-tax-".$pt."'><p class='rop-category-header'>".$tx->labels->name." </p>";
2531
+ foreach ($terms as $t) {
2532
+
2533
+ if (!is_array(get_option('top_opt_omit_cats')))
2534
+ $top_opt_omit_specific_cats = explode(',',get_option('top_opt_omit_cats'));
2535
+ else
2536
+ $top_opt_omit_specific_cats = get_option('top_opt_omit_cats');
2537
+
2538
+ print "<div class='cwp-cat'>";
2539
+ print "<input type='checkbox' data-posttype='".$pt."' name='".$field['option']."[]' value='".$t->term_id."' id='".$field['option']."_cat_".$t->term_id."'";
2540
+
2541
+ if($field['option'] == 'top_opt_omit_cats') {
2542
+ if(is_array($top_opt_omit_specific_cats)) {
2543
+ if(in_array($t->term_id, $top_opt_omit_specific_cats)) {
2544
+ print "checked=checked";
2545
+ }
2546
+ }
2547
+ }
2548
+
2549
+
2550
+ print ">";
2551
+ print "<label for='".$field['option']."_cat_".$t->term_id."'>".$t->name."</label>";
2552
+ print "</div>";
2553
+ }
2554
+ print "<div class='clear'></div></div>";
2555
+ }
2556
+
2557
+ }
2558
+
2559
+ }
2560
+
2561
+ }
2562
+
2563
+
2564
+ break;
2565
+
2566
+ case 'custom-post-type':
2567
+ print "<div class='post-type-list clearfix'>";
2568
+ $args = array(
2569
+ 'public' => true,
2570
+ '_builtin' => false
2571
+ );
2572
+
2573
+ $output = 'names'; // names or objects, note names is the default
2574
+ $operator = 'and'; // 'and' or 'or'
2575
+ if (isset($field['available_pro'])) {
2576
+ if(!CWP_TOP_PRO){
2577
+ $pro = CWP_TOP_PRO_STRING;
2578
+ $disabled = "disabled='disabled'";
2579
+ }
2580
+ }
2581
+ if(isset($field['available_business'])){
2582
+ if(!apply_filters('rop_is_business_user', false)){
2583
+ $pro = $field["pro_text"];
2584
+ $disabled = "disabled='disabled'";
2585
+ }
2586
+ }
2587
+ $post_types = get_post_types( $args, $output, $operator );
2588
+ array_push($post_types,"post","page");
2589
+ foreach ($post_types as $post_type) {
2590
+
2591
+ //$top_opt_tweet_specific_category = get_option('top_opt_tweet_specific_category');
2592
+
2593
+ if (!is_array(get_option('top_opt_post_type')))
2594
+ $top_opt_post_types = explode(',',get_option('top_opt_post_type'));
2595
+ else
2596
+ $top_opt_post_types = get_option('top_opt_post_type');
2597
+
2598
+ print "<div class='cwp-cat '>";
2599
+ print "<input ".$disabled." type='checkbox' class='cwp-cpt-checkbox' name='".$field['option']."[]' value='".$post_type."' id='".$field['option']."_cat_".$post_type."'";
2600
+
2601
+ if($field['option'] == 'top_opt_post_type') {
2602
+ if(is_array($top_opt_post_types)) {
2603
+ if(in_array($post_type, $top_opt_post_types)) {
2604
+ print "checked=checked";
2605
+ }
2606
+ }
2607
+ }
2608
+
2609
+
2610
+ print ">";
2611
+ print "<label for='".$field['option']."_cat_".$post_type."'>".$post_type."</label>";
2612
+ print "</div>";
2613
+
2614
+ }
2615
+ print "</div> ".$pro;
2616
+ break;
2617
+
2618
+ }
2619
+
2620
+ }
2621
+
2622
+
2623
+ public function echoTime() {
2624
+
2625
+ echo $this->getTime();
2626
+
2627
+ die();
2628
+ }
2629
+ public function getTime($nowTime=null) {
2630
+ if($nowTime) return $nowTime;
2631
+ return time() ;
2632
+
2633
+ //return time() - 253214 + 2 * 3600 + 24 * 3600;
2634
+ }
2635
+
2636
+ function top_plugin_action_links($links, $file) {
2637
+
2638
+ if ($file == ROPPLUGINBASENAME) {
2639
+ // The "page" query string value must be equal to the slug
2640
+ // of the Settings admin page we defined earlier, which in
2641
+ // this case equals "myplugin-settings".
2642
+ $settings_link = '<a href="' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=TweetOldPost">Settings</a>';
2643
+ array_unshift($links, $settings_link);
2644
+ }
2645
+
2646
+ return $links;
2647
+ }
2648
+ public function getRemoteCheck(){
2649
+ $remote_check = get_option("cwp_rop_remote_trigger");
2650
+ if($remote_check === false) $remote_check = "off";
2651
+ return $remote_check;
2652
+ }
2653
+ public function getBetaUserStatus(){
2654
+ $beta_user = get_option("cwp_rop_beta_user");
2655
+ if($beta_user === false) $beta_user = "off";
2656
+ return $beta_user;
2657
+ }
2658
+ public function fixCron() {
2659
+ update_option('cwp_topnew_notice','');
2660
+
2661
+ if ( defined( 'ALTERNATE_WP_CRON' ) ) {
2662
+
2663
+ //delete_option( 'hmbkp_wp_cron_test_failed' );
2664
+
2665
+ //echo 1;
2666
+
2667
+ return 0;
2668
+
2669
+ }
2670
+ else {
2671
+
2672
+ $response = wp_remote_head( site_url( 'wp-cron.php' ), array( 'timeout' => 30 ) );
2673
+
2674
+ if ( is_wp_error( $response ) ) {
2675
+
2676
+ 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!");
2677
+
2678
+ } elseif ( wp_remote_retrieve_response_code( $response ) != 200 ) {
2679
+
2680
+ 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!");
2681
+
2682
+ }
2683
+
2684
+
2685
+
2686
+ }
2687
+ }
2688
+ public function clearOldCron(){
2689
+ if(isset($_POST['cwp-action'])){
2690
+ if($_POST['cwp-action'] == 'download_sysinfo'){
2691
+ header('Content-Disposition: attachment; filename="report.txt"');
2692
+ header('Content-type: text/plain');
2693
+ echo $_POST['cwp-top-sysinfo'];
2694
+ die();
2695
+
2696
+ }
2697
+
2698
+ }
2699
+ if ( false === ( $remote_calls = get_transient( 'rop_remote_calls' ) ) ) {
2700
+ $beta_user = $this->getBetaUserStatus();
2701
+ if($beta_user == "on" ) {
2702
+ $this->sendBetaUserTrigger($beta_user);
2703
+ }
2704
+ $remote_call = $this->getRemoteCheck();
2705
+ if($remote_call == "on" ) {
2706
+ $this->sendBetaUserTrigger($remote_call);
2707
+ }
2708
+
2709
+ $this->sendRemoteTrigger($this->getRemoteCheck());
2710
+ set_transient( 'rop_remote_calls', "done", 24 * HOUR_IN_SECONDS );
2711
+ }
2712
+ if(!defined("VERSION_CHECK") && function_exists('topProImage')){
2713
+ $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";
2714
+
2715
+ }
2716
+ $all = $this->getAllNetworks();
2717
+
2718
+ if($this->pluginStatus !== 'true'){
2719
+
2720
+ foreach($all as $a){
2721
+
2722
+ wp_clear_scheduled_hook($a.'roptweetcron',array($a));
2723
+
2724
+
2725
+ }
2726
+ return false;
2727
+ }
2728
+
2729
+
2730
+ $networks = $this->getAvailableNetworks();
2731
+ if(wp_next_scheduled( 'cwp_top_tweet_cron' ) !== false) {
2732
+
2733
+ $timestamp = wp_next_scheduled( 'cwp_top_tweet_cron' );
2734
+ wp_clear_scheduled_hook('cwp_top_tweet_cron');
2735
+ foreach($networks as $network){
2736
+ wp_schedule_single_event($timestamp,$network.'roptweetcron',array($network));
2737
+ }
2738
+
2739
+ }else{
2740
+
2741
+ if(wp_next_scheduled( 'cwptoptweetcronnew' ) !== false) {
2742
+ $timestamp = wp_next_scheduled( 'cwptoptweetcronnew' );
2743
+ wp_clear_scheduled_hook('cwptoptweetcronnew');
2744
+ foreach($networks as $network){
2745
+ wp_schedule_single_event($timestamp,$network.'roptweetcron',array($network));
2746
+ }
2747
+ }
2748
+ else{
2749
+
2750
+ foreach($all as $a){
2751
+ if(wp_next_scheduled( $a.'cwptoptweetcron',array($a) ) !== false) {
2752
+
2753
+ $timestamp = wp_next_scheduled($a.'cwptoptweetcron',array($a) );
2754
+ wp_clear_scheduled_hook($a.'cwptoptweetcron',array($a));
2755
+ wp_schedule_single_event($timestamp,$a.'roptweetcron',array($a));
2756
+ }
2757
+ }
2758
+ foreach($all as $a){
2759
+ if(!in_array($a,$networks)){
2760
+ wp_clear_scheduled_hook($a.'roptweetcron',array($a));
2761
+ }
2762
+
2763
+ }
2764
+
2765
+ }
2766
+
2767
+ }
2768
+
2769
+ if($this->pluginStatus === 'true'){
2770
+ foreach($networks as $avn){
2771
+ if(wp_next_scheduled( $avn.'roptweetcron',array($avn) ) === false) {
2772
+ $this->scheduleTweet($avn);
2773
+ }
2774
+ }
2775
+ }
2776
+ }
2777
+
2778
+ public function clear_delete_type(){
2779
+
2780
+ update_option('cwp_top_delete_type',-1);
2781
+ }
2782
+ public function loadAllHooks()
2783
+ {
2784
+
2785
+ // loading all actions and filters
2786
+ add_action('admin_menu', array($this, 'addAdminMenuPage'));
2787
+
2788
+ add_action('admin_enqueue_scripts', array($this, 'loadAllScriptsAndStyles'));
2789
+
2790
+ add_action( 'admin_notices', array($this, 'adminNotice') );
2791
+
2792
+ add_filter('plugin_action_links',array($this,'top_plugin_action_links'), 10, 2);
2793
+
2794
+ // Added by Ash/Upwork
2795
+ add_filter('cwp_check_ajax_capability', array($this, 'checkAjaxCapability'), 10, 0);
2796
+ // Added by Ash/Upwork
2797
+
2798
+ add_action( 'plugins_loaded', array($this, 'addLocalization') );
2799
+
2800
+ //ajax actions
2801
+
2802
+ // Update all options ajax action.
2803
+ add_action('wp_ajax_update_response', array($this, 'ajax'));
2804
+
2805
+ // Reset all options ajax action.
2806
+ add_action('wp_ajax_reset_options', array($this, 'ajax'));
2807
+
2808
+ // Add new twitter account ajax action
2809
+ add_action('wp_ajax_add_new_account', array($this, 'ajax'));
2810
+
2811
+ // Display managed pages ajax action
2812
+ add_action('wp_ajax_display_pages', array($this, 'ajax'));
2813
+
2814
+ // Add new account managed pages ajax action
2815
+ add_action('wp_ajax_add_pages', array($this, 'ajax'));
2816
+
2817
+ // Add more than one twitter account ajax action
2818
+ add_action('wp_ajax_add_new_account_pro', array($this, 'ajax'));
2819
+
2820
+ // Log Out Twitter user ajax action
2821
+ add_action('wp_ajax_log_out_user', array($this, 'ajax'));
2822
+
2823
+ //
2824
+ add_action("rop_stop_posting", array($this,"clear_delete_type"));
2825
+
2826
+ //start ROP
2827
+ add_action('wp_ajax_tweet_old_post_action', array($this, 'ajax'));
2828
+
2829
+ //clear Log messages
2830
+ add_action('wp_ajax_rop_clear_log', array($this, 'ajax'));
2831
+
2832
+ //remote trigger cron
2833
+ add_action('wp_ajax_remote_trigger', array($this, 'ajax'));
2834
+ add_action('wp_ajax_beta_user_trigger', array($this, 'ajax'));
2835
+
2836
+ //sample tweet messages
2837
+ add_action('wp_ajax_view_sample_tweet_action', array($this, 'ajax'));
2838
+
2839
+ // Tweet Old Post tweet now action.
2840
+ add_action('wp_ajax_tweet_now_action', array($this, 'ajax'));
2841
+
2842
+ add_action('wp_ajax_gettime_action', array($this, 'ajax'));
2843
+
2844
+ //get notice
2845
+ add_action('wp_ajax_getNotice_action', array($this, 'ajax'));
2846
+
2847
+ //stop ROP
2848
+ add_action('wp_ajax_stop_tweet_old_post', array($this, 'ajax'));
2849
+
2850
+ //custom actions
2851
+
2852
+ add_action("rop_start_posting",array($this,"startPosting"));
2853
+ add_action("rop_stop_posting",array($this,"stopPosting"));
2854
+ $networks = $this->getAllNetworks();
2855
+
2856
+ foreach($networks as $network){
2857
+ add_action($network.'roptweetcron',array($this,"tweetOldPost"));
2858
+
2859
+ }
2860
+
2861
+ //admin_init actions
2862
+
2863
+ add_action('admin_init', array($this,'top_nag_ignore'));
2864
+ add_action('admin_init', array($this,'clearOldCron'));
2865
+ // Added by Ash/Upwork
2866
+ add_filter('template_include', array($this, 'captureRewrites'), 1, 1);
2867
+ add_filter('query_vars', array($this, 'addRewriteVars'));
2868
+ // Added by Ash/Upwork
2869
+
2870
+ //filters
2871
+
2872
+ add_filter("rop_users_filter",array($this,"rop_users_filter_free"),1,1);
2873
+
2874
+ // Added by Ash/Upwork
2875
+ // test action, only to be used for testing
2876
+ //if(ROP_IS_TEST) add_action("admin_init", array($this, "doTestAction"));
2877
+ // Added by Ash/Upwork
2878
+
2879
+ if(isset($_GET['debug']) ) {
2880
+ //$this->getNextTweetTime('twitter');
2881
+ //$this->tweetOldPost("twitter"); global $CWP_TOP_Core_PRO;
2882
+ $this->tweetOldPost("twitter");
2883
+
2884
+ die();
2885
+ }
2886
+
2887
+ }
2888
+
2889
+ function checkAjaxCapability() {
2890
+ $cap = false;
2891
+ if (!current_user_can('manage_options') && $this->top_check_user_role( 'Administrator' )) {
2892
+ $cap = true;
2893
+ } else {
2894
+ $cap = current_user_can('manage_options');
2895
+ }
2896
+ return $cap;
2897
+ }
2898
+
2899
+ function ajax() {
2900
+ if (!$this->checkAjaxCapability()) wp_die();
2901
+ check_ajax_referer("cwp-top-" . ROP_VERSION, "security");
2902
+
2903
+ switch ($_POST["action"]) {
2904
+ case 'update_response':
2905
+ $this->updateAllOptions();
2906
+ break;
2907
+ case 'reset_options':
2908
+ $this->resetAllOptions();
2909
+ break;
2910
+ case 'add_new_account':
2911
+ $this->addNewAccount();
2912
+ break;
2913
+ case 'display_pages':
2914
+ $this->displayPages();
2915
+ break;
2916
+ case 'add_pages':
2917
+ $this->addPages();
2918
+ break;
2919
+ case 'add_new_account_pro':
2920
+ $this->addNewAccountPro();
2921
+ break;
2922
+ case 'log_out_user':
2923
+ $this->logOutUser();
2924
+ break;
2925
+ case 'tweet_old_post_action':
2926
+ $this->startTweetOldPost();
2927
+ break;
2928
+ case 'rop_clear_log':
2929
+ $this->clearLog();
2930
+ break;
2931
+ case 'remote_trigger':
2932
+ $this->remoteTrigger();
2933
+ break;
2934
+ case 'beta_user_trigger':
2935
+ $this->betaUserTrigger();
2936
+ break;
2937
+ case 'view_sample_tweet_action':
2938
+ $this->viewSampleTweet();
2939
+ break;
2940
+ case 'tweet_now_action':
2941
+ $this->tweetNow();
2942
+ break;
2943
+ case 'gettime_action':
2944
+ $this->echoTime();
2945
+ break;
2946
+ case 'getNotice_action':
2947
+ $this->getNotice();
2948
+ break;
2949
+ case 'stop_tweet_old_post':
2950
+ $this->stopTweetOldPost();
2951
+ break;
2952
+ }
2953
+ wp_die();
2954
+ }
2955
+
2956
+ // Added by Ash/Upwork
2957
+ function addRewriteVars($vars){
2958
+ global $cwp_rop_self_endpoint;
2959
+ $vars[] = $cwp_rop_self_endpoint;
2960
+ return $vars;
2961
+ }
2962
+
2963
+ function captureRewrites($template){
2964
+ global $wp_query, $cwp_rop_self_endpoint;
2965
+ if (get_query_var($cwp_rop_self_endpoint, false)){
2966
+ $this->processServerRequest();
2967
+ return null;
2968
+ }
2969
+ return $template;
2970
+ }
2971
+
2972
+ private function processServerRequest(){
2973
+ if(
2974
+ !get_option("cwp_rop_remote_trigger", false)
2975
+ ||
2976
+ !get_option("cwp_topnew_active_status", false)
2977
+ ) return;
2978
+
2979
+ $crons = _get_cron_array();
2980
+ $this->clearScheduledTweets();
2981
+
2982
+ foreach($crons as $time => $cron){
2983
+ foreach($cron as $hook => $dings){
2984
+ if(strpos($hook, "roptweetcron") === FALSE) continue;
2985
+
2986
+ $network = trim(str_replace("roptweetcron", "", $hook));
2987
+ if($time > $this->getTime()){
2988
+ // echo "FUTURE $hook for $time (current time is " . $this->getTime() . ") <br>";
2989
+ wp_schedule_single_event($time, $network.'roptweetcron', array($network));
2990
+ continue;
2991
+ }
2992
+
2993
+ //echo "NOW $hook for $network for $time (current time is " . $this->getTime() . ") <br>";
2994
+
2995
+ foreach($dings as $hash => $data){
2996
+ do_action($hook, $network);
2997
+ }
2998
+ }
2999
+ }
3000
+ }
3001
+ // Added by Ash/Upwork
3002
+
3003
+ public function rop_users_filter_free($users){
3004
+
3005
+ if(!is_array($users)) $users = array();
3006
+ foreach($users as $k=>$user){
3007
+ if(!isset($user['service'])) {
3008
+ if ( strpos( $user['oauth_user_details']->profile_image_url, 'twimg' ) ) {
3009
+
3010
+ $users[ $k ]['service'] = 'twitter';
3011
+ }
3012
+ if ( strpos( $user['oauth_user_details']->profile_image_url, 'facebook' ) ) {
3013
+
3014
+ $users[ $k ]['service'] = 'facebook';
3015
+ }
3016
+ }
3017
+ }
3018
+
3019
+ return $users;
3020
+ }
3021
+
3022
+ public function remoteTrigger($status = ""){
3023
+ if(!is_admin()) return false;
3024
+ $state = isset($_POST["state"]) ? $_POST["state"] : "";
3025
+
3026
+ if(!empty($status)) $state = $status;
3027
+
3028
+ if(!empty($state) &&( $state == "on" || $state == "off")){
3029
+
3030
+ update_option("cwp_rop_remote_trigger",$state);
3031
+ // Added by Ash/Upwork
3032
+ $response = $this->sendRemoteTrigger($state);
3033
+ if($response){
3034
+ $error = __('Error: ','tweet-old-post') . $response;
3035
+ self::addNotice($error, 'error');
3036
+ update_option("cwp_rop_remote_trigger", "off");
3037
+ // if you want to show the user an alert, make showAlert true
3038
+ wp_send_json_error(array("error" => $error, "showAlert" => false));
3039
+ }
3040
+ // Added by Ash/Upwork
3041
+ }
3042
+
3043
+ if(empty($status)) die();
3044
+ }
3045
+
3046
+ public function sendRemoteTrigger($state){
3047
+
3048
+ global $cwp_rop_remote_trigger_url;
3049
+ $state = ($state == "on") ? "yes" : "no";
3050
+
3051
+ $response = wp_remote_post( $cwp_rop_remote_trigger_url, array(
3052
+ 'method' => 'POST',
3053
+ 'timeout' => 1,
3054
+ 'redirection' => 5,
3055
+ 'httpversion' => '1.0',
3056
+ 'blocking' => true,
3057
+ 'headers' => array(),
3058
+ 'body' => array( 'url' => get_site_url(), 'status' => $state ),
3059
+ 'cookies' => array()
3060
+ )
3061
+ );
3062
+
3063
+ // Added by Ash/Upwork
3064
+ if(is_wp_error($response)){
3065
+ return $response->get_error_message();
3066
+ }
3067
+ return null;
3068
+ // Added by Ash/Upwork
3069
+ }
3070
+
3071
+ public function betaUserTrigger($status = ""){
3072
+ if(!is_admin()) return false;
3073
+ $state = $_POST["state"];
3074
+ if(!empty($status)) $state = $status;
3075
+
3076
+ if(!empty($state) &&( $state == "on" || $state == "off")){
3077
+
3078
+ update_option("cwp_rop_beta_user",$state);
3079
+ $this->sendBetaUserTrigger($state);
3080
+
3081
+ }
3082
+
3083
+ die();
3084
+ }
3085
+
3086
+
3087
+ public function sendBetaUserTrigger($state){
3088
+
3089
+ global $cwp_rop_beta_trigger_url;
3090
+ $state = ($state == "on") ? "yes" : "no";
3091
+
3092
+ wp_remote_post( $cwp_rop_beta_trigger_url, array(
3093
+ 'method' => 'POST',
3094
+ 'timeout' => 1,
3095
+ 'redirection' => 5,
3096
+ 'httpversion' => '1.0',
3097
+ 'blocking' => true,
3098
+ 'headers' => array(),
3099
+ 'body' => array( 'email' => get_bloginfo('admin_email'), 'status' => $state ),
3100
+ 'cookies' => array()
3101
+ )
3102
+ );
3103
+
3104
+ }
3105
+ public function loadAllScriptsAndStyles()
3106
+ {
3107
+ global $cwp_top_settings; // Global Tweet Old Post Settings
3108
+
3109
+ // Enqueue and register all scripts on plugin's page
3110
+ if(isset($_GET['page'])) {
3111
+ if ($_GET['page'] == $cwp_top_settings['slug'] || $_GET['page'] == "ExcludePosts") {
3112
+
3113
+ // Enqueue and Register Main CSS File
3114
+ wp_register_style( 'cwp_top_stylesheet', ROPCSSFILE, false, time() );
3115
+ wp_enqueue_style( 'cwp_top_stylesheet' );
3116
+
3117
+ // Register Main JS File
3118
+ wp_enqueue_script( 'cwp_top_js_countdown', ROPJSCOUNTDOWN, array(), time(), true );
3119
+ wp_enqueue_script( 'cwp_top_javascript', ROPJSFILE, array(), time(), true );
3120
+ wp_localize_script( 'cwp_top_javascript', 'cwp_top_ajaxload', array(
3121
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ),
3122
+ 'ajaxnonce' => wp_create_nonce("cwp-top-" . ROP_VERSION),
3123
+ ) );
3124
+ }
3125
+ }
3126
+
3127
+ }
3128
+
3129
+ function top_check_user_role( $role, $user_id = null ) {
3130
+
3131
+ if ( is_numeric( $user_id ) )
3132
+ $user = get_userdata( $user_id );
3133
+ else
3134
+ $user = wp_get_current_user();
3135
+
3136
+ if ( empty( $user ) )
3137
+ return false;
3138
+
3139
+ return in_array( $role, (array) $user->roles );
3140
+ }
3141
+
3142
+ public function addAdminMenuPage()
3143
+ {
3144
+ global $cwp_top_settings; // Global Tweet Old Post Settings
3145
+ if (!current_user_can('manage_options') && $this->top_check_user_role( 'Administrator' ))
3146
+ $cap = 1;
3147
+ else
3148
+ $cap='manage_options';
3149
+ add_menu_page($cwp_top_settings['name'], $cwp_top_settings['name'], $cap, $cwp_top_settings['slug'], array($this, 'loadMainView'), '','99.87514');
3150
+ add_submenu_page($cwp_top_settings['slug'], __('Exclude Posts','tweet-old-post'), __('Exclude Posts','tweet-old-post'), 'manage_options', 'ExcludePosts', 'rop_exclude_posts');
3151
+
3152
+ add_submenu_page($cwp_top_settings['slug'], __('System Info','tweet-old-post'), __('System Info','tweet-old-post'), 'manage_options', 'SystemInfo', array($this,'system_info'));
3153
+
3154
+ }
3155
+
3156
+ public function getFormatFields(){
3157
+
3158
+ $all = $this->getAllNetworks(true);
3159
+ global $cwp_format_fields;
3160
+ $networks_fields = array();
3161
+
3162
+ foreach($all as $network=>$pro){
3163
+ if(CWP_TOP_PRO == $pro) {
3164
+ $networks_fields[ $network ] = $cwp_format_fields;
3165
+ }else{
3166
+ foreach($cwp_format_fields as $k=>$v){
3167
+ $v[ "available_pro"] = "yes";
3168
+ $networks_fields[ $network][$k] = $v;
3169
+ }
3170
+
3171
+ }
3172
+ }
3173
+ return $networks_fields;
3174
+ }
3175
+ public function getGeneralFields(){
3176
+ global $cwp_top_fields;
3177
+
3178
+ return $cwp_top_fields;
3179
+
3180
+ }
3181
+ public function loadMainView()
3182
+ {
3183
+ $cwp_top_fields = $this->getGeneralFields();
3184
+ foreach ($cwp_top_fields as $field => $value) {
3185
+ $cwp_top_fields[$field]['option_value'] = get_option($cwp_top_fields[$field]['option']);
3186
+ }
3187
+ $all_networks = $this->getAllNetworks();
3188
+ $format_fields = $this->getFormatFields();
3189
+ $options = get_option("top_opt_post_formats");
3190
+ global $cwp_top_global_schedule;
3191
+ $cwp_top_global_schedule = $this->getSchedule();
3192
+ if($options === false ) $options = array();
3193
+ if($cwp_top_global_schedule === false ) $cwp_top_global_schedule = array();
3194
+
3195
+ $schedule = $cwp_top_fields["interval"]['option_value'];
3196
+ foreach ($format_fields as $network_name => $network_details) {
3197
+ foreach ($network_details as $field => $vvalue) {
3198
+ $value = isset($options[$network_name."_".$format_fields[$network_name][$field]['option']]) ? $options[$network_name."_".$format_fields[$network_name][$field]['option']] : false ;
3199
+ if($value === false) {
3200
+ $value = get_option($format_fields[$network_name][$field]['option']);
3201
+ if($value === false) {
3202
+ if(isset($vvalue['default_value']))
3203
+ $value = $vvalue['default_value'];
3204
+ }
3205
+ }
3206
+ $format_fields[$network_name][$field]['option_value'] = $value;
3207
+ }
3208
+ if(!isset($cwp_top_global_schedule[$network_name."_schedule_type_selected"])){
3209
+ $cwp_top_global_schedule[$network_name."_schedule_type_selected"] = "each";
3210
+ $cwp_top_global_schedule[$network_name."_top_opt_interval"] = $schedule;
3211
+ }
3212
+ }
3213
+ require_once(plugin_dir_path( __FILE__ )."view.php");
3214
+ }
3215
+
3216
+ // Sends a request to the passed URL
3217
+ public static function sendRequest($url, $method='GET', $data='', $auth_user='', $auth_pass='') {
3218
+
3219
+ $ch = curl_init($url);
3220
+
3221
+ if (strtoupper($method) == "POST") {
3222
+ curl_setopt($ch, CURLOPT_POST, 1);
3223
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
3224
+ }
3225
+
3226
+ if (ini_get('open_basedir') == '' && ini_get('safe_mode') == 'Off') {
3227
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
3228
+ }
3229
+
3230
+ curl_setopt($ch, CURLOPT_HEADER, 0);
3231
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
3232
+
3233
+ if ($auth_user != '' && $auth_pass != '') {
3234
+ curl_setopt($ch, CURLOPT_USERPWD, "{$auth_user}:{$auth_pass}");
3235
+ }
3236
+
3237
+ $response = curl_exec($ch);
3238
+
3239
+ $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
3240
+
3241
+ curl_close($ch);
3242
+
3243
+ if ($httpcode != 200) {
3244
+ self::addNotice("Error for request: " . $url . " : ". $response,'error');
3245
+ return $httpcode;
3246
+ }
3247
+
3248
+ return $response;
3249
+ }
3250
+
3251
+ // Shortens the url.
3252
+ public static function shortenURL($url, $service, $id, $bitly_key, $bitly_user, $showPlaceholder=false) {
3253
+ // Added by Ash/Upwork
3254
+ if ($showPlaceholder) {
3255
+ return "[$service]";
3256
+ }
3257
+ // Added by Ash/Upwork
3258
+ $url = urlencode($url);
3259
+ if ($service == "bit.ly") {
3260
+
3261
+ //$shortURL = $url;
3262
+ $url = trim($url);
3263
+ $bitly_key = trim($bitly_key);
3264
+ $bitly_user = trim($bitly_user);
3265
+ $shortURL = "http://api.bit.ly/v3/shorten?format=txt&login=".$bitly_user."&apiKey=".$bitly_key."&longUrl={$url}";
3266
+ $shortURL = self::sendRequest($shortURL, 'GET');
3267
+
3268
+ } elseif ($service == "tr.im") {
3269
+ $shortURL = "http://api.tr.im/api/trim_simple?url={$url}";
3270
+ $shortURL = self::sendRequest($shortURL, 'GET');
3271
+ } elseif ($service == "3.ly") {
3272
+ $shortURL = "http://3.ly/?api=em5893833&u={$url}";
3273
+ $shortURL = self::sendRequest($shortURL, 'GET');
3274
+ } elseif ($service == "tinyurl") {
3275
+ $shortURL = "http://tinyurl.com/api-create.php?url=" . $url;
3276
+ $shortURL = self::sendRequest($shortURL, 'GET');
3277
+ } elseif ($service == "u.nu") {
3278
+ $shortURL = "http://u.nu/unu-api-simple?url={$url}";
3279
+ $shortURL = self::sendRequest($shortURL, 'GET');
3280
+ } elseif ($service == "1click.at") {
3281
+ $shortURL = "http://1click.at/api.php?action=shorturl&url={$url}&format=simple";
3282
+ $shortURL = self::sendRequest($shortURL, 'GET');
3283
+ } elseif ($service == "is.gd") {
3284
+
3285
+ $shortURL = "https://is.gd/api.php?longurl={$url}";
3286
+ $shortURL = self::sendRequest($shortURL, 'GET');
3287
+ } elseif ($service == "t.co") {
3288
+ $shortURL = "http://twitter.com/share?url={$url}";
3289
+ $shortURL = self::sendRequest($shortURL, 'GET');
3290
+ } else {
3291
+ $shortURL = wp_get_shortlink($id);
3292
+ }
3293
+ if($shortURL != ' 400 '&& $shortURL!="500" && $shortURL!="0") {
3294
+ return $shortURL;
3295
+ }
3296
+ else
3297
+ update_option('cwp_topnew_notice','Looks like is an error with your url shortner');
3298
+ }
3299
+
3300
+ public function rop_load_dashboard_icon()
3301
+ {
3302
+ wp_register_style( 'rop_custom_dashboard_icon', ROPCUSTOMDASHBOARDICON, false, ROP_VERSION );
3303
+ wp_enqueue_style( 'rop_custom_dashboard_icon' );
3304
+
3305
+ }
3306
+
3307
+ }
3308
+ }
3309
+
3310
+ if(class_exists('CWP_TOP_Core')) {
3311
+ $CWP_TOP_Core = new CWP_TOP_Core;
3312
+ }
inc/exclude-posts.php CHANGED
@@ -1,347 +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($_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
  ?>
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,937 +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
- // 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
- }
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,356 +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
- 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
  }
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,39 +1,39 @@
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
-
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-advancedscheduling.php ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $cfgnets = $this->getAllNetworks(true);
3
+ $available = $this->getAvailableNetworks();
4
+ ?>
5
+ <div class="cwp_top_tabs_vertical <?php echo (count($available) > 1) ? "rop-tab-with-sidebar" : "rop-tab-full-width"; ?> ">
6
+ <?php
7
+ if( count( $available ) > 1) : ?>
8
+ <ul class="cwp_top_tabs_btns">
9
+ <?php
10
+ $first = true;
11
+ foreach($available as $network_name) : ?>
12
+ <li class="<?php if($first){ ?>active<?php } ?>"><?php echo $network_name; ?></li>
13
+ <?php $first = false; ?>
14
+ <?php endforeach; ?>
15
+ <?php if(count($available) > 1): ?>
16
+ <li><?php _e("All", "tweet-old-post"); ?></li>
17
+ <?php endif; ?>
18
+ </ul>
19
+ <?php endif; ?>
20
+ <div id="cwp_delete_thickbox" style="display: none">
21
+ <table class="cwp_delete_table">
22
+ <tr>
23
+ <th align="center"><h3><?php _e("How should the DELETE button work for you henceforth?", "tweet-old-post");?></h3></th>
24
+ </tr>
25
+ <tr>
26
+ <th>
27
+ <input type="radio" name="delete" value="1" id="rop_delete1">
28
+ <label for="delete1"><?php _e("Exclude this post from publishing only on this network", "tweet-old-post");?></label>
29
+ </th>
30
+ </tr>
31
+ <?php if(count($available) > 1){ ?>
32
+ <tr>
33
+ <th>
34
+ <input type="radio" name="delete" value="0" id="rop_delete0">
35
+ <label for="delete0"><?php _e("Exclude this post from publishing on all networks", "tweet-old-post");?></label>
36
+ </th>
37
+ </tr>
38
+ <?php } ?>
39
+ <tr>
40
+ <th>
41
+ <input type="radio" name="delete" value="2" id="rop_delete2">
42
+ <label for="delete2"><?php _e("Just remove the post from schedule now", "tweet-old-post");?></label>
43
+ </th>
44
+ </tr>
45
+ </table>
46
+
47
+ <input type="hidden" id="rop-delete-type" value="<?php echo get_option("cwp_top_delete_type", -1);?>">
48
+ </div>
49
+
50
+ <?php
51
+ $networks = array();
52
+ $collect = array();
53
+ $first = true;
54
+ foreach($available as $network_name) {
55
+ $networks[] = $network_name;
56
+ }
57
+ $networks[] = null;
58
+
59
+ $count = 20;
60
+ if(apply_filters('rop_is_business_user', false)){
61
+ $count = 100;
62
+ }
63
+
64
+ foreach($networks as $network){
65
+ $all = null;
66
+ if(get_option("cwp_topnew_active_status", 'false') === 'true'){
67
+ $all = array();
68
+ if($network){
69
+ $posts = CWP_TOP_Core::getTweetsFromDB($network, false, $count);
70
+ foreach($posts as $post){
71
+ $all[] = array("post" => $post, "network" => $network);
72
+ }
73
+ }else{
74
+ $all = CWP_TOP_Core::sortPosts($collect);
75
+ }
76
+ }
77
+ ?>
78
+
79
+ <div class="tab-vertical <?php if($first){ ?> active <?php } ?>">
80
+ <?php if(!apply_filters('rop_is_business_user', false)): ?>
81
+ <div class="rop-features-available"><p><span>Editing features are available on the <a href="<?php echo ROP_PRO_URL; ?>" target="_blank"><strong>Business version</strong></a></span></p></div>
82
+ <?php endif; ?>
83
+ <?php
84
+ if(is_null($all)){
85
+ echo '<div class="rop-box-with-padding rop-message-tab">';
86
+ _e("Please start the plugin to view the future shares", "tweet-old-post");
87
+ echo '</div>';
88
+ echo "</div>";
89
+ $first = false;
90
+ continue;
91
+ }
92
+ if(count($all) == 0){
93
+ echo '<div class="rop-box-with-padding rop-message-tab">';
94
+ _e('There is no suitable post to tweet make sure you excluded correct categories and selected the right dates.','tweet-old-post');
95
+ echo '</div>';
96
+ echo "</div>";
97
+ $first = false;
98
+ continue;
99
+ }
100
+
101
+ $time = null;
102
+ $prevDate = "";
103
+ foreach ($all as $array){
104
+ $post = $array["post"];
105
+ $network_name = $array["network"];
106
+ $finalTweet = CWP_TOP_Core::generateTweetFromPost($post, $network_name, true);
107
+ $time = CWP_TOP_Core::getFutureTime($network_name, $time, $array);
108
+ $image = CWP_TOP_Core::getImageForPost($network_name, $post->ID);
109
+ if($network){
110
+ $collect[] = array("post" => $post, "network" => $network_name, "time" => $time);
111
+ }
112
+
113
+ $tweetTime = date("g:i:s A", $time);
114
+ $tweetDate = date("j M Y", $time);
115
+
116
+ $data_postID = $post->ID . $network_name;
117
+
118
+ if($tweetDate != $prevDate){
119
+ if($prevDate != ""){
120
+ ?>
121
+ </div>
122
+ <?php
123
+ }
124
+ ?>
125
+ <div class="rop_date_container">
126
+ <div class="rop_tweet_date"><?php echo $tweetDate;?></div>
127
+ <?php
128
+ }
129
+ ?>
130
+ <fieldset class="option twp<?php echo $key; ?> cwp_restrict_image rop-post-<?php echo $network_name; ?>">
131
+ <div class="rop_left">
132
+ <div class="cwp_post_image" data-post-id="<?php echo $post->ID;?>" data-network="<?php echo $network_name;?>">
133
+ <?php echo $image;?>
134
+ </div>
135
+ </div><!-- end .left -->
136
+ <div class="rop_right <?php echo !$image ? "cwp_extend_post" : ""?>">
137
+ <div class="cwp_post_message">
138
+ <span data-post="<?php echo $data_postID;?>" class="cwp-quick-edit-span">
139
+ <?php echo $finalTweet['message'];?>
140
+ </span>
141
+ <textarea data-post="<?php echo $data_postID;?>" data-network="<?php echo $network_name;?>" class="cwp-quick-edit-text" style="display: none" rows="3"><?php echo $finalTweet['message'];?></textarea>
142
+ </div>
143
+ <div class="cwp_quick_edit clearfix">
144
+ <div class="cwp_quick_edit_actions">
145
+ <span class="cwp_quick_edit_actions_after" style="display: none" data-post="<?php echo $data_postID;?>">
146
+ <?php submit_button(__("Save", "tweet-old-post"), "primary", "cwp-quick-save-button-" . $data_postID, false, array("data-post" => $data_postID, "data-post-id" => $post->ID));?>
147
+ <?php submit_button(__("Cancel", "tweet-old-post"), "secondary", "cwp-quick-cancel-button-" . $data_postID, false, array("data-post" => $data_postID));?>
148
+ </span>
149
+ <span class="cwp_quick_edit_actions_before" data-post="<?php echo $data_postID;?>">
150
+ <a href="#" class="cwp-quick-edit" data-post="<?php echo $data_postID;?>"><?php _e("Edit", "tweet-old-post");?></a>
151
+ <a href="#" class="cwp-quick-delete" data-post="<?php echo $data_postID;?>" data-post-id="<?php echo $post->ID;?>" data-network="<?php echo $network_name;?>"><?php _e("Delete", "tweet-old-post");?></a>
152
+ <a href="#TB_inline?width=400&height=150&inlineId=cwp_delete_thickbox" id="thickbox-<?php echo $data_postID;?>" class="thickbox"></a>
153
+ </span>
154
+ </div>
155
+ <div class="cwp_post_time">
156
+ <?php echo $tweetTime;?>
157
+ </div>
158
+ </div>
159
+ </div><!-- end .right -->
160
+ </fieldset><!-- end .option -->
161
+ <?php
162
+ $prevDate = $tweetDate;
163
+ }
164
+ ?>
165
+ </div>
166
+ </div>
167
+ <?php
168
+ $first = false;
169
+ }
170
+ ?>
171
+
172
+ </div>
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", '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
-
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,43 @@
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>
1
+ <?php
2
+ global $cwp_global_schedule;
3
+ $cfgnets = $this->getAllNetworks(true);
4
+ $networks = $this->getAvailableNetworks();
5
+ ?><div class="cwp_top_tabs_vertical <?php echo (count($networks) > 1) ? "rop-tab-with-sidebar" : "rop-tab-full-width"; ?>" >
6
+ <?php if(count($networks) > 1): ?>
7
+ <ul class="cwp_top_tabs_btns">
8
+ <?php $first = true; ?>
9
+ <?php foreach($networks as $network_name) : ?>
10
+ <li class="<?php if($first): ?>active<?php endif; ?>"><?php echo $network_name; ?></li>
11
+ <?php $first = false; ?>
12
+ <?php endforeach;?>
13
+ </ul>
14
+ <?php endif; ?>
15
+ <?php $first = true; foreach($format_fields as $network_name=>$network_details) { ?>
16
+
17
+ <div class="tab-vertical <?php if($first){ ?> active <?php } ?>">
18
+
19
+ <?php foreach ($network_details as $key=>$field) {
20
+ $field['option'] = $network_name."_".$field['option'];
21
+ ?>
22
+ <fieldset class="option twp<?php echo $key; ?>" <?php if(isset($field['dependency'])) { ?> data-dependent='<?php echo json_encode($field['dependency']); ?>' <?php } ?>>
23
+ <div class="left">
24
+ <label for="<?php echo $field['option']; ?>"> <?php _e( $field['name'], 'tweet-old-post' ); ?> </label>
25
+ <span class="description"> <?php _e( $field['description'], 'tweet-old-post' ); ?> <?php if($field['type'] == 'number'):
26
+ ?>(<?php _e("Max",'tweet-old-post'); ?>: <?php echo $field['max-length']; ?>)<?php
27
+ endif;?> </span>
28
+
29
+ <?php if($field['type'] == 'categories-list') { ?>
30
+ <button class='select-all'><?php _e( "Select All", 'tweet-old-post' );?></button>
31
+ <?php } ?>
32
+
33
+ </div><!-- end .left -->
34
+ <div class="right">
35
+ <?php CWP_TOP_Core::generateFieldType( $field ); ?>
36
+ </div><!-- end .right -->
37
+ </fieldset><!-- end .option -->
38
+ <?php } ?>
39
+ </div>
40
+ <?php $first = false; } ?>
41
+
42
+
 
 
43
  </div>
inc/view-postschedule.php CHANGED
@@ -1,85 +1,91 @@
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
-
 
 
 
 
 
 
1
+ <?php
2
+ global $cwp_top_global_schedule;
3
+ $networks = $this->getAvailableNetworks();
4
+ ?>
5
+ <div class="cwp_top_tabs_vertical <?php echo (count($networks) > 1) ? "rop-tab-with-sidebar" : "rop-tab-full-width"; ?> ">
6
+ <?php if(count($networks) > 1) : ?>
7
+ <ul class="cwp_top_tabs_btns">
8
+ <?php $first = true; ?>
9
+ <?php foreach($networks as $network_name ) : ?>
10
+ <li class="<?php if($first): ?>active<?php endif; ?>">
11
+ <?php echo $network_name; ?>
12
+ </li>
13
+ <?php $first = false; ?>
14
+ <?php endforeach; ?>
15
+ </ul>
16
+ <?php endif; ?>
17
+
18
+ <?php $first = true; foreach($all_networks as $network_name ) { ?>
19
+
20
+ <div class="tab-vertical <?php if($first){ ?> active <?php } ?>" data-network="<?php echo $network_name; ?>">
21
+ <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' ?>" />
22
+ <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'; ?>" />
23
+ <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" >
24
+ <div class="cwp-according-header cwp-populate-hidden-radio" data-hidden="<?php echo $network_name.'_schedule_type_selected' ?>" data-value="each">
25
+ <span> <?php _e("Each x hours", 'tweet-old-post'); ?></span>
26
+ </div>
27
+ <div class="cwp-according-body">
28
+ <fieldset class="option twpinterval" >
29
+ <div class="left">
30
+ <label for="<?php echo $network_name;?>_top_opt_interval"> <?php _e( "Interval", 'tweet-old-post' ); ?> </label>
31
+ <span class="description"> <?php _e('Minimum time between shares (Hour/Hours), 0.4 can be used also.', 'tweet-old-post')?> </span>
32
+
33
+ </div><!-- end .left -->
34
+ <div class="right">
35
+
36
+ <?php CWP_TOP_Core::generateFieldType(array(
37
+ 'id' => '14',
38
+ 'name' => __('Minimum interval between shares', 'tweet-old-post'),
39
+ 'type' => 'text',
40
+ 'slug' => 'interval',
41
+ 'option_value' =>($cwp_top_global_schedule[$network_name.'_schedule_type_selected'] == 'each') ? $cwp_top_global_schedule[$network_name.'_top_opt_interval'] : '8',
42
+ "available_business" => "yes",
43
+ "pro_text" =>CWP_TOP_PRO_BUSINESS_STRING,
44
+ 'option' => $network_name.'_top_opt_interval',
45
+ 'description' => __('Minimum time between shares (Hour/Hours), 0.4 can be used also.', 'tweet-old-post'),
46
+ 'options' => array()
47
+ )); ?>
48
+ </div><!-- end .right -->
49
+ </fieldset><!-- end .option -->
50
+
51
+ </div>
52
+
53
+ </div>
54
+ <div class="cwp-according-item <?php if( $cwp_top_global_schedule[$network_name.'_schedule_type_selected'] == 'custom'): ?> active <?php endif; ?>" >
55
+ <div class="cwp-according-header cwp-populate-hidden-radio" data-hidden="<?php echo $network_name.'_schedule_type_selected' ?>" data-value="custom">
56
+
57
+ <span><?php _e("Custom Schedule", 'tweet-old-post'); ?></span>
58
+ </div>
59
+ <div class="cwp-according-body">
60
+ <div class="cwp-custom-schedule-days">
61
+
62
+ <ul class="cwp-schedule-days clearfix cwp-populate-hidden-checkbox-group" data-hidden="<?php echo $network_name.'_top_schedule_days' ?>" >
63
+ <li class=" cwp-populate-hidden-checkbox" data-value="1"><?php _e("Monday", 'tweet-old-post'); ?></li>
64
+ <li class=" cwp-populate-hidden-checkbox" data-value="2"><?php _e("Tuesday", 'tweet-old-post'); ?></li>
65
+ <li class=" cwp-populate-hidden-checkbox" data-value="3"><?php _e("Wednesday", 'tweet-old-post'); ?></li>
66
+ <li class=" cwp-populate-hidden-checkbox" data-value="4"><?php _e("Thursday", 'tweet-old-post'); ?></li>
67
+ <li class=" cwp-populate-hidden-checkbox" data-value="5"><?php _e("Friday", 'tweet-old-post'); ?></li>
68
+ <li class=" cwp-populate-hidden-checkbox" data-value="6"><?php _e("Saturday", 'tweet-old-post'); ?></li>
69
+ <li class=" cwp-populate-hidden-checkbox" data-value="7"><?php _e("Sunday", 'tweet-old-post'); ?></li>
70
+ </ul>
71
+ <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>
72
+ <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']) : "[]";?>'>
73
+
74
+
75
+ </ul>
76
+ <P><A href="#" class="cwp-btn cwp-primary cwp-add-posting-time"><?php _e("Add posting time",'tweet-old-post'); ?></a></P>
77
+ </div>
78
+ <?php
79
+ if(!apply_filters("rop_is_business_user",false)){
80
+ _e(CWP_TOP_PRO_BUSINESS_STRING,'tweet-old-post');
81
+ }
82
+ ?>
83
+ </div>
84
+
85
+ </div>
86
+ </div>
87
+ <?php $first = false; } ?>
88
+
89
+
90
+ </div>
91
+
inc/view.php CHANGED
@@ -1,382 +1,388 @@
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 -->
 
 
 
 
 
 
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'); ?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
63
+ <?php // Added by Ash/Upwork ?>
64
+ <li ><?php _e('Manage queue','tweet-old-post'); ?> </li>
65
+ <?php // Added by Ash/Upwork ?>
66
+ <li class="rop-error-log"><span class="no-error"> </span></span><?php _e('Log','tweet-old-post'); ?></li>
67
+
68
+ </ul>
69
+
70
+ <form action="" method="post" id="cwp_top_form" class="clearfix">
71
+
72
+
73
+ <div class="tab active"><?php require_once(ROPPLUGINPATH."/inc/view-accounts.php"); ?></div>
74
+ <div class="tab">
75
+
76
+
77
+ <?php foreach ($cwp_top_fields as $field) {
78
+
79
+ if(CWP_TOP_PRO){
80
+ if(isset($field['available_pro'])){
81
+ if($field['available_pro'] == 'no')
82
+ continue ;
83
+
84
+ }
85
+
86
+ }
87
+
88
+ ?>
89
+
90
+ <fieldset class="option twp<?php echo $field['option']; ?>" >
91
+ <div class="left">
92
+ <label for="<?php echo $field['option']; ?>"> <?php _e($field['name'],'tweet-old-post'); ?> </label>
93
+ <span class="description"> <?php _e($field['description'],'tweet-old-post'); ?> </span>
94
+
95
+ <?php if($field['type'] == 'categories-list') { ?>
96
+ <button class='select-all'><?php _e("Select All",'tweet-old-post');?></button>
97
+ <?php } ?>
98
+
99
+ </div><!-- end .left -->
100
+ <div class="right">
101
+ <?php CWP_TOP_Core::generateFieldType( $field ); ?>
102
+ </div><!-- end .right -->
103
+ </fieldset><!-- end .option -->
104
+ <?php } ?>
105
+
106
+
107
+ </div>
108
+
109
+ <div class="tab"><?php require_once(ROPPLUGINPATH."/inc/view-postformat.php"); ?></div>
110
+ <div class="tab"><?php require_once(ROPPLUGINPATH."/inc/view-postschedule.php"); ?></div>
111
+ <?php // Added by Ash/Upwork ?>
112
+ <div class="tab"><?php require_once(ROPPLUGINPATH."/inc/view-advancedscheduling.php"); ?></div>
113
+ <?php // Added by Ash/Upwork ?>
114
+ <div class="tab clearfix">
115
+ <div class="rop-log-container clearfix">
116
+
117
+ <a href="#" id="rop-clear-log"><?php _e('Clear Log','tweet-old-post'); ?></a>
118
+ <ul id="rop-log-list">
119
+
120
+
121
+ </ul>
122
+ </div>
123
+ </div>
124
+ <!-- end #cwp_top_form -->
125
+ </div><div class="cwp_top_footer">
126
+ <a class="reset-settings" id="reset-settings" href="#"><span></span> <?php _e("Reset", 'tweet-old-post'); ?></a>
127
+ <a class="update-options" id="update-options"href="#"><span></span><?php _e("Save", 'tweet-old-post'); ?></a>
128
+ <?php if($this->pluginStatus != 'true' ): ?>
129
+
130
+ <a class="tweet-now" id="tweet-now" href="#"><span></span> <?php _e("Start Sharing", 'tweet-old-post'); ?></a>
131
+ <?php else: ?>
132
+
133
+ <a class="stop-tweet-old-post" id="stop-tweet-old-post" href="#"><span></span> <?php _e("Stop Sharing", 'tweet-old-post'); ?></a>
134
+
135
+ <?php endif; ?>
136
+ <a class="see-sample-tweet" id="see-sample-tweet" href="#"><span></span> <?php _e("See Sample Post", 'tweet-old-post'); ?></a>
137
+ </div><!-- end .cwp_top_footer -->
138
+ <p><?php _e("We are not affiliated or partner with Twitter/Facebook/Linkedin in any way.", 'tweet-old-post'); ?></p>
139
+ </form></div>
140
+ <aside class="sidebar">
141
+ <ul>
142
+ <li class="rop-twitter-clock" data-current="<?php echo $this->getTime(); ?>"><?php echo __("Now is: ",'tweet-old-post')." <b> </b> " ?></li>
143
+ <?php
144
+ if($this->pluginStatus == 'true' ): ?>
145
+ <?php
146
+ foreach($all_networks as $nn) {
147
+ if(wp_next_scheduled($nn.'roptweetcron',array($nn)) === false) continue;
148
+ ?>
149
+ <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>
150
+ <?php } ?>
151
+ <?php endif; ?>
152
+ <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>
153
+ <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>
154
+ <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>
155
+
156
+ </ul>
157
+ </aside><!-- end .sidebar -->
158
+ </section><!-- end .cwp_top_container -->
159
+
160
+ <div class="cwp_sample_tweet_preview">
161
+ <div class="cwp_sample_tweet_preview_inner">
162
+ <h2><?php _e('Sample Post Preview','tweet-old-post');?> Twitter</h2>
163
+ <span class="sample_tweet sample_tweet_twitter"></span>
164
+ <h2><?php _e('Sample Post Preview','tweet-old-post');?> Facebook</h2>
165
+ <span class="sample_tweet sample_tweet_facebook"></span>
166
+ <h2><?php _e('Sample Post Preview','tweet-old-post');?> LinkedIn</h2>
167
+ <span class="sample_tweet sample_tweet_linkedin"></span>
168
+ <h2><?php _e('Sample Post Preview','tweet-old-post');?> XING</h2>
169
+ <span class="sample_tweet sample_tweet_xing"></span>
170
+ <h2><?php _e('Sample Post Preview','tweet-old-post');?> Tumblr</h2>
171
+ <span class="sample_tweet sample_tweet_tumblr"></span>
172
+ <button class="top_close_popup"><?php _e('Close preview','tweet-old-post');?></button>
173
+ <button class="tweetitnow"><?php _e('Share now','tweet-old-post');?></button>
174
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
175
+ </div><!-- end .cwp_sample_tweet_preview -->
176
+
177
+ <div class="cwp_user_pages">
178
+ <div class="cwp_sample_tweet_preview_inner">
179
+ <h2><?php _e('Choose a Profile or Page','tweet-old-post');?></h2>
180
+ <div class="cwp_user_pages_inner"></div>
181
+ <button class="top_close_popup"><?php _e('Close preview','tweet-old-post');?></button>
182
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
183
+ </div><!-- end .cwp_sample_tweet_preview -->
184
+
185
+ <div class="cwp_fbapp_preview">
186
+ <div class="cwp_sample_tweet_preview_inner top_auth_inner">
187
+ <h2><?php _e('Add Your Facebook Account Following The Instructions On The Left','tweet-old-post');?></h2>
188
+ <span class="sample_tweet top_sample_auth">
189
+ <div class="top_left_instructions">
190
+ <ol>
191
+ <li><?php _e('Go on','tweet-old-post');?> <a href="https://developers.facebook.com/apps/" target="_blank">developers.facebook.com/apps</a> </li>
192
+ <li><?php _e('Click on <strong>Create New App</strong> from the top right corner','tweet-old-post');?> </li>
193
+ <li><?php _e('Enter a <strong>Display Name</strong> and <strong>Namespace</strong> and click on Create App','tweet-old-post');?> </li>
194
+ <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>
195
+ <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>
196
+ <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>
197
+ <li><?php _e('Go on Status & Review tab and set your app live from the top-right switch.','tweet-old-post');?> </li>
198
+ <li><?php _e('Now everything is done, click on <strong>Authorize App</strong> button.','tweet-old-post');?> </li>
199
+ </ol>
200
+ <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>
201
+ </div>
202
+ <form action="" method="post" id="cwp_top_form" class=" top_auth_form">
203
+ <fieldset class="option twptop_opt_app_id">
204
+ <div class="left">
205
+ <label for="top_opt_app_id"><?php _e('Facebook App ID','tweet-old-post');?> </label>
206
+ <span class="description"><?php _e('ID from your app created on facebook website.','tweet-old-post');?> </span>
207
+
208
+
209
+ </div><!-- end .left -->
210
+ <div class="right">
211
+ <input type="text" placeholder="1487991504767913" value="<?php get_option('cwp_top_app_id');?>" name="top_opt_app_id" id="top_opt_app_id">
212
+ </div><!-- end .right -->
213
+ </fieldset>
214
+
215
+ <fieldset class="option twptop_opt_app_secret">
216
+ <div class="left">
217
+ <label for="top_opt_app_secret"><?php _e('Facebook App Secret','tweet-old-post');?> </label>
218
+ <span class="description"><?php _e('Secret from your app created on facebook website. ','tweet-old-post');?> </span>
219
+
220
+ </div><!-- end .left -->
221
+ <div class="right">
222
+ <input type="text" placeholder="5124ea6d46e64da3c306f12812d0e4fx" value="<?php get_option('cwp_top_app_secret');?>" name="top_opt_app_secret" id="top_opt_app_secret">
223
+ </div><!-- end .right -->
224
+ </fieldset>
225
+
226
+ <button class="top_authorize" service="facebook"><?php _e('Authorize App','tweet-old-post');?></button>
227
+ </form>
228
+ </span><button class="top_close_popup"><?php _e('Close preview','tweet-old-post');?></button>
229
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
230
+ </div><!-- end .cwp_sample_tweet_preview -->
231
+
232
+ <div class="cwp_not_version_preview">
233
+ <div class="cwp_sample_tweet_preview_inner top_auth_inner">
234
+ <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>
235
+
236
+ </span><button class="top_close_popup"><?php _e('Close','tweet-old-post');?></button>
237
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
238
+ </div><!-- end .cwp_sample_tweet_preview -->
239
+
240
+ <div class="cwp_lkapp_preview">
241
+ <div class="cwp_sample_tweet_preview_inner top_auth_inner">
242
+ <h2><?php _e('Add Your Linkedin Account Following The Instructions On The Left','tweet-old-post');?></h2>
243
+ <span class="sample_tweet top_sample_auth">
244
+ <div class="top_left_instructions">
245
+ <ol>
246
+ <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>
247
+ <li><?php _e('Enter the required details and pay special attention to the further fields :','tweet-old-post');?></li>
248
+ <li><?php _e('Make sure you set Live Status to LIVE','tweet-old-post');?> </li>
249
+ <li><?php _e('Default Scope should have r_basicprofile and w_share checked','tweet-old-post');?></li>
250
+ <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>
251
+ <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>
252
+
253
+ <li><?php _e('Now everything is done, click on <strong>Authorize App</strong> button.','tweet-old-post');?></li>
254
+ </ol>
255
+ </div>
256
+ <form action="" method="post" id="cwp_top_form" class=" top_auth_form">
257
+ <fieldset class="option twptop_opt_app_id">
258
+ <div class="left">
259
+ <label for="top_opt_app_id"><?php _e('Linkedin API Key','tweet-old-post');?> </label>
260
+ <span class="description"><?php _e('API Key that you get once you create an app','tweet-old-post');?> </span>
261
+
262
+
263
+ </div><!-- end .left -->
264
+ <div class="right">
265
+ <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">
266
+ </div><!-- end .right -->
267
+ </fieldset>
268
+
269
+ <fieldset class="option twptop_opt_app_secret">
270
+ <div class="left">
271
+ <label for="top_opt_app_secret"><?php _e('Linkedin Secret Key','tweet-old-post');?> </label>
272
+ <span class="description"><?php _e('Secret Key that you get once you create an app','tweet-old-post');?> </span>
273
+
274
+
275
+ </div><!-- end .left -->
276
+ <div class="right">
277
+ <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">
278
+ </div><!-- end .right -->
279
+ </fieldset>
280
+
281
+ <button class="top_authorize" service="linkedin"><?php _e('Authorize App','tweet-old-post');?></button>
282
+ </form>
283
+ </span><button class="top_close_popup"><?php _e('Close preview','tweet-old-post');?></button>
284
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
285
+ </div><!-- end .cwp_sample_tweet_preview -->
286
+
287
+ <div class="cwp_xingapp_preview">
288
+ <div class="cwp_sample_tweet_preview_inner top_auth_inner">
289
+ <h2><?php _e('Add Your XING Account Following The Instructions On The Left','tweet-old-post');?></h2>
290
+ <span class="sample_tweet top_sample_auth">
291
+ <div class="top_left_instructions">
292
+ <ol>
293
+ <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>
294
+ <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>
295
+ <li><?php _e("Fill 'Application Name', click 'Save'",'tweet-old-post');?> </li>
296
+ <li><?php printf(__('Copy/Paste the Consumer Key and Consumer Secret in the fields from the right. ','tweet-old-post'),top_settings_url());?> </li>
297
+
298
+ <li><?php _e('Now everything is done, click on <strong>Authorize App</strong> button.','tweet-old-post');?></li>
299
+ </ol>
300
+ </div>
301
+ <form action="" method="post" id="cwp_top_form" class=" top_auth_form">
302
+ <fieldset class="option twptop_opt_app_id">
303
+ <div class="left">
304
+ <label for="top_opt_app_id"><?php _e('Consumer Key','tweet-old-post');?> </label>
305
+ <span class="description"><?php _e('Consumer Key','tweet-old-post');?> </span>
306
+
307
+
308
+ </div><!-- end .left -->
309
+ <div class="right">
310
+ <input type="text" placeholder="Consumer Key" id="top_opt_app_id_xing">
311
+ </div><!-- end .right -->
312
+ </fieldset>
313
+
314
+ <fieldset class="option twptop_opt_app_secret">
315
+ <div class="left">
316
+ <label for="top_opt_app_secret"><?php _e('Consumer Secret','tweet-old-post');?> </label>
317
+ <span class="description"><?php _e('Consumer Secret','tweet-old-post');?> </span>
318
+
319
+
320
+ </div><!-- end .left -->
321
+ <div class="right">
322
+ <input type="text" placeholder="Consumer Secret" id="top_opt_app_secret_xing">
323
+ </div><!-- end .right -->
324
+ </fieldset>
325
+
326
+ <button class="top_authorize" service="xing"><?php _e('Authorize App','tweet-old-post');?></button>
327
+ </form>
328
+ </span><button class="top_close_popup"><?php _e('Close preview','tweet-old-post');?></button>
329
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
330
+ </div><!-- end .cwp_sample_tweet_preview -->
331
+ <div class="cwp_tumblrapp_preview">
332
+ <div class="cwp_sample_tweet_preview_inner top_auth_inner">
333
+ <h2><?php _e('Add Your Thumblr Account Following The Instructions On The Left','tweet-old-post');?></h2>
334
+ <span class="sample_tweet top_sample_auth">
335
+ <div class="top_left_instructions">
336
+ <ol>
337
+ <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>
338
+ <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>
339
+ <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>
340
+ <li><?php printf(__('Copy/Paste the Consumer Key and Consumer Secret in the fields from the right. ','tweet-old-post'),top_settings_url());?> </li>
341
+ <li><?php printf(__('Fill URL of your Tumblr Blog. ','tweet-old-post'));?> </li>
342
+
343
+ <li><?php _e('Now everything is done, click on <strong>Authorize App</strong> button.','tweet-old-post');?></li>
344
+ </ol>
345
+ </div>
346
+ <form action="" method="post" id="cwp_top_form" class=" top_auth_form">
347
+ <fieldset class="option twptop_opt_app_id">
348
+ <div class="left">
349
+ <label for="top_opt_app_id"><?php _e('Consumer Key','tweet-old-post');?> </label>
350
+ <span class="description"><?php _e('Consumer Key','tweet-old-post');?> </span>
351
+
352
+
353
+ </div><!-- end .left -->
354
+ <div class="right">
355
+ <input type="text" placeholder="Consumer Key" id="top_opt_app_id_tumblr">
356
+ </div><!-- end .right -->
357
+ </fieldset>
358
+
359
+ <fieldset class="option twptop_opt_app_secret">
360
+ <div class="left">
361
+ <label for="top_opt_app_secret"><?php _e('Consumer Secret','tweet-old-post');?> </label>
362
+ <span class="description"><?php _e('Consumer Secret','tweet-old-post');?> </span>
363
+
364
+
365
+ </div><!-- end .left -->
366
+ <div class="right">
367
+ <input type="text" placeholder="Consumer Secret" id="top_opt_app_secret_tumblr">
368
+ </div><!-- end .right -->
369
+ </fieldset>
370
+ <fieldset class="option twptop_opt_app_secret">
371
+ <div class="left">
372
+ <label for="top_opt_app_secret"><?php _e('Tumblr url Blog','tweet-old-post');?> </label>
373
+ <span class="description"><?php _e('Tumblr url Blog','tweet-old-post');?> </span>
374
+
375
+
376
+ </div><!-- end .left -->
377
+ <div class="right">
378
+ <input type="text" placeholder="Tumblr url Blog" id="top_opt_app_url_tumblr">
379
+ </div><!-- end .right -->
380
+ </fieldset>
381
+
382
+ <button class="top_authorize" service="tumblr"><?php _e('Authorize App','tweet-old-post');?></button>
383
+ </form>
384
+ </span><button class="top_close_popup"><?php _e('Close preview','tweet-old-post');?></button>
385
+ </div><!-- end .cwp_sample_tweet_preview_inner -->
386
+ </div><!-- end .cwp_sample_tweet_preview -->
387
+
388
+ </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,1076 +1,1091 @@
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
- if(confirm('Are you sure you want to reset all settings? You can\'t undo this action.')) {
24
- e.preventDefault();
25
- startAjaxIntro();
26
-
27
- jQuery.ajax({
28
- type: "POST",
29
- url: cwp_top_ajaxload.ajaxurl,
30
- data: {
31
- action: 'reset_options'
32
- },
33
- success: function(response) {
34
- console.log("Success: " + response);
35
- //jQuery("#cwp_top_form").cwpTopUpdateForm();
36
- location.reload();
37
- endAjaxIntro();
38
- },
39
- error: function(response) {
40
- console.log("Error: "+ response);
41
- }
42
- });
43
-
44
- endAjaxIntro();
45
- return false;
46
- }
47
- });
48
- jQuery("#linkedin-login").on("click",function(){
49
- if(jQuery(this).hasClass("pro-only")) return false;
50
- if(jQuery(this).hasClass("rop-not-version")) return false;
51
- jQuery(".cwp_lkapp_preview").show();
52
- return false;
53
- });
54
- jQuery("#xing-login").on("click",function(){
55
- if(jQuery(this).hasClass("pro-only")) return false;
56
- if(jQuery(this).hasClass("rop-not-version")) return false;
57
- jQuery(".cwp_xingapp_preview").show();
58
- return false;
59
- });
60
- jQuery("#tumblr-login").on("click",function(){
61
- if(jQuery(this).hasClass("pro-only")) return false;
62
- if(jQuery(this).hasClass("rop-not-version")) return false;
63
- jQuery(".cwp_tumblrapp_preview").show();
64
- return false;
65
- });
66
- jQuery("#facebook-login").on("click",function(){
67
- if(jQuery(this).hasClass("pro-only")) return false;
68
- if(jQuery(this).hasClass("rop-not-version")) return false;
69
- if(jQuery(this).hasClass("another-account")){
70
- addFacebook()
71
- }else{
72
- jQuery(".cwp_fbapp_preview").show();
73
- }
74
- return false;
75
- });
76
- jQuery("#facebook-login").on("click",function(){
77
- if(jQuery(this).hasClass("pro-only")) return false;
78
- if(jQuery(this).hasClass("rop-not-version")) return false;
79
- if(jQuery(this).hasClass("another-account")){
80
- addFacebook()
81
- }else{
82
- jQuery(".cwp_fbapp_preview").show();
83
- }
84
- return false;
85
- });
86
- jQuery("#cwp_remote_check").on("click",function(){
87
-
88
- var state = "";
89
- var th = jQuery(this);
90
- if(th.hasClass("on")){
91
- state = "off";
92
- th.addClass("off").removeClass("on");
93
- }else{
94
- state = "on";
95
- th.addClass("on").removeClass("off");
96
- }
97
- jQuery.ajax({
98
- type: "POST",
99
- url: cwp_top_ajaxload.ajaxurl,
100
- data: {
101
- action: 'remote_trigger',
102
- state:state
103
- },
104
- success: function(response) {
105
- console.log(response);
106
- if(!response.success){
107
- if(response.data && response.data.showAlert) alert(response.data.error);
108
- state = "off";
109
- th.addClass("off").removeClass("on");
110
- }
111
- },
112
- error: function(response) {
113
- console.log("Error: "+ response);
114
- }
115
- });
116
- return false;
117
- })
118
- jQuery("#rop-beta-button").on("click",function(){
119
-
120
- var state = "";
121
- var th = jQuery(this);
122
- if(th.hasClass("on")){
123
- state = "off";
124
- th.addClass("off").removeClass("on");
125
- }else{
126
- state = "on";
127
- th.addClass("on").removeClass("off");
128
- }
129
- jQuery.ajax({
130
- type: "POST",
131
- url: cwp_top_ajaxload.ajaxurl,
132
- data: {
133
- action: 'beta_user_trigger',
134
- state:state
135
- },
136
- success: function(response) {
137
- console.log(response);
138
- },
139
- error: function(response) {
140
- console.log("Error: "+ response);
141
- }
142
- });
143
- return false;
144
- });
145
-
146
- function cwpTopUpdateForm() {
147
- startAjaxIntro();
148
- var data = jQuery("#cwp_top_form").serialize();
149
- //console.log(data);
150
-
151
- var formData = {
152
- action:'updateAllOptions',
153
- dataSent:data
154
- }
155
-
156
- jQuery.ajax({
157
- type: "POST",
158
- url: cwp_top_ajaxload.ajaxurl,
159
- async:false,
160
- data: {
161
- action: "update_response",
162
- dataSent: formData
163
- },
164
- success: function(response) {
165
- console.log(response);
166
- },
167
- error: function(MLHttpRequest, textStatus, errorThrown) {
168
- console.log("There was an error: "+errorThrown);
169
- }
170
- });
171
-
172
- endAjaxIntro();
173
- return false;
174
- }
175
-
176
- function cwpTopUpdateFormWithoIntro() {
177
- //startAjaxIntro();
178
- var data = jQuery("#cwp_top_form").serialize();
179
- //console.log(data);
180
-
181
- var formData = {
182
- action:'updateAllOptions',
183
- dataSent:data
184
- }
185
-
186
- jQuery.ajax({
187
- type: "POST",
188
- url: cwp_top_ajaxload.ajaxurl,
189
- data: {
190
- action: "update_response",
191
- dataSent: formData
192
- },
193
- success: function(response) {
194
- console.log(response);
195
- },
196
- error: function(MLHttpRequest, textStatus, errorThrown) {
197
- console.log("There was an error: "+errorThrown);
198
- }
199
- });
200
-
201
- //endAjaxIntro();
202
- return false;
203
- }
204
-
205
-
206
-
207
-
208
-
209
-
210
- function addFacebook(){
211
- var service = "facebook";
212
-
213
- startAjaxIntro();
214
- jQuery.ajax({
215
- type: "POST",
216
- url: cwp_top_ajaxload.ajaxurl,
217
- data: {
218
- action: "display_pages",
219
- currentURL: jQuery("#cwp_top_currenturl").val(),
220
- social_network: service
221
- },
222
- success: function(response) {
223
- switch (service) {
224
-
225
- case 'facebook':
226
- var elem = jQuery(".cwp_top_wrapper .cwp_user_pages");
227
- elem.fadeIn().addClass("active");
228
-
229
- var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
230
- jQuery('html, body').scrollTop(scrollhere);
231
- response = JSON.parse(response);
232
- html='';
233
- data = response.data;
234
-
235
- for (i = 0; i < data.length; i++) {
236
- // if (jQuery(".remove_user a[service=facebook").attr("id")!==data[i].id) {
237
- html+="<a href='#' class='cwp_preview_page' service='"+service+"' pagetoken='"+data[i].access_token+"' pageid='"+data[i].id+"'>";
238
- profile_image = 'https://graph.facebook.com/'+data[i].id+'/picture';
239
- name = data[i].name;
240
- category = data[i].category.substr(0,9);
241
- html+="<div class='page_avatar'><img src='"+profile_image+"'/></div><div class='page_name'>"+name+"</div><div class='page_category'>"+category+"</div></a>";
242
- //}
243
- }
244
- //html+='<button class="top_close_popup">Close preview</button>';
245
- //data.length = 3;
246
- fheight = (Math.ceil(data.length / 4) )*95;
247
- //if (fheight<=0) fheight = 175;
248
- jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_user_pages_inner ").html(html);
249
- jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_user_pages_inner ").height(fheight);
250
- jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_sample_tweet_preview_inner ").height(fheight+120);
251
-
252
- endAjaxIntro();
253
- break;
254
-
255
-
256
- case 'linkedin':
257
- var elem = jQuery(".cwp_top_wrapper .cwp_user_pages");
258
- elem.fadeIn().addClass("active");
259
-
260
- var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
261
- jQuery('html, body').scrollTop(scrollhere);
262
- response = JSON.parse(response);
263
- html='';
264
- data = response.data;
265
- for (i = 0; i < data.length; i++) {
266
- html+="<a href='#' class='cwp_preview_page' service='"+service+"' pagetoken='"+data[i].access_token+"' pageid='"+data[i].id+"'>";
267
- profile_image = 'https://graph.facebook.com/'+data[i].id+'/picture';
268
- name = data[i].name;
269
- category = data[i].category.substr(0,9);
270
- html+="<div class='page_avatar'><img src='"+profile_image+"'/></div><div class='page_name'>"+name+"</div><div class='page_category'>"+category+"</div></a>";
271
-
272
- }
273
- jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_user_pages_inner ").html(html);
274
- endAjaxIntro();
275
- break;
276
- }
277
-
278
- },
279
- error: function(MLHttpRequest, textStatus, errorThrown) {
280
- console.log("There was an error: " + errorThrown);
281
- }
282
- });
283
-
284
-
285
-
286
- return false;
287
- }
288
-
289
- // Add New Account
290
- if ((cwpfbadd) && jQuery("#cwp_top_currenturl").attr("data-cnetwork")!= 'tumblr') {
291
- addFacebook();
292
- };
293
-
294
- // Add New Twitter Account
295
- jQuery("#twitter-login,.top_authorize").click(function(e){
296
-
297
- if(jQuery(this).hasClass("rop-not-version")) return false;
298
- var service = jQuery(this).attr('service');
299
- var action = "add_new_account";
300
- var extra = {};
301
- if(service != 'twitter'){
302
- e.preventDefault();
303
- startAjaxIntro();
304
- if (service=='facebook') {
305
- extra.app_id = jQuery("#top_opt_app_id").val();
306
- extra.app_secret = jQuery("#top_opt_app_secret").val();
307
- }
308
-
309
- if(service == 'linkedin') {
310
- extra.app_id = jQuery("#top_opt_app_id_lk").val();
311
- extra.app_secret = jQuery("#top_opt_app_secret_lk").val();
312
- }
313
- if(service == 'xing') {
314
- extra.app_id = jQuery("#top_opt_app_id_xing").val();
315
- extra.app_secret = jQuery("#top_opt_app_secret_xing").val();
316
- }
317
- if(service == 'tumblr') {
318
- extra.app_id = jQuery("#top_opt_app_id_tumblr").val();
319
- extra.app_secret = jQuery("#top_opt_app_secret_tumblr").val();
320
- extra.app_url = jQuery("#top_opt_app_url_tumblr").val();
321
- }
322
-
323
-
324
- }
325
- startAjaxIntro();
326
- jQuery.ajax({
327
- type: "POST",
328
- url: cwp_top_ajaxload.ajaxurl,
329
- data: {
330
- action: action,
331
- currentURL: jQuery("#cwp_top_currenturl").val(),
332
- social_network: service,
333
- extra:extra
334
- },
335
- dataType:"json",
336
- success: function(response) {
337
-
338
- if(response.url){
339
- window.location.href = response.url;
340
- }else{
341
- jQuery(".cwp_fbapp_preview").hide();
342
- jQuery(".cwp_lkapp_preview").hide();
343
- endAjaxIntro();
344
-
345
- }
346
- /*if (response.indexOf("upgrade to the PRO")===-1) {
347
- switch (service) {
348
- case 'twitter':
349
- window.location.href = response;
350
- break;
351
- case 'facebook':
352
- if (another===0) {
353
-
354
- var elem = jQuery(".cwp_top_wrapper .cwp_fbapp_preview")
355
- elem.fadeIn().addClass("active");
356
-
357
- var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
358
- jQuery('html, body').scrollTop(scrollhere);
359
- } else {
360
- addFacebook();
361
- }
362
- endAjaxIntro();
363
-
364
- break;
365
- case 'linkedin':
366
- var elem = jQuery(".cwp_top_wrapper .cwp_lkapp_preview")
367
- elem.fadeIn().addClass("active");
368
-
369
- var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
370
- jQuery('html, body').scrollTop(scrollhere);
371
- // html = "<input type='text' placeholder='App key'/>";
372
- //jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet").html(html);
373
- endAjaxIntro();
374
- break;
375
- }
376
- }else {
377
- jQuery(".cwp_top_status .inactive").html(response);
378
- endAjaxIntro();
379
- }*/
380
-
381
-
382
- },
383
- error: function(MLHttpRequest, textStatus, errorThrown) {
384
- console.log("There was an error: " + errorThrown);
385
- }
386
- });
387
-
388
- return false;
389
- });
390
-
391
- // Log Out Twitter User
392
- jQuery("#cwp_top_form .logout_user").click(function(e){
393
- e.preventDefault();
394
- startAjaxIntro();
395
-
396
- var userID = jQuery(this).attr('id');
397
-
398
- jQuery.ajax({
399
- type: "POST",
400
- url: cwp_top_ajaxload.ajaxurl,
401
- data: {
402
- action: "log_out_user",
403
- user_id: userID
404
- },
405
- success: function(response) {
406
- window.location.href = jQuery("#cwp_top_currenturl").val();
407
- },
408
- error: function(MLHttpRequest, textStatus, errorThrown) {
409
- console.log("There was an error: "+errorThrown);
410
- }
411
- });
412
-
413
- endAjaxIntro();
414
- });
415
- jQuery("#rop-clear-log").on("click",function(){
416
- clearNotices();
417
- jQuery.ajax({
418
- type: "POST",
419
- url: cwp_top_ajaxload.ajaxurl,
420
- data: {
421
- action: "rop_clear_log"
422
- }
423
- });
424
- return false;
425
- })
426
- // Start Tweet
427
- jQuery("#tweet-now").click(function(e){
428
-
429
- startAjaxIntro();
430
- cwpTopUpdateForm();
431
-
432
- jQuery.ajax({
433
- type: "POST",
434
- url: cwp_top_ajaxload.ajaxurl,
435
- data: {
436
- action: "tweet_old_post_action"
437
- },
438
- success: function(response) {
439
-
440
- location.reload();
441
- },
442
- error: function(MLHttpRequest, textStatus, errorThrown) {
443
- console.log("There was an error: "+errorThrown);
444
- }
445
- });
446
-
447
- endAjaxIntro();
448
- });
449
-
450
- setInterval(function(){ jQuery.ajax({
451
- type: "POST",
452
- url: cwp_top_ajaxload.ajaxurl,
453
- data: {
454
- action: "getNotice_action"
455
- },
456
- dataType:"json",
457
- success: function(response) {
458
-
459
- if(response.length > 0 ){
460
- jQuery(".inactive-rop-error-label").hide();
461
- jQuery(".active-rop-error-label").show();
462
- jQuery(".rop-error-log span").html(response.length).removeClass('no-error');
463
- jQuery(".active-rop-error-label").html( " You have <b>" + response.length + " </b>new messages ! Go to Log tab to see them");
464
- jQuery("#rop-log-list").html('');
465
- jQuery.each(response,function(k,v){
466
-
467
- 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>');
468
-
469
-
470
- })
471
-
472
- }else{
473
- clearNotices();
474
- jQuery("#rop-log-list").html('<li class="rop-log-item rop-notice"> <span class="rop-log-text">You have no messages ! </span> </li>');
475
-
476
- }
477
-
478
- }
479
- } )
480
- },3000);
481
-
482
- jQuery("#see-sample-tweet").click(function(e){
483
- if(!cwpTopCheckAccounts()){
484
- jQuery("#tabs_menu li:first").trigger("click");
485
- showCWPROPError("You need to add an account in order to start posting.");
486
- return false;
487
- }
488
- e.preventDefault();
489
- startAjaxIntro();
490
- cwpTopUpdateFormWithoIntro();
491
- jQuery.ajax({
492
- type: "POST",
493
- url: cwp_top_ajaxload.ajaxurl,
494
- data: {
495
- action: "view_sample_tweet_action"
496
- },
497
- success: function(response) {
498
- if(response !== '') {
499
-
500
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").fadeIn().addClass("active");
501
-
502
- //jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").css("top", ( jQuery(window).height() - this.height() ) / 2+jQuery(window).scrollTop() + "px");
503
- //jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").css("left", ( jQuery(window).width() - this.width() ) / 2+jQuery(window).scrollLeft() + "px");
504
- var elem = jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview");
505
-
506
- jQuery(window).scrollTop(0);
507
-
508
- $json = JSON.parse(response);
509
-
510
- if($json .twitter)
511
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_twitter").html($json .twitter);
512
- else
513
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_twitter").hide().prev().hide();
514
- if($json .facebook)
515
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_facebook").html( $json .facebook) ;
516
- else
517
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_facebook").hide().prev().hide();
518
- if($json .linkedin)
519
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_linkedin").html( $json .linkedin);
520
- else
521
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_linkedin").hide().prev().hide();
522
- if($json .xing)
523
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_xing").html( $json .xing);
524
- else
525
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_xing").hide().prev().hide();
526
- if($json .tumblr)
527
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_tumblr").html( $json .tumblr);
528
- else
529
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_tumblr").hide().prev().hide();
530
-
531
- }
532
- endAjaxIntro();
533
- },
534
- error: function(MLHttpRequest, textStatus, errorThrown) {
535
- console.log("There was an error: "+errorThrown);
536
- endAjaxIntro();
537
- }
538
- });
539
-
540
-
541
- });
542
-
543
- // Stop Tweet Old Post
544
- jQuery("#stop-tweet-old-post").click(function(e){
545
- e.preventDefault();
546
- startAjaxIntro();
547
- cwpTopUpdateForm();
548
-
549
- jQuery.ajax({
550
- type: "POST",
551
- url: cwp_top_ajaxload.ajaxurl,
552
- data: {
553
- action: "stop_tweet_old_post"
554
- },
555
- success: function(response) {
556
- if(response !== '') {
557
- jQuery('.cwp_top_wrapper').append(response);
558
- }
559
- location.reload();
560
- },
561
- error: function(MLHttpRequest, textStatus, errorThrown) {
562
- console.log("There was an error: "+errorThrown);
563
- }
564
- });
565
- endAjaxIntro();
566
- //location.reload();
567
- });
568
-
569
- jQuery(".cwp_sample_tweet_preview_inner button.top_close_popup").on("click",function(e){
570
- jQuery(this).parent().parent().fadeOut().removeClass("active");
571
- });
572
-
573
- jQuery(".cwp_user_pages_inner button.top_close_popup").on("click",function(e){
574
- e.preventDefault();
575
- jQuery(this).parent().parent().parent().fadeOut().removeClass("active");
576
- return false;
577
- });
578
-
579
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner button.tweetitnow").click(function(e){
580
- e.preventDefault();
581
- startAjaxIntro();
582
-
583
- jQuery.ajax({
584
- type: "POST",
585
- url: cwp_top_ajaxload.ajaxurl,
586
- data: {
587
- action: "tweet_now_action"
588
- },
589
- success: function(response) {
590
- endAjaxIntro();
591
- jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").fadeOut().removeClass("active");
592
- jQuery('html, body').animate({
593
- scrollTop: jQuery(".cwp_top_wrapper .cwp_top_status").offset().top
594
- }, 1000);
595
- },
596
- error: function(MLHttpRequest, textStatus, errorThrown) {
597
- console.log("There was an error: "+errorThrown);
598
- endAjaxIntro();
599
- }
600
- });
601
- });
602
-
603
- // Transform the date into a countdown.
604
- var nextTweetDate = jQuery(".cwp_top_container .nextTweet").html();
605
- jQuery(".cwp_top_container .nextTweet").html('');
606
- if(nextTweetDate){
607
- jQuery(".cwp_top_container .nextTweet").countdown({
608
- date: nextTweetDate
609
- });
610
- }
611
- jQuery(".rop-network-countdown").each(function() {
612
- var span = jQuery(this).find('.rop-network-timestamp');
613
- var timestamp = parseInt(span.attr('data-timestamp'));
614
-
615
- if (!isNaN(timestamp)) {
616
- span.countdownPlugin(timestamp * 1000).on('update.countdown', function(event) {
617
- var format = '%H hr %M m %S s';
618
- if(event.offset.days > 0) {
619
- format = '%-d day%!d ' + format;
620
- }
621
- if(event.offset.weeks > 0) {
622
- format = '%-w week%!w ' + format;
623
- }
624
- jQuery(this).html(event.strftime(format));
625
- }).on('finish.countdown', function(event) {
626
- var th = jQuery(this).parent();
627
- th.html("Please wait ....");
628
- setTimeout(function(){
629
- th.html("You can refresh the page to see the next schedule !");
630
-
631
- },1000)
632
-
633
- });
634
- span.parent().show();
635
- }else{
636
- span.parent().hide();
637
- }
638
- })
639
-
640
- jQuery(".cwp-cpt-checkbox").click(function(){
641
- var ck = false;
642
- var th = jQuery(this);
643
- var val = th.val();
644
- if(th.is(":checked")){
645
-
646
- ck = true;
647
- }else{
648
-
649
- ck = false;
650
- }
651
- if(ck){
652
-
653
- jQuery(".cwp-tax-"+val).show();
654
-
655
- }else{
656
-
657
- jQuery(".cwp-tax-"+val + " input").removeAttr("checked");
658
- jQuery(".cwp-tax-"+val).hide();
659
-
660
- }
661
-
662
- });
663
- // Starting the AJAX intro animation
664
- function startAjaxIntro() {
665
- jQuery(".cwp_top_wrapper .ajaxAnimation").fadeIn();
666
- }
667
-
668
- // Ending the AJAX intro animation
669
- function endAjaxIntro() {
670
- jQuery(".cwp_top_wrapper .ajaxAnimation").fadeOut();
671
- }
672
-
673
- // Reset all checkboxes and clear textareas
674
- jQuery.fn.cwpTopResetForm = function() {
675
- //jQuery(this).find("input[type=text], textarea").val("");
676
- //jQuery(this).find("input[type=radio], input[type=checkbox]").checked = false;
677
- }
678
-
679
- jQuery("body").on('click',function(e){
680
-
681
-
682
- if (jQuery(e.target).parent().hasClass("cwp_preview_page")) {
683
- e.preventDefault();
684
-
685
- startAjaxIntro();
686
- var service = jQuery(e.target).parent().attr('service');
687
- var access_token = jQuery(e.target).parent().attr('pagetoken');
688
- var page_id = jQuery(e.target).parent().attr('pageid');
689
-
690
- jQuery.ajax({
691
- type: "POST",
692
- url: cwp_top_ajaxload.ajaxurl,
693
- data: {
694
- action: "add_pages",
695
- currentURL: jQuery("#cwp_top_currenturl").val(),
696
- social_network: service,
697
- page_token:access_token,
698
- page_id:page_id,
699
- picture_url: jQuery(e.target).parent().children().children('img').attr('src'),
700
- page_name: jQuery(e.target).parent().children('.page_name').text()
701
- },
702
- success: function(response) {
703
- switch (service) {
704
-
705
- case 'facebook':
706
- endAjaxIntro();
707
- jQuery(".cwp_top_wrapper .cwp_user_pages").fadeOut().removeClass("active");
708
- window.location.href = response;
709
- break;
710
-
711
- case 'linkedin':
712
- endAjaxIntro();
713
- jQuery(".cwp_top_wrapper .cwp_user_pages").fadeOut().removeClass("active");
714
- window.location.href = response;
715
- break;
716
- }
717
-
718
- },
719
- error: function(MLHttpRequest, textStatus, errorThrown) {
720
- console.log("There was an error: " + errorThrown);
721
- }
722
- });
723
- return false;
724
- }
725
-
726
- });
727
-
728
- // Select all function
729
- jQuery("button.select-all").click(function(e){
730
- e.preventDefault();
731
- if(jQuery(this).hasClass('active')) {
732
- jQuery(this).removeClass('active').text('Select All');
733
- jQuery(this).parent().parent().find('.right input[type=checkbox]').attr('checked', false);
734
- } else {
735
- jQuery(this).addClass('active').text('Deselect All');
736
- jQuery(this).parent().parent().find('.right input[type=checkbox]').attr('checked', true);
737
- }
738
- });
739
- jQuery(".option[data-dependent] select, .option[data-dependent] input[type='checkbox']").change(function(){
740
- cwpDependeField(jQuery(this).closest('.option'));
741
- });
742
-
743
- jQuery("#cwp_top_tabs ul#tabs_menu li ").not(".not-tab").click(function() {
744
- jQuery("#cwp_top_tabs ul#tabs_menu li").removeClass("active");
745
- jQuery("#cwp_top_tabs div.tab").removeClass("active");
746
- var th = jQuery(this);
747
- var index = th.index();
748
- th.addClass("active");
749
-
750
-
751
- jQuery("#cwp_top_tabs div.tab").eq(index).addClass("active");
752
-
753
- return false
754
- });
755
- jQuery(".cwp-schedule-days li").click(function(){
756
- var th = jQuery(this);
757
- if(th.hasClass("active")){
758
- th.removeClass('active');
759
- }else{
760
-
761
- th.addClass('active');
762
- }
763
-
764
- })
765
- jQuery(".cwp-schedule-days li").click(function(){
766
- var container = jQuery(this).parent().parent();
767
- cwpTopRefreshPostingDays(container);
768
-
769
- })
770
- jQuery(".cwp-populate-hidden-radio").click(function(){
771
- var th = jQuery(this);
772
- var id = th.attr('data-hidden');
773
- var value = th.attr('data-value');
774
- jQuery("#"+id).val(value);
775
-
776
- })
777
- jQuery(".cwp-populate-hidden-checkbox").click(function(){
778
- var th = jQuery(this);
779
- var id = th.parent().attr('data-hidden');
780
- var values = [];
781
- th.parent().find('.active').each(function(){
782
- var ith = jQuery(this);
783
- values.push(ith.attr('data-value'));
784
- });
785
- jQuery("#"+id).val(values.join(','));
786
-
787
- })
788
- jQuery(".cwp-according-item .cwp-according-header").click(function(){
789
-
790
- var th = jQuery(this).parent();
791
- if(th.hasClass('active')) return false;
792
- var active = th.parent().children(".active");
793
-
794
-
795
- active.find(".cwp-according-body").slideUp(100,function(){
796
- active.removeClass('active');
797
- });
798
- th.find(".cwp-according-body").slideDown(100,function(){
799
- th.addClass('active');
800
- });
801
- return false;
802
- });
803
- jQuery(".cwp_top_tabs_vertical .cwp_top_tabs_btns li ").not('.not-tab').click(function() {
804
-
805
- var th = jQuery(this);
806
- if(th.parent().parent().find(".tab-vertical").is(":animated")) return false;
807
- var index = th.index();
808
- th.parent().parent().find(".tab-vertical.active").fadeOut(200,function(){
809
- jQuery(this).removeClass("active");
810
- th.parent().find("li").removeClass("active");
811
- th.parent().parent().find(".tab-vertical").eq(index).fadeIn(200,function(){
812
- jQuery(this).addClass("active");
813
- th.parent().find("li").eq(index).addClass("active");
814
- } );
815
- } );
816
-
817
-
818
- return false
819
- });
820
-
821
- jQuery("#cwp_top_tabs").on("click",".cwp-top-times-close",function(){
822
- var li = jQuery(this).parent();
823
- li.remove();
824
- cwpTopRefreshPostingDays( );
825
- })
826
- jQuery(".cwp-add-posting-time").click(function(){
827
-
828
- var container = jQuery(this).parent().parent();
829
- var network = jQuery(this).closest('.tab-vertical').attr('data-network');
830
- container.find(".cwp-posting-times").append(getCwpTopTimeHTML(network));
831
-
832
- cwpTopRefreshPostingDays(container);
833
- return false;
834
- })
835
- cwpBindCheckedHidden();
836
- cwpLoadPostFormaFields();
837
-
838
- cwpTopBindTimes();
839
- jQuery(".cwp-custom-schedule-days").each(function(){
840
- var container = jQuery(this);
841
- cwpTopRefreshPostingDays(container);
842
- });
843
-
844
- jQuery(".cwp-cpt-checkbox").each(function(){
845
- var th = jQuery(this);
846
- if(th.is(":checked")){
847
-
848
- jQuery(".cwp-tax-"+th.val()).show();
849
-
850
- }
851
-
852
- });
853
-
854
- jQuery(".login.pro-only").click(function(e){
855
- if(!ropProAvailable){
856
- window.open(
857
- 'https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=imagepro&utm_medium=link&utm_campaign=top&upgrade=true',
858
- '_blank'
859
- );
860
- return false;
861
- }
862
- });
863
- });
864
-
865
- function cwpDependeField(field,second){
866
-
867
- var dvalues = field.attr("data-dependent");
868
- if(dvalues === undefined) return false;
869
- var value;
870
-
871
- if(field.find("select").length != 0 ){
872
-
873
- value = field.find("select").val();
874
-
875
- }
876
- if(field.find("input[type='checkbox']").length != 0 ){
877
- if(field.find("input[type='checkbox']").is(":checked")){
878
-
879
- value = 'true';
880
-
881
- }else{
882
-
883
- value = 'false';
884
- }
885
-
886
- }
887
- var json = JSON.parse(dvalues);
888
- var item;
889
-
890
- var tmpvalues;
891
- jQuery.each(json,function(k,v){
892
- item = field.parent().find(".twp"+k);
893
- v = v.split(',');
894
- if(jQuery.inArray(value,v) > -1 && !second){
895
- item.slideDown('fast');
896
- cwpDependeField(item);
897
- }else{
898
-
899
- item.slideUp('fast');
900
- cwpDependeField(item,true);
901
- }
902
-
903
- });
904
-
905
- }
906
- function getCwpTopTimeHTML(network){
907
- var cwp_top_time = '<li class="clearfix cwp-top-times-choice">\
908
- <select class="cwp-top-times-hours" name="'+network+'_time_choice_hour[]">\
909
- <option value="00">00</option>\
910
- <option value="01">01</option>\
911
- <option value="02">02</option>\
912
- <option value="03">03</option>\
913
- <option value="04">04</option>\
914
- <option value="05">05</option>\
915
- <option value="06">06</option>\
916
- <option value="07">07</option>\
917
- <option value="08">08</option>\
918
- <option value="09">09</option>\
919
- <option value="10">10</option>\
920
- <option value="11">11</option>\
921
- <option value="12">12</option>\
922
- <option value="13">13</option>\
923
- <option value="14">14</option>\
924
- <option value="15">15</option>\
925
- <option value="16">16</option>\
926
- <option value="17">17</option>\
927
- <option value="18">18</option>\
928
- <option value="19">19</option>\
929
- <option value="20">20</option>\
930
- <option value="21">21</option>\
931
- <option value="22">22</option>\
932
- <option value="23">23</option>\
933
- </select> : \
934
- <select class="cwp-top-times-hours" name="'+network+'_time_choice_min[]">\
935
- <option value="00">00</option>\
936
- <option value="01">01</option>\
937
- <option value="02">02</option>\
938
- <option value="03">03</option>\
939
- <option value="04">04</option>\
940
- <option value="05">05</option>\
941
- <option value="06">06</option>\
942
- <option value="07">07</option>\
943
- <option value="08">08</option>\
944
- <option value="09">09</option>\
945
- <option value="10">10</option>\
946
- <option value="11">11</option>\
947
- <option value="12">12</option>\
948
- <option value="13">13</option>\
949
- <option value="14">14</option>\
950
- <option value="15">15</option>\
951
- <option value="16">16</option>\
952
- <option value="17">17</option>\
953
- <option value="18">18</option>\
954
- <option value="19">19</option>\
955
- <option value="20">20</option>\
956
- <option value="21">21</option>\
957
- <option value="22">22</option>\
958
- <option value="23">23</option>\
959
- <option value="24">24</option>\
960
- <option value="25">25</option>\
961
- <option value="26">26</option>\
962
- <option value="27">27</option>\
963
- <option value="28">28</option>\
964
- <option value="29">29</option>\
965
- <option value="30">30</option>\
966
- <option value="31">31</option>\
967
- <option value="32">32</option>\
968
- <option value="33">33</option>\
969
- <option value="34">34</option>\
970
- <option value="35">35</option>\
971
- <option value="36">36</option>\
972
- <option value="37">37</option>\
973
- <option value="38">38</option>\
974
- <option value="39">39</option>\
975
- <option value="40">40</option>\
976
- <option value="41">41</option>\
977
- <option value="42">42</option>\
978
- <option value="43">43</option>\
979
- <option value="44">44</option>\
980
- <option value="45">45</option>\
981
- <option value="46">46</option>\
982
- <option value="47">47</option>\
983
- <option value="48">48</option>\
984
- <option value="49">49</option>\
985
- <option value="50">50</option>\
986
- <option value="51">51</option>\
987
- <option value="52">52</option>\
988
- <option value="53">53</option>\
989
- <option value="54">54</option>\
990
- <option value="55">55</option>\
991
- <option value="56">56</option>\
992
- <option value="57">57</option>\
993
- <option value="58">58</option>\
994
- <option value="59">59</option>\
995
- </select><span class="cwp-top-times-close">x</span>\
996
- </li>';
997
- return cwp_top_time;
998
- }
999
- function cwpBindCheckedHidden(){
1000
- jQuery(".cwp-populate-hidden-checkbox-group").each(function(){
1001
- var th = jQuery(this);
1002
- var field = th.attr('data-hidden');
1003
- var values = jQuery("#"+field).val();
1004
- values = values.split(',');
1005
-
1006
- jQuery.each(values,function(k,v){
1007
- th.find(".cwp-populate-hidden-checkbox[data-value='"+v+"']").addClass('active');
1008
- });
1009
-
1010
- })
1011
-
1012
- }
1013
-
1014
- function cwpTopBindTimes(){
1015
-
1016
- jQuery(".cwp-posting-times").each(function(){
1017
- var network = jQuery(this).closest('.tab-vertical').attr('data-network');
1018
- var values = jQuery(this).attr('data-times');
1019
- var th = jQuery(this);
1020
- values = jQuery.parseJSON(values);
1021
- if(values[0]){
1022
- if(values[0].hour){
1023
- jQuery.each(values,function(k,v){
1024
- th.append(getCwpTopTimeHTML(network) );
1025
- th.find("li:last select:first").val(v.hour);
1026
- th.find("li:last select:last").val(v.minute);
1027
- });
1028
- }
1029
- }
1030
-
1031
- })
1032
-
1033
- }
1034
- function cwpTopRefreshPostingDays(container){
1035
- if(container === undefined){
1036
- jQuery(".cwp-custom-schedule-days").each(function(){
1037
- var container = jQuery(this);
1038
- cwpTopRefreshPostingDays(container);
1039
- })
1040
- return false;
1041
- }
1042
- var times = container.find(".cwp-top-times-choice").length;
1043
- var days = [];
1044
- var day = "";
1045
- container.find('.cwp-populate-hidden-checkbox.active').each(function(){
1046
- day = jQuery(this).text().substr(0,3);
1047
- days.push(day);
1048
- });
1049
- container.find(".cwp-posts-time-info-days").text(days.join(","));
1050
- container.find(".cwp-posts-time-info-times").text(times);
1051
- }
1052
- function cwpLoadPostFormaFields(){
1053
- jQuery(".option[data-dependent], .option[data-dependent] ").each(function(){
1054
- cwpDependeField(jQuery(this));
1055
-
1056
- })
1057
-
1058
- }
1059
- function showCWPROPError(string){
1060
- jQuery(".cwp_top_status p.cwp-error-label").css( "color", "red" );
1061
- jQuery(".cwp_top_status p.cwp-error-label").html(string);
1062
-
1063
- }
1064
- function cwpTopCheckAccounts(){
1065
- var users = jQuery(".user_details").length;
1066
- return (users > 0);
1067
-
1068
- }
1069
- function clearNotices(){
1070
- jQuery("#rop-log-list").html('');
1071
- jQuery(".rop-error-log span").html('').addClass("no-error");
1072
- jQuery(".active-rop-error-label").hide();
1073
- jQuery(".inactive-rop-error-label").show();
1074
-
1075
-
1076
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ if(confirm('Are you sure you want to reset all settings? You can\'t undo this action.')) {
24
+ e.preventDefault();
25
+ startAjaxIntro();
26
+
27
+ jQuery.ajax({
28
+ type: "POST",
29
+ url: cwp_top_ajaxload.ajaxurl,
30
+ data: {
31
+ action: 'reset_options',
32
+ security: cwp_top_ajaxload.ajaxnonce
33
+ },
34
+ success: function(response) {
35
+ console.log("Success: " + response);
36
+ //jQuery("#cwp_top_form").cwpTopUpdateForm();
37
+ location.reload();
38
+ endAjaxIntro();
39
+ },
40
+ error: function(response) {
41
+ console.log("Error: "+ response);
42
+ }
43
+ });
44
+
45
+ endAjaxIntro();
46
+ return false;
47
+ }
48
+ });
49
+ jQuery("#linkedin-login").on("click",function(){
50
+ if(jQuery(this).hasClass("pro-only")) return false;
51
+ if(jQuery(this).hasClass("rop-not-version")) return false;
52
+ jQuery(".cwp_lkapp_preview").show();
53
+ return false;
54
+ });
55
+ jQuery("#xing-login").on("click",function(){
56
+ if(jQuery(this).hasClass("pro-only")) return false;
57
+ if(jQuery(this).hasClass("rop-not-version")) return false;
58
+ jQuery(".cwp_xingapp_preview").show();
59
+ return false;
60
+ });
61
+ jQuery("#tumblr-login").on("click",function(){
62
+ if(jQuery(this).hasClass("pro-only")) return false;
63
+ if(jQuery(this).hasClass("rop-not-version")) return false;
64
+ jQuery(".cwp_tumblrapp_preview").show();
65
+ return false;
66
+ });
67
+ jQuery("#facebook-login").on("click",function(){
68
+ if(jQuery(this).hasClass("pro-only")) return false;
69
+ if(jQuery(this).hasClass("rop-not-version")) return false;
70
+ if(jQuery(this).hasClass("another-account")){
71
+ addFacebook()
72
+ }else{
73
+ jQuery(".cwp_fbapp_preview").show();
74
+ }
75
+ return false;
76
+ });
77
+ jQuery("#facebook-login").on("click",function(){
78
+ if(jQuery(this).hasClass("pro-only")) return false;
79
+ if(jQuery(this).hasClass("rop-not-version")) return false;
80
+ if(jQuery(this).hasClass("another-account")){
81
+ addFacebook()
82
+ }else{
83
+ jQuery(".cwp_fbapp_preview").show();
84
+ }
85
+ return false;
86
+ });
87
+ jQuery("#cwp_remote_check").on("click",function(){
88
+
89
+ var state = "";
90
+ var th = jQuery(this);
91
+ if(th.hasClass("on")){
92
+ state = "off";
93
+ th.addClass("off").removeClass("on");
94
+ }else{
95
+ state = "on";
96
+ th.addClass("on").removeClass("off");
97
+ }
98
+ jQuery.ajax({
99
+ type: "POST",
100
+ url: cwp_top_ajaxload.ajaxurl,
101
+ data: {
102
+ action: 'remote_trigger',
103
+ state:state,
104
+ security: cwp_top_ajaxload.ajaxnonce
105
+ },
106
+ success: function(response) {
107
+ console.log(response);
108
+ if(!response.success){
109
+ if(response.data && response.data.showAlert) alert(response.data.error);
110
+ state = "off";
111
+ th.addClass("off").removeClass("on");
112
+ }
113
+ },
114
+ error: function(response) {
115
+ console.log("Error: "+ response);
116
+ }
117
+ });
118
+ return false;
119
+ })
120
+ jQuery("#rop-beta-button").on("click",function(){
121
+
122
+ var state = "";
123
+ var th = jQuery(this);
124
+ if(th.hasClass("on")){
125
+ state = "off";
126
+ th.addClass("off").removeClass("on");
127
+ }else{
128
+ state = "on";
129
+ th.addClass("on").removeClass("off");
130
+ }
131
+ jQuery.ajax({
132
+ type: "POST",
133
+ url: cwp_top_ajaxload.ajaxurl,
134
+ data: {
135
+ action: 'beta_user_trigger',
136
+ state:state,
137
+ security: cwp_top_ajaxload.ajaxnonce
138
+ },
139
+ success: function(response) {
140
+ console.log(response);
141
+ },
142
+ error: function(response) {
143
+ console.log("Error: "+ response);
144
+ }
145
+ });
146
+ return false;
147
+ });
148
+
149
+ function cwpTopUpdateForm() {
150
+ startAjaxIntro();
151
+ var data = jQuery("#cwp_top_form").serialize();
152
+ //console.log(data);
153
+
154
+ var formData = {
155
+ action:'updateAllOptions',
156
+ dataSent:data
157
+ }
158
+
159
+ jQuery.ajax({
160
+ type: "POST",
161
+ url: cwp_top_ajaxload.ajaxurl,
162
+ async:false,
163
+ data: {
164
+ action: "update_response",
165
+ dataSent: formData,
166
+ security: cwp_top_ajaxload.ajaxnonce
167
+ },
168
+ success: function(response) {
169
+ console.log(response);
170
+ },
171
+ error: function(MLHttpRequest, textStatus, errorThrown) {
172
+ console.log("There was an error: "+errorThrown);
173
+ }
174
+ });
175
+
176
+ endAjaxIntro();
177
+ return false;
178
+ }
179
+
180
+ function cwpTopUpdateFormWithoIntro() {
181
+ //startAjaxIntro();
182
+ var data = jQuery("#cwp_top_form").serialize();
183
+ //console.log(data);
184
+
185
+ var formData = {
186
+ action:'updateAllOptions',
187
+ dataSent:data
188
+ }
189
+
190
+ jQuery.ajax({
191
+ type: "POST",
192
+ url: cwp_top_ajaxload.ajaxurl,
193
+ data: {
194
+ action: "update_response",
195
+ dataSent: formData,
196
+ security: cwp_top_ajaxload.ajaxnonce
197
+ },
198
+ success: function(response) {
199
+ console.log(response);
200
+ },
201
+ error: function(MLHttpRequest, textStatus, errorThrown) {
202
+ console.log("There was an error: "+errorThrown);
203
+ }
204
+ });
205
+
206
+ //endAjaxIntro();
207
+ return false;
208
+ }
209
+
210
+
211
+
212
+
213
+
214
+
215
+ function addFacebook(){
216
+ var service = "facebook";
217
+
218
+ startAjaxIntro();
219
+ jQuery.ajax({
220
+ type: "POST",
221
+ url: cwp_top_ajaxload.ajaxurl,
222
+ data: {
223
+ action: "display_pages",
224
+ currentURL: jQuery("#cwp_top_currenturl").val(),
225
+ social_network: service,
226
+ security: cwp_top_ajaxload.ajaxnonce
227
+ },
228
+ success: function(response) {
229
+ switch (service) {
230
+
231
+ case 'facebook':
232
+ var elem = jQuery(".cwp_top_wrapper .cwp_user_pages");
233
+ elem.fadeIn().addClass("active");
234
+
235
+ var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
236
+ jQuery('html, body').scrollTop(scrollhere);
237
+ response = JSON.parse(response);
238
+ html='';
239
+ data = response.data;
240
+
241
+ for (i = 0; i < data.length; i++) {
242
+ // if (jQuery(".remove_user a[service=facebook").attr("id")!==data[i].id) {
243
+ html+="<a href='#' class='cwp_preview_page' service='"+service+"' pagetoken='"+data[i].access_token+"' pageid='"+data[i].id+"'>";
244
+ profile_image = 'https://graph.facebook.com/'+data[i].id+'/picture';
245
+ name = data[i].name;
246
+ category = data[i].category.substr(0,9);
247
+ html+="<div class='page_avatar'><img src='"+profile_image+"'/></div><div class='page_name'>"+name+"</div><div class='page_category'>"+category+"</div></a>";
248
+ //}
249
+ }
250
+ //html+='<button class="top_close_popup">Close preview</button>';
251
+ //data.length = 3;
252
+ fheight = (Math.ceil(data.length / 4) )*95;
253
+ //if (fheight<=0) fheight = 175;
254
+ jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_user_pages_inner ").html(html);
255
+ jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_user_pages_inner ").height(fheight);
256
+ jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_sample_tweet_preview_inner ").height(fheight+120);
257
+
258
+ endAjaxIntro();
259
+ break;
260
+
261
+
262
+ case 'linkedin':
263
+ var elem = jQuery(".cwp_top_wrapper .cwp_user_pages");
264
+ elem.fadeIn().addClass("active");
265
+
266
+ var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
267
+ jQuery('html, body').scrollTop(scrollhere);
268
+ response = JSON.parse(response);
269
+ html='';
270
+ data = response.data;
271
+ for (i = 0; i < data.length; i++) {
272
+ html+="<a href='#' class='cwp_preview_page' service='"+service+"' pagetoken='"+data[i].access_token+"' pageid='"+data[i].id+"'>";
273
+ profile_image = 'https://graph.facebook.com/'+data[i].id+'/picture';
274
+ name = data[i].name;
275
+ category = data[i].category.substr(0,9);
276
+ html+="<div class='page_avatar'><img src='"+profile_image+"'/></div><div class='page_name'>"+name+"</div><div class='page_category'>"+category+"</div></a>";
277
+
278
+ }
279
+ jQuery(".cwp_top_wrapper .cwp_user_pages .cwp_user_pages_inner ").html(html);
280
+ endAjaxIntro();
281
+ break;
282
+ }
283
+
284
+ },
285
+ error: function(MLHttpRequest, textStatus, errorThrown) {
286
+ console.log("There was an error: " + errorThrown);
287
+ }
288
+ });
289
+
290
+
291
+
292
+ return false;
293
+ }
294
+
295
+ // Add New Account
296
+ if ((cwpfbadd) && jQuery("#cwp_top_currenturl").attr("data-cnetwork")!= 'tumblr') {
297
+ addFacebook();
298
+ };
299
+
300
+ // Add New Twitter Account
301
+ jQuery("#twitter-login,.top_authorize").click(function(e){
302
+
303
+ if(jQuery(this).hasClass("rop-not-version")) return false;
304
+ var service = jQuery(this).attr('service');
305
+ var action = "add_new_account";
306
+ var extra = {};
307
+ if(service != 'twitter'){
308
+ e.preventDefault();
309
+ startAjaxIntro();
310
+ if (service=='facebook') {
311
+ extra.app_id = jQuery("#top_opt_app_id").val();
312
+ extra.app_secret = jQuery("#top_opt_app_secret").val();
313
+ }
314
+
315
+ if(service == 'linkedin') {
316
+ extra.app_id = jQuery("#top_opt_app_id_lk").val();
317
+ extra.app_secret = jQuery("#top_opt_app_secret_lk").val();
318
+ }
319
+ if(service == 'xing') {
320
+ extra.app_id = jQuery("#top_opt_app_id_xing").val();
321
+ extra.app_secret = jQuery("#top_opt_app_secret_xing").val();
322
+ }
323
+ if(service == 'tumblr') {
324
+ extra.app_id = jQuery("#top_opt_app_id_tumblr").val();
325
+ extra.app_secret = jQuery("#top_opt_app_secret_tumblr").val();
326
+ extra.app_url = jQuery("#top_opt_app_url_tumblr").val();
327
+ }
328
+
329
+
330
+ }
331
+ startAjaxIntro();
332
+ jQuery.ajax({
333
+ type: "POST",
334
+ url: cwp_top_ajaxload.ajaxurl,
335
+ data: {
336
+ action: action,
337
+ currentURL: jQuery("#cwp_top_currenturl").val(),
338
+ social_network: service,
339
+ extra:extra,
340
+ security: cwp_top_ajaxload.ajaxnonce
341
+ },
342
+ dataType:"json",
343
+ success: function(response) {
344
+
345
+ if(response.url){
346
+ window.location.href = response.url;
347
+ }else{
348
+ jQuery(".cwp_fbapp_preview").hide();
349
+ jQuery(".cwp_lkapp_preview").hide();
350
+ endAjaxIntro();
351
+
352
+ }
353
+ /*if (response.indexOf("upgrade to the PRO")===-1) {
354
+ switch (service) {
355
+ case 'twitter':
356
+ window.location.href = response;
357
+ break;
358
+ case 'facebook':
359
+ if (another===0) {
360
+
361
+ var elem = jQuery(".cwp_top_wrapper .cwp_fbapp_preview")
362
+ elem.fadeIn().addClass("active");
363
+
364
+ var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
365
+ jQuery('html, body').scrollTop(scrollhere);
366
+ } else {
367
+ addFacebook();
368
+ }
369
+ endAjaxIntro();
370
+
371
+ break;
372
+ case 'linkedin':
373
+ var elem = jQuery(".cwp_top_wrapper .cwp_lkapp_preview")
374
+ elem.fadeIn().addClass("active");
375
+
376
+ var scrollhere = elem.offset().top+(jQuery(window).height()+elem.height())/2;
377
+ jQuery('html, body').scrollTop(scrollhere);
378
+ // html = "<input type='text' placeholder='App key'/>";
379
+ //jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet").html(html);
380
+ endAjaxIntro();
381
+ break;
382
+ }
383
+ }else {
384
+ jQuery(".cwp_top_status .inactive").html(response);
385
+ endAjaxIntro();
386
+ }*/
387
+
388
+
389
+ },
390
+ error: function(MLHttpRequest, textStatus, errorThrown) {
391
+ console.log("There was an error: " + errorThrown);
392
+ }
393
+ });
394
+
395
+ return false;
396
+ });
397
+
398
+ // Log Out Twitter User
399
+ jQuery("#cwp_top_form .logout_user").click(function(e){
400
+ e.preventDefault();
401
+ startAjaxIntro();
402
+
403
+ var userID = jQuery(this).attr('id');
404
+
405
+ jQuery.ajax({
406
+ type: "POST",
407
+ url: cwp_top_ajaxload.ajaxurl,
408
+ data: {
409
+ action: "log_out_user",
410
+ user_id: userID,
411
+ security: cwp_top_ajaxload.ajaxnonce
412
+ },
413
+ success: function(response) {
414
+ window.location.href = jQuery("#cwp_top_currenturl").val();
415
+ },
416
+ error: function(MLHttpRequest, textStatus, errorThrown) {
417
+ console.log("There was an error: "+errorThrown);
418
+ }
419
+ });
420
+
421
+ endAjaxIntro();
422
+ });
423
+ jQuery("#rop-clear-log").on("click",function(){
424
+ clearNotices();
425
+ jQuery.ajax({
426
+ type: "POST",
427
+ url: cwp_top_ajaxload.ajaxurl,
428
+ data: {
429
+ action: "rop_clear_log",
430
+ security: cwp_top_ajaxload.ajaxnonce
431
+ }
432
+ });
433
+ return false;
434
+ })
435
+ // Start Tweet
436
+ jQuery("#tweet-now").click(function(e){
437
+
438
+ startAjaxIntro();
439
+ cwpTopUpdateForm();
440
+
441
+ jQuery.ajax({
442
+ type: "POST",
443
+ url: cwp_top_ajaxload.ajaxurl,
444
+ data: {
445
+ action: "tweet_old_post_action",
446
+ security: cwp_top_ajaxload.ajaxnonce
447
+ },
448
+ success: function(response) {
449
+
450
+ location.reload();
451
+ },
452
+ error: function(MLHttpRequest, textStatus, errorThrown) {
453
+ console.log("There was an error: "+errorThrown);
454
+ }
455
+ });
456
+
457
+ endAjaxIntro();
458
+ });
459
+
460
+ setInterval(function(){ jQuery.ajax({
461
+ type: "POST",
462
+ url: cwp_top_ajaxload.ajaxurl,
463
+ data: {
464
+ action: "getNotice_action",
465
+ security: cwp_top_ajaxload.ajaxnonce
466
+ },
467
+ dataType:"json",
468
+ success: function(response) {
469
+
470
+ if(response.length > 0 ){
471
+ jQuery(".inactive-rop-error-label").hide();
472
+ jQuery(".active-rop-error-label").show();
473
+ jQuery(".rop-error-log span").html(response.length).removeClass('no-error');
474
+ jQuery(".active-rop-error-label").html( " You have <b>" + response.length + " </b>new messages ! Go to Log tab to see them");
475
+ jQuery("#rop-log-list").html('');
476
+ jQuery.each(response,function(k,v){
477
+
478
+ 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>');
479
+
480
+
481
+ })
482
+
483
+ }else{
484
+ clearNotices();
485
+ jQuery("#rop-log-list").html('<li class="rop-log-item rop-notice"> <span class="rop-log-text">You have no messages ! </span> </li>');
486
+
487
+ }
488
+
489
+ }
490
+ } )
491
+ },3000);
492
+
493
+ jQuery("#see-sample-tweet").click(function(e){
494
+ if(!cwpTopCheckAccounts()){
495
+ jQuery("#tabs_menu li:first").trigger("click");
496
+ showCWPROPError("You need to add an account in order to start posting.");
497
+ return false;
498
+ }
499
+ e.preventDefault();
500
+ startAjaxIntro();
501
+ cwpTopUpdateFormWithoIntro();
502
+ jQuery.ajax({
503
+ type: "POST",
504
+ url: cwp_top_ajaxload.ajaxurl,
505
+ data: {
506
+ action: "view_sample_tweet_action",
507
+ security: cwp_top_ajaxload.ajaxnonce
508
+ },
509
+ success: function(response) {
510
+ if(response !== '') {
511
+
512
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").fadeIn().addClass("active");
513
+
514
+ //jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").css("top", ( jQuery(window).height() - this.height() ) / 2+jQuery(window).scrollTop() + "px");
515
+ //jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").css("left", ( jQuery(window).width() - this.width() ) / 2+jQuery(window).scrollLeft() + "px");
516
+ var elem = jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview");
517
+
518
+ jQuery(window).scrollTop(0);
519
+
520
+ $json = JSON.parse(response);
521
+
522
+ if($json .twitter)
523
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_twitter").html($json .twitter);
524
+ else
525
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_twitter").hide().prev().hide();
526
+ if($json .facebook)
527
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_facebook").html( $json .facebook) ;
528
+ else
529
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_facebook").hide().prev().hide();
530
+ if($json .linkedin)
531
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_linkedin").html( $json .linkedin);
532
+ else
533
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_linkedin").hide().prev().hide();
534
+ if($json .xing)
535
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_xing").html( $json .xing);
536
+ else
537
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_xing").hide().prev().hide();
538
+ if($json .tumblr)
539
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_tumblr").html( $json .tumblr);
540
+ else
541
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner .sample_tweet.sample_tweet_tumblr").hide().prev().hide();
542
+
543
+ }
544
+ endAjaxIntro();
545
+ },
546
+ error: function(MLHttpRequest, textStatus, errorThrown) {
547
+ console.log("There was an error: "+errorThrown);
548
+ endAjaxIntro();
549
+ }
550
+ });
551
+
552
+
553
+ });
554
+
555
+ // Stop Tweet Old Post
556
+ jQuery("#stop-tweet-old-post").click(function(e){
557
+ e.preventDefault();
558
+ startAjaxIntro();
559
+ cwpTopUpdateForm();
560
+
561
+ jQuery.ajax({
562
+ type: "POST",
563
+ url: cwp_top_ajaxload.ajaxurl,
564
+ data: {
565
+ action: "stop_tweet_old_post",
566
+ security: cwp_top_ajaxload.ajaxnonce
567
+ },
568
+ success: function(response) {
569
+ if(response !== '') {
570
+ jQuery('.cwp_top_wrapper').append(response);
571
+ }
572
+ location.reload();
573
+ },
574
+ error: function(MLHttpRequest, textStatus, errorThrown) {
575
+ console.log("There was an error: "+errorThrown);
576
+ }
577
+ });
578
+ endAjaxIntro();
579
+ //location.reload();
580
+ });
581
+
582
+ jQuery(".cwp_sample_tweet_preview_inner button.top_close_popup").on("click",function(e){
583
+ jQuery(this).parent().parent().fadeOut().removeClass("active");
584
+ });
585
+
586
+ jQuery(".cwp_user_pages_inner button.top_close_popup").on("click",function(e){
587
+ e.preventDefault();
588
+ jQuery(this).parent().parent().parent().fadeOut().removeClass("active");
589
+ return false;
590
+ });
591
+
592
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview .cwp_sample_tweet_preview_inner button.tweetitnow").click(function(e){
593
+ e.preventDefault();
594
+ startAjaxIntro();
595
+
596
+ jQuery.ajax({
597
+ type: "POST",
598
+ url: cwp_top_ajaxload.ajaxurl,
599
+ data: {
600
+ action: "tweet_now_action",
601
+ security: cwp_top_ajaxload.ajaxnonce
602
+ },
603
+ success: function(response) {
604
+ endAjaxIntro();
605
+ jQuery(".cwp_top_wrapper .cwp_sample_tweet_preview").fadeOut().removeClass("active");
606
+ jQuery('html, body').animate({
607
+ scrollTop: jQuery(".cwp_top_wrapper .cwp_top_status").offset().top
608
+ }, 1000);
609
+ },
610
+ error: function(MLHttpRequest, textStatus, errorThrown) {
611
+ console.log("There was an error: "+errorThrown);
612
+ endAjaxIntro();
613
+ }
614
+ });
615
+ });
616
+
617
+ // Transform the date into a countdown.
618
+ var nextTweetDate = jQuery(".cwp_top_container .nextTweet").html();
619
+ jQuery(".cwp_top_container .nextTweet").html('');
620
+ if(nextTweetDate){
621
+ jQuery(".cwp_top_container .nextTweet").countdown({
622
+ date: nextTweetDate
623
+ });
624
+ }
625
+ jQuery(".rop-network-countdown").each(function() {
626
+ var span = jQuery(this).find('.rop-network-timestamp');
627
+ var timestamp = parseInt(span.attr('data-timestamp'));
628
+
629
+ if (!isNaN(timestamp)) {
630
+ span.countdownPlugin(timestamp * 1000).on('update.countdown', function(event) {
631
+ var format = '%H hr %M m %S s';
632
+ if(event.offset.days > 0) {
633
+ format = '%-d day%!d ' + format;
634
+ }
635
+ if(event.offset.weeks > 0) {
636
+ format = '%-w week%!w ' + format;
637
+ }
638
+ jQuery(this).html(event.strftime(format));
639
+ }).on('finish.countdown', function(event) {
640
+ var th = jQuery(this).parent();
641
+ th.html("Please wait ....");
642
+ setTimeout(function(){
643
+ th.html("You can refresh the page to see the next schedule !");
644
+
645
+ },1000)
646
+
647
+ });
648
+ span.parent().show();
649
+ }else{
650
+ span.parent().hide();
651
+ }
652
+ })
653
+
654
+ jQuery(".cwp-cpt-checkbox").click(function(){
655
+ var ck = false;
656
+ var th = jQuery(this);
657
+ var val = th.val();
658
+ if(th.is(":checked")){
659
+
660
+ ck = true;
661
+ }else{
662
+
663
+ ck = false;
664
+ }
665
+ if(ck){
666
+
667
+ jQuery(".cwp-tax-"+val).show();
668
+
669
+ }else{
670
+
671
+ jQuery(".cwp-tax-"+val + " input").removeAttr("checked");
672
+ jQuery(".cwp-tax-"+val).hide();
673
+
674
+ }
675
+
676
+ });
677
+ // Starting the AJAX intro animation
678
+ function startAjaxIntro() {
679
+ jQuery(".cwp_top_wrapper .ajaxAnimation").fadeIn();
680
+ }
681
+
682
+ // Ending the AJAX intro animation
683
+ function endAjaxIntro() {
684
+ jQuery(".cwp_top_wrapper .ajaxAnimation").fadeOut();
685
+ }
686
+
687
+ // Reset all checkboxes and clear textareas
688
+ jQuery.fn.cwpTopResetForm = function() {
689
+ //jQuery(this).find("input[type=text], textarea").val("");
690
+ //jQuery(this).find("input[type=radio], input[type=checkbox]").checked = false;
691
+ }
692
+
693
+ jQuery("body").on('click',function(e){
694
+
695
+
696
+ if (jQuery(e.target).parent().hasClass("cwp_preview_page")) {
697
+ e.preventDefault();
698
+
699
+ startAjaxIntro();
700
+ var service = jQuery(e.target).parent().attr('service');
701
+ var access_token = jQuery(e.target).parent().attr('pagetoken');
702
+ var page_id = jQuery(e.target).parent().attr('pageid');
703
+
704
+ jQuery.ajax({
705
+ type: "POST",
706
+ url: cwp_top_ajaxload.ajaxurl,
707
+ data: {
708
+ action: "add_pages",
709
+ currentURL: jQuery("#cwp_top_currenturl").val(),
710
+ social_network: service,
711
+ page_token:access_token,
712
+ page_id:page_id,
713
+ picture_url: jQuery(e.target).parent().children().children('img').attr('src'),
714
+ page_name: jQuery(e.target).parent().children('.page_name').text(),
715
+ security: cwp_top_ajaxload.ajaxnonce
716
+ },
717
+ success: function(response) {
718
+ switch (service) {
719
+
720
+ case 'facebook':
721
+ endAjaxIntro();
722
+ jQuery(".cwp_top_wrapper .cwp_user_pages").fadeOut().removeClass("active");
723
+ window.location.href = response;
724
+ break;
725
+
726
+ case 'linkedin':
727
+ endAjaxIntro();
728
+ jQuery(".cwp_top_wrapper .cwp_user_pages").fadeOut().removeClass("active");
729
+ window.location.href = response;
730
+ break;
731
+ }
732
+
733
+ },
734
+ error: function(MLHttpRequest, textStatus, errorThrown) {
735
+ console.log("There was an error: " + errorThrown);
736
+ }
737
+ });
738
+ return false;
739
+ }
740
+
741
+ });
742
+
743
+ // Select all function
744
+ jQuery("button.select-all").click(function(e){
745
+ e.preventDefault();
746
+ if(jQuery(this).hasClass('active')) {
747
+ jQuery(this).removeClass('active').text('Select All');
748
+ jQuery(this).parent().parent().find('.right input[type=checkbox]').attr('checked', false);
749
+ } else {
750
+ jQuery(this).addClass('active').text('Deselect All');
751
+ jQuery(this).parent().parent().find('.right input[type=checkbox]').attr('checked', true);
752
+ }
753
+ });
754
+ jQuery(".option[data-dependent] select, .option[data-dependent] input[type='checkbox']").change(function(){
755
+ cwpDependeField(jQuery(this).closest('.option'));
756
+ });
757
+
758
+ jQuery("#cwp_top_tabs ul#tabs_menu li ").not(".not-tab").click(function() {
759
+ jQuery("#cwp_top_tabs ul#tabs_menu li").removeClass("active");
760
+ jQuery("#cwp_top_tabs div.tab").removeClass("active");
761
+ var th = jQuery(this);
762
+ var index = th.index();
763
+ th.addClass("active");
764
+
765
+
766
+ jQuery("#cwp_top_tabs div.tab").eq(index).addClass("active");
767
+
768
+ return false
769
+ });
770
+ jQuery(".cwp-schedule-days li").click(function(){
771
+ var th = jQuery(this);
772
+ if(th.hasClass("active")){
773
+ th.removeClass('active');
774
+ }else{
775
+
776
+ th.addClass('active');
777
+ }
778
+
779
+ })
780
+ jQuery(".cwp-schedule-days li").click(function(){
781
+ var container = jQuery(this).parent().parent();
782
+ cwpTopRefreshPostingDays(container);
783
+
784
+ })
785
+ jQuery(".cwp-populate-hidden-radio").click(function(){
786
+ var th = jQuery(this);
787
+ var id = th.attr('data-hidden');
788
+ var value = th.attr('data-value');
789
+ jQuery("#"+id).val(value);
790
+
791
+ })
792
+ jQuery(".cwp-populate-hidden-checkbox").click(function(){
793
+ var th = jQuery(this);
794
+ var id = th.parent().attr('data-hidden');
795
+ var values = [];
796
+ th.parent().find('.active').each(function(){
797
+ var ith = jQuery(this);
798
+ values.push(ith.attr('data-value'));
799
+ });
800
+ jQuery("#"+id).val(values.join(','));
801
+
802
+ })
803
+ jQuery(".cwp-according-item .cwp-according-header").click(function(){
804
+
805
+ var th = jQuery(this).parent();
806
+ if(th.hasClass('active')) return false;
807
+ var active = th.parent().children(".active");
808
+
809
+
810
+ active.find(".cwp-according-body").slideUp(100,function(){
811
+ active.removeClass('active');
812
+ });
813
+ th.find(".cwp-according-body").slideDown(100,function(){
814
+ th.addClass('active');
815
+ });
816
+ return false;
817
+ });
818
+ jQuery(".cwp_top_tabs_vertical .cwp_top_tabs_btns li ").not('.not-tab').click(function() {
819
+
820
+ var th = jQuery(this);
821
+ if(th.parent().parent().find(".tab-vertical").is(":animated")) return false;
822
+ var index = th.index();
823
+ th.parent().parent().find(".tab-vertical.active").fadeOut(200,function(){
824
+ jQuery(this).removeClass("active");
825
+ th.parent().find("li").removeClass("active");
826
+ th.parent().parent().find(".tab-vertical").eq(index).fadeIn(200,function(){
827
+ jQuery(this).addClass("active");
828
+ th.parent().find("li").eq(index).addClass("active");
829
+ } );
830
+ } );
831
+
832
+
833
+ return false
834
+ });
835
+
836
+ jQuery("#cwp_top_tabs").on("click",".cwp-top-times-close",function(){
837
+ var li = jQuery(this).parent();
838
+ li.remove();
839
+ cwpTopRefreshPostingDays( );
840
+ })
841
+ jQuery(".cwp-add-posting-time").click(function(){
842
+
843
+ var container = jQuery(this).parent().parent();
844
+ var network = jQuery(this).closest('.tab-vertical').attr('data-network');
845
+ container.find(".cwp-posting-times").append(getCwpTopTimeHTML(network));
846
+
847
+ cwpTopRefreshPostingDays(container);
848
+ return false;
849
+ })
850
+ cwpBindCheckedHidden();
851
+ cwpLoadPostFormaFields();
852
+
853
+ cwpTopBindTimes();
854
+ jQuery(".cwp-custom-schedule-days").each(function(){
855
+ var container = jQuery(this);
856
+ cwpTopRefreshPostingDays(container);
857
+ });
858
+
859
+ jQuery(".cwp-cpt-checkbox").each(function(){
860
+ var th = jQuery(this);
861
+ if(th.is(":checked")){
862
+
863
+ jQuery(".cwp-tax-"+th.val()).show();
864
+
865
+ }
866
+
867
+ });
868
+
869
+ jQuery(".login.pro-only").click(function(e){
870
+ if(!ropProAvailable){
871
+ window.open(
872
+ 'https://themeisle.com/plugins/tweet-old-post-pro/?utm_source=imagepro&utm_medium=link&utm_campaign=top&upgrade=true',
873
+ '_blank'
874
+ );
875
+ return false;
876
+ }
877
+ });
878
+ });
879
+
880
+ function cwpDependeField(field,second){
881
+
882
+ var dvalues = field.attr("data-dependent");
883
+ if(dvalues === undefined) return false;
884
+ var value;
885
+
886
+ if(field.find("select").length != 0 ){
887
+
888
+ value = field.find("select").val();
889
+
890
+ }
891
+ if(field.find("input[type='checkbox']").length != 0 ){
892
+ if(field.find("input[type='checkbox']").is(":checked")){
893
+
894
+ value = 'true';
895
+
896
+ }else{
897
+
898
+ value = 'false';
899
+ }
900
+
901
+ }
902
+ var json = JSON.parse(dvalues);
903
+ var item;
904
+
905
+ var tmpvalues;
906
+ jQuery.each(json,function(k,v){
907
+ item = field.parent().find(".twp"+k);
908
+ v = v.split(',');
909
+ if(jQuery.inArray(value,v) > -1 && !second){
910
+ item.slideDown('fast');
911
+ cwpDependeField(item);
912
+ }else{
913
+
914
+ item.slideUp('fast');
915
+ cwpDependeField(item,true);
916
+ }
917
+
918
+ });
919
+
920
+ }
921
+ function getCwpTopTimeHTML(network){
922
+ var cwp_top_time = '<li class="clearfix cwp-top-times-choice">\
923
+ <select class="cwp-top-times-hours" name="'+network+'_time_choice_hour[]">\
924
+ <option value="00">00</option>\
925
+ <option value="01">01</option>\
926
+ <option value="02">02</option>\
927
+ <option value="03">03</option>\
928
+ <option value="04">04</option>\
929
+ <option value="05">05</option>\
930
+ <option value="06">06</option>\
931
+ <option value="07">07</option>\
932
+ <option value="08">08</option>\
933
+ <option value="09">09</option>\
934
+ <option value="10">10</option>\
935
+ <option value="11">11</option>\
936
+ <option value="12">12</option>\
937
+ <option value="13">13</option>\
938
+ <option value="14">14</option>\
939
+ <option value="15">15</option>\
940
+ <option value="16">16</option>\
941
+ <option value="17">17</option>\
942
+ <option value="18">18</option>\
943
+ <option value="19">19</option>\
944
+ <option value="20">20</option>\
945
+ <option value="21">21</option>\
946
+ <option value="22">22</option>\
947
+ <option value="23">23</option>\
948
+ </select> : \
949
+ <select class="cwp-top-times-hours" name="'+network+'_time_choice_min[]">\
950
+ <option value="00">00</option>\
951
+ <option value="01">01</option>\
952
+ <option value="02">02</option>\
953
+ <option value="03">03</option>\
954
+ <option value="04">04</option>\
955
+ <option value="05">05</option>\
956
+ <option value="06">06</option>\
957
+ <option value="07">07</option>\
958
+ <option value="08">08</option>\
959
+ <option value="09">09</option>\
960
+ <option value="10">10</option>\
961
+ <option value="11">11</option>\
962
+ <option value="12">12</option>\
963
+ <option value="13">13</option>\
964
+ <option value="14">14</option>\
965
+ <option value="15">15</option>\
966
+ <option value="16">16</option>\
967
+ <option value="17">17</option>\
968
+ <option value="18">18</option>\
969
+ <option value="19">19</option>\
970
+ <option value="20">20</option>\
971
+ <option value="21">21</option>\
972
+ <option value="22">22</option>\
973
+ <option value="23">23</option>\
974
+ <option value="24">24</option>\
975
+ <option value="25">25</option>\
976
+ <option value="26">26</option>\
977
+ <option value="27">27</option>\
978
+ <option value="28">28</option>\
979
+ <option value="29">29</option>\
980
+ <option value="30">30</option>\
981
+ <option value="31">31</option>\
982
+ <option value="32">32</option>\
983
+ <option value="33">33</option>\
984
+ <option value="34">34</option>\
985
+ <option value="35">35</option>\
986
+ <option value="36">36</option>\
987
+ <option value="37">37</option>\
988
+ <option value="38">38</option>\
989
+ <option value="39">39</option>\
990
+ <option value="40">40</option>\
991
+ <option value="41">41</option>\
992
+ <option value="42">42</option>\
993
+ <option value="43">43</option>\
994
+ <option value="44">44</option>\
995
+ <option value="45">45</option>\
996
+ <option value="46">46</option>\
997
+ <option value="47">47</option>\
998
+ <option value="48">48</option>\
999
+ <option value="49">49</option>\
1000
+ <option value="50">50</option>\
1001
+ <option value="51">51</option>\
1002
+ <option value="52">52</option>\
1003
+ <option value="53">53</option>\
1004
+ <option value="54">54</option>\
1005
+ <option value="55">55</option>\
1006
+ <option value="56">56</option>\
1007
+ <option value="57">57</option>\
1008
+ <option value="58">58</option>\
1009
+ <option value="59">59</option>\
1010
+ </select><span class="cwp-top-times-close">x</span>\
1011
+ </li>';
1012
+ return cwp_top_time;
1013
+ }
1014
+ function cwpBindCheckedHidden(){
1015
+ jQuery(".cwp-populate-hidden-checkbox-group").each(function(){
1016
+ var th = jQuery(this);
1017
+ var field = th.attr('data-hidden');
1018
+ var values = jQuery("#"+field).val();
1019
+ values = values.split(',');
1020
+
1021
+ jQuery.each(values,function(k,v){
1022
+ th.find(".cwp-populate-hidden-checkbox[data-value='"+v+"']").addClass('active');
1023
+ });
1024
+
1025
+ })
1026
+
1027
+ }
1028
+
1029
+ function cwpTopBindTimes(){
1030
+
1031
+ jQuery(".cwp-posting-times").each(function(){
1032
+ var network = jQuery(this).closest('.tab-vertical').attr('data-network');
1033
+ var values = jQuery(this).attr('data-times');
1034
+ var th = jQuery(this);
1035
+ values = jQuery.parseJSON(values);
1036
+ if(values[0]){
1037
+ if(values[0].hour){
1038
+ jQuery.each(values,function(k,v){
1039
+ th.append(getCwpTopTimeHTML(network) );
1040
+ th.find("li:last select:first").val(v.hour);
1041
+ th.find("li:last select:last").val(v.minute);
1042
+ });
1043
+ }
1044
+ }
1045
+
1046
+ })
1047
+
1048
+ }
1049
+ function cwpTopRefreshPostingDays(container){
1050
+ if(container === undefined){
1051
+ jQuery(".cwp-custom-schedule-days").each(function(){
1052
+ var container = jQuery(this);
1053
+ cwpTopRefreshPostingDays(container);
1054
+ })
1055
+ return false;
1056
+ }
1057
+ var times = container.find(".cwp-top-times-choice").length;
1058
+ var days = [];
1059
+ var day = "";
1060
+ container.find('.cwp-populate-hidden-checkbox.active').each(function(){
1061
+ day = jQuery(this).text().substr(0,3);
1062
+ days.push(day);
1063
+ });
1064
+ container.find(".cwp-posts-time-info-days").text(days.join(","));
1065
+ container.find(".cwp-posts-time-info-times").text(times);
1066
+ }
1067
+ function cwpLoadPostFormaFields(){
1068
+ jQuery(".option[data-dependent], .option[data-dependent] ").each(function(){
1069
+ cwpDependeField(jQuery(this));
1070
+
1071
+ })
1072
+
1073
+ }
1074
+ function showCWPROPError(string){
1075
+ jQuery(".cwp_top_status p.cwp-error-label").css( "color", "red" );
1076
+ jQuery(".cwp_top_status p.cwp-error-label").html(string);
1077
+
1078
+ }
1079
+ function cwpTopCheckAccounts(){
1080
+ var users = jQuery(".user_details").length;
1081
+ return (users > 0);
1082
+
1083
+ }
1084
+ function clearNotices(){
1085
+ jQuery("#rop-log-list").html('');
1086
+ jQuery(".rop-error-log span").html('').addClass("no-error");
1087
+ jQuery(".active-rop-error-label").hide();
1088
+ jQuery(".inactive-rop-error-label").show();
1089
+
1090
+
1091
+ }
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,786 +1,812 @@
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.4.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
- ### What the plugin can do ?
14
-
15
- 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>!
16
-
17
- 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>.
18
-
19
- Revive Old Post is offered by ThemeIsle and CodeinWP where 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>
20
-
21
- **Revive Old Post provides following features**
22
-
23
- - Share new and old posts.
24
- - Choose the time between posts.
25
- - Choose the number of posts to share.
26
- - Use hashtags to focus on topics.
27
- - Include links back to your site.
28
- - Exclude categories
29
- - Exclude specific posts.
30
-
31
-
32
- > ### Why to upgrade to PRO ?
33
-
34
- > 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.
35
-
36
- > Other notable features :
37
-
38
- > * Multiple Social Accounts
39
- > * Custom Post Types support
40
- > * Linkedin support
41
- > * Post with image
42
- > * Custom Schedule
43
- > * Post to Xing / Tumblr
44
-
45
- Some of you reported some scheduling issues, after investigation work looks like this is coming from some web hosts, make sure you check-out this post about <a rel="friend" href="http://www.codeinwp.com/blog/best-wordpress-shared-hosting-providers/">shared WordPress hosting</a>, which should help you pick a good one.
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
- **New in v7.2**
123
-
124
- * Fixed randomization algorithm, preventing sharing of same post twice until the end of cycle.
125
- * Fixed date range selection when both values are 0
126
-
127
-
128
- **New in v7.1**
129
-
130
- * Fixed inconsistency in the schedule. Now posting is more accurate.
131
- * Fixed image sharing issue which was not working for some server configuration
132
-
133
-
134
- **New in v7.0.8**
135
- * Added facebook tutorial for facebook share.
136
- * Fixed multisite issue for redirect url
137
- * Making translation ready for new wordpress.org system
138
- * Fixed single quotes problem
139
- * Fixed tumblr tags
140
-
141
- **New in v7.0.4**
142
-
143
- * Changed pro banner.
144
- * Fixed bugs with the new facebook api changes.
145
-
146
- **New in v7.0.2**
147
-
148
- * Removed twitter update_with_media call.
149
- * Fixed activation error notices when WP_DEBUG was enabled
150
-
151
- **New in v7.0**
152
-
153
- * Fixed issue with duplicate posting
154
- * Added Xing and Tumbr Networks
155
- * Fixed issue with random posts on large databases.
156
-
157
- **New in v6.9.6**
158
-
159
- * Fixed issue cron stop
160
- * Fixed issue for excluded post
161
- * Added exclude posts from custom post types.
162
-
163
-
164
- **New in v6.9.4**
165
-
166
- * Fixed issue with share more than once option
167
-
168
-
169
- **New in v6.9.3**
170
-
171
- * Improved logging system
172
- * Fixed vulnerability issue with update options
173
- * Fixed issues with custom schedule timing
174
- * Improved excluded category design
175
- * Fixed excluded post selection issue
176
-
177
-
178
- **New in v6.8.8**
179
-
180
- Added a more complex logging system
181
- Fixed multiple accounts/posts issue
182
- Fixed 404 twitter login error
183
-
184
- **New in v6.8.5**
185
-
186
- Completely reworked how cron is working
187
- Separated post format by network
188
- Added support for custom schedule
189
- Added remote cron trigger feature
190
-
191
- **New in v6.8.2**
192
-
193
- Fixed no available posts issue
194
-
195
- **New in v6.8.1**
196
-
197
- Added language support and custom post types
198
-
199
- **New in v6.8**
200
-
201
- Added Facebook and Linkedin
202
-
203
- **New in v6.7**
204
-
205
- Fixed interrupted posting issue
206
-
207
- **New in v6.6**
208
-
209
- Fixed excluded category issue and some small others.
210
-
211
- **New in v6.7.7**
212
-
213
- Added Facebook and Linkedin, Facebook is also enabled for the free users
214
- Improved Post with image feature, we can also pull the image from post
215
- Fixed Tweet over 140 chars error
216
- Added Google Analytics Campaign Tracking
217
- Rebranded into Revive Old Post
218
-
219
- **New in v6.7.5**
220
-
221
- Fixed some debug messages
222
-
223
- **New in v6.7.3**
224
-
225
- Added settings link, fixed tweet cutting and added cron debug messages
226
-
227
- **New in v6.6**
228
-
229
- Fixed excluded category issue and some small others.
230
-
231
- **New in v6.0**
232
-
233
- Tweets now are posted immediately, fixed scheduling and added debug messages
234
-
235
- **New in v5.9**
236
-
237
- Tags are converted to lowercase automatically now
238
-
239
- **New in v5.8**
240
-
241
- Added post by image options in the pro version and some fixes.
242
-
243
- **New in v5.7**
244
-
245
- Fixed permissions
246
-
247
- **New in v5.6**
248
-
249
- Added bit.ly back
250
-
251
- **New in v5.5**
252
-
253
- Fixed the table prefix issue
254
-
255
- **New in v5.4**
256
-
257
- Fixed the hashtags length issue
258
-
259
- **New in v5.3**
260
-
261
- Fixed the custom field issue
262
-
263
- **New in v5.2**
264
-
265
- Fixed exclude categories error, added wp short url, fixed oauth error, removed broken shorten services.
266
-
267
- **New in v5.0**
268
-
269
- - 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.
270
-
271
- **New in v4.0.9**
272
-
273
- - Resolved twitter connectivity issue, for users who were not able to connect in 4.0.8. Twitter has changed their policy
274
- as per https://dev.twitter.com/discussions/24239
275
-
276
-
277
-
278
- **New in v4.0.8**
279
-
280
- - Resolved twitter connectivity issue. Twitter has changed their policy
281
- as per https://dev.twitter.com/discussions/24239
282
-
283
-
284
-
285
- **New in v4.0.7**
286
-
287
- - Resolved tweet not posting issue.
288
-
289
-
290
- **New in v4.0.6**
291
-
292
- - Changed how pages are navigated. Should not conflict with any of the plugin that interacts with twitter ever.
293
- - For "Page not found", update the settings and then authorize with twitter.
294
- - If you are not able to update anything or you are redirecting to your home page, reset the settings and try again.
295
- - Code Cleanup.
296
-
297
-
298
- **New in v4.0.5**
299
-
300
- - Implemented Twitter API v1.1 as Twitter is retiring API v1 from 7th May.
301
- - Handled conflict with BackWPup plugin.
302
- - Some performance improvements with WPSuperCache plugin.
303
- - Some design changes.
304
- - Code Cleanup.
305
-
306
-
307
- **New in v4.0.4**
308
-
309
- - Resolved issue of tweet not posting automatically. Thanks to Daniel Lopez Gonzalez for helping me.
310
- - Minor Fixes
311
-
312
-
313
- **New in v4.0.3**
314
-
315
- - Handled too many tweets when W3 Total Cache plugin is installed. Please check and let me know.
316
- - Bug fixes
317
-
318
-
319
- **New in v4.0.2**
320
-
321
- - Removed the option to specify the consumer key and secret as twitter does not show the application from which its tweeted anymore.
322
- - Most probably, the tweet not posting automatically issue is resolved. Please check and let me know.
323
- - Bug fixes
324
-
325
-
326
- **New in v4.0.1**
327
-
328
- - Resolved issue of page getting blank after returning from twitter
329
- - added pages to exclude post option
330
- - Bug fixes
331
- - updated the steps of creating twitter application check here http://www.ajaymatharu.com/major-update-to-tweet-old-post/
332
-
333
-
334
- **New in v4.0.0**
335
-
336
- - You can now change the application name. Change via Tweet Old Post to your specified name. Follow the Steps here,
337
- http://www.ajaymatharu.com/major-update-to-tweet-old-post/
338
- - Pages can now be included in tweets. Added an option to select what is to be tweeted (pages, posts, or both).
339
- - Removed "." and used "-" when adding additional text, "." was causing grammatical mistakes if sentence was trimmed.
340
- - Added option to specify number of posts that can be tweeted simultaneously. You can specify how many tweets you want at a time.
341
- - Last but not the least, removed random time slot was causing lot of confusion.
342
-
343
-
344
-
345
- **New in v3.3.3**
346
-
347
- - Resolved permission issue of exclude post.
348
-
349
-
350
-
351
- **New in v3.3.2**
352
-
353
- - Resolved too many redirects issue
354
- If its still not working try these steps
355
- - Make sure "Tweet Old Post Admin URL (Current URL)" is showing your current URL.
356
- - Click on "Update Tweet Old Post Options".
357
- - Try to authorize again.
358
- - Removed "_" from hashtags. Previously space in hashtag was replaced with "_". Now there will be no spaces or "_" in hashtags.
359
-
360
-
361
-
362
- **New in v3.3.1**
363
-
364
- - Changed logic for posting data to twitter.
365
- - Resolved bit.ly issue.
366
-
367
-
368
-
369
- **New in v3.3.0**
370
-
371
- - Attempt to fix logs out issue (Tweet Old Post pushes out when any action is performed).
372
-
373
-
374
-
375
- **New in v3.2.9**
376
-
377
- - Option to reset setting. When something goes wrong, please reset the settings and setup again.
378
- - For people still facing issues of conflict with Google Analytics Plugin, this version should work.
379
- - Minor bug fixes.
380
-
381
-
382
-
383
- **New in v3.2.8**
384
-
385
- - Resolved conflict with Google Analytics Plugin.
386
- - Changed the log file location to root of plugin folder.
387
- - Maintained Tweet Cycle. Repeat only when all post have been tweeted.
388
- - Made other optimizations and resolved some minor bugs.
389
-
390
-
391
-
392
- **New in v3.2.7**
393
-
394
- - Added logging for people who cant make it work can enable and check the log, or mail me the log file.
395
- - Brought back the exclude post option.
396
- - Made other optimizations and resolved some minor bugs.
397
- - Check http://www.ajaymatharu.com/tweet-old-post-update-3-2-7/ for more detailed explanation.
398
-
399
-
400
-
401
- **New in v3.2.6**
402
-
403
- - removed exclude post due to security threat. Will work on it and bring it up back.
404
-
405
-
406
-
407
- **New in v3.2.5**
408
-
409
- - Resolved hashtag not posting issue.
410
- - other bug fixes.
411
-
412
-
413
-
414
- **New in v3.2.4**
415
-
416
- - Bug fixes
417
-
418
-
419
-
420
- **New in v3.2.3**
421
-
422
- - Bug fixes
423
-
424
-
425
-
426
- **New in v3.2.2**
427
-
428
- - Resolved bit.ly issue
429
- - new option for hashtags
430
- - other bug fixes
431
-
432
-
433
-
434
- **New in v3.2.1**
435
-
436
- - Bug fixes
437
-
438
-
439
-
440
- **New in v3.2**
441
-
442
- - Bug fixes
443
- - Option to choose to include link in post
444
- - option to post only title or body or both title and body
445
- - option to set additional text either at beginning or end of tweet
446
- - option to pick hashtags from custom field
447
-
448
-
449
-
450
- **New in v3.1.2**
451
-
452
- - Resolved tweets not getting posted when categories are excluded.
453
- - If you are not able to authorise your twitter account set you blog URL in Administration → Settings → General.
454
-
455
-
456
-
457
- **New in v3.1**
458
-
459
- - Resolved issue of plugin flooding twitter account with tweets.
460
- - added provision to exclude some post from selected categories
461
-
462
-
463
-
464
- **New in v3.0**
465
-
466
- - added OAuth authentication
467
- - user defined intervals
468
- - may not work under php 4 requires php 5
469
-
470
-
471
-
472
- **New in v2.0**
473
-
474
- - added provision to select if you want to shorten the URL or not.
475
- - Cleaned other options.
476
-
477
-
478
-
479
- **New in v1.9**
480
-
481
- - Removed PHP 4 support as it was creating problem for lot of people
482
-
483
-
484
-
485
- **New in v1.8**
486
-
487
- - Bug Fixes
488
- - Provision to fetch tweet url from custom field
489
-
490
-
491
-
492
- **New in v1.7**
493
-
494
- - Removed api option from 1click.at not needed api key
495
-
496
-
497
-
498
- **New in v1.6**
499
-
500
- - Made the plugin PHP 4 compatible. Guys try it out and please let me know if that worked.
501
- - 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.
502
- - 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.
503
-
504
-
505
-
506
- **New in v1.5**
507
-
508
- - Maximum age of post to be eligible for tweet - allows you to set Maximum age of the post to be eligible for tweet
509
- - Added one more shortner service was looking for j.mp but they dont have the api yet.
510
-
511
-
512
-
513
- **New in v1.4**
514
-
515
- - Hashtags - allows you to set default hashtags for your tweets
516
-
517
-
518
-
519
- **New in v1.3**
520
-
521
- - URL Shortener Service - allows you to select which URL shortener service you want to use.
522
-
523
-
524
-
525
- **New in v1.2**
526
-
527
- - Tweet Prefix - Allows you to set prefix to the tweets.
528
- - Add Data - Allows you to add post data to the tweets
529
- - Tweet now - Button that will tweet at that moment without wanting you to wait for scheduled tweet
530
-
531
-
532
-
533
- **v1.1**
534
-
535
- - Twitter Username & Password - Using this twitter account credentials plugin will tweet.
536
- - Minimum interval between tweets - allows you to determine how often the plugin will automatically choose and tweet a blog post for you.
537
- - Randomness interval - This is a contributing factor in minimum interval so that posts are randomly chosen and tweeted from your blog.
538
- - 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.
539
- - Categories to omit from tweets - This will protect posts from the selected categories from being tweeted.
540
-
541
-
542
- == Other Notes ==
543
-
544
-
545
-
546
- **New in v4.0.9**
547
-
548
- - Resolved twitter connectivity issue, for users who were not able to connect in 4.0.8. Twitter has changed their policy
549
- as per https://dev.twitter.com/discussions/24239
550
-
551
-
552
- **New in v4.0.8**
553
-
554
- - Resolved twitter connectivity issue. Twitter has changed their policy
555
- as per https://dev.twitter.com/discussions/24239
556
-
557
-
558
- **New in v4.0.7**
559
-
560
- - Resolved tweet not posting issue.
561
-
562
-
563
- **New in v4.0.6**
564
-
565
- - Changed how pages are navigated. Should not conflict with any of the plugin that interacts with twitter ever.
566
- - For "Page not found", update the settings and then authorize with twitter.
567
- - If you are not able to update anything or you are redirecting to your home page, reset the settings and try again.
568
- - Code Cleanup.
569
-
570
-
571
- **New in v4.0.5**
572
-
573
- - Implemented Twitter API v1.1 as Twitter is retiring API v1 from 7th May.
574
- - Handled conflict with BackWPup plugin.
575
- - Some performance improvements with WPSuperCache plugin.
576
- - Some design changes.
577
- - Code Cleanup.
578
-
579
-
580
- **New in v4.0.4**
581
-
582
- - Resolved issue of tweet not posting automatically . Thanks to Daniel Lopez Gonzalez for helping me.
583
- - Minor Fixes
584
-
585
-
586
- **New in v4.0.3**
587
-
588
- - Handled too many tweets when W3 Total Cache plugin is installed. Please check and let me know.
589
- - Bug fixes
590
-
591
-
592
- **New in v4.0.2**
593
-
594
- - Removed the option to specify the consumer key and secret as twitter does not show the application from which its tweeted anymore.
595
- - Most probably, the tweet not posting automatically issue is resolved. Please check and let me know.
596
- - Bug fixes
597
-
598
-
599
- **New in v4.0.1**
600
-
601
- - Resolved issue of page getting blank after returning from twitter
602
- - added pages to exclude post option
603
- - Bug fixes
604
- - updated the steps of creating twitter application check here http://www.ajaymatharu.com/major-update-to-tweet-old-post/
605
-
606
-
607
- **New in v4.0.0**
608
-
609
- - You can now change the application name. Change via Tweet Old Post to your specified name. Follow the Steps here,
610
- http://www.ajaymatharu.com/major-update-to-tweet-old-post/
611
- - Pages can now be included in tweets. Added an option to select what is to be tweeted (pages, posts, or both).
612
- - Removed "." and used "-" when adding additional text, "." was causing grammatical mistakes if sentence was trimmed.
613
- - Added option to specify number of posts that can be tweeted simultaneously. You can specify how many tweets you want at a time.
614
- - Last but not the least, removed random time slot was causing lot of confusion.
615
-
616
-
617
- **New in v3.3.3**
618
-
619
- - Resolved permission issue of exclude post.
620
-
621
-
622
- **New in v3.3.2**
623
-
624
- - Resolved too many redirects issue
625
- If its still not working try these steps
626
- - Make sure "Tweet Old Post Admin URL (Current URL)" is showing your current URL.
627
- - Click on "Update Tweet Old Post Options".
628
- - Try to authorize again.
629
- - Removed "_" from hashtags. Previously space in hashtag was replaced with "_". Now there will be no spaces or "_" in hashtags.
630
-
631
-
632
- **New in v3.3.1**
633
-
634
- - Changed logic for posting data to twitter.
635
- - Resolved bit.ly issue.
636
-
637
-
638
- **New in v3.3.0**
639
-
640
- - Attempt to fix logs out issue (Tweet Old Post pushes out when any action is performed).
641
-
642
-
643
- **New in v3.2.9**
644
-
645
- - Option to reset setting. When something goes wrong, please reset the settings and setup again.
646
- - For people still facing issues of conflict with Google Analytics Plugin, this version should work.
647
- - Minor bug fixes.
648
-
649
-
650
- **New in v3.2.8**
651
-
652
- - Resolved conflict with Google Analytics Plugin.
653
- - Changed the log file location to root of plugin folder.
654
- - Maintained Tweet Cycle. Repeat only when all post have been tweeted.
655
- - Made other optimizations and resolved some minor bugs.
656
-
657
-
658
- **New in v3.2.7**
659
-
660
- - Added logging for people who cant make it work can enable and check the log, or mail me the log file.
661
- - Brought back the exclude post option.
662
- - Made other optimizations and resolved some minor bugs.
663
- - Check http://www.ajaymatharu.com/tweet-old-post-update-3-2-7/ for more detailed explanation.
664
-
665
-
666
- **New in v3.2.6**
667
-
668
- - removed exclude post due to security threat. Will work on it and bring it up back.
669
-
670
-
671
- **New in v3.2.5**
672
-
673
- - Resolved hashtag not posting issue.
674
- - other bug fixes.
675
-
676
-
677
- **New in v3.2.4**
678
-
679
- - Bug fixes
680
-
681
-
682
- **New in v3.2.3**
683
-
684
- - Bug fixes
685
-
686
-
687
- **New in v3.2.2**
688
-
689
- - Resolved bit.ly issue
690
- - new option for hashtags
691
- - other bug fixes
692
-
693
-
694
- **New in v3.2.1**
695
-
696
- - Bug fixes
697
-
698
-
699
- **New in v3.2**
700
-
701
- - Bug fixes
702
- - Option to choose to include link in post
703
- - option to post only title or body or both title and body
704
- - option to set additional text either at beginning or end of tweet
705
- - option to pick hashtags from custom field
706
-
707
-
708
- **New in v3.1.2**
709
-
710
- - Resolved tweets not getting posted when categories are excluded.
711
- - If you are not able to authorise your twitter account set you blog URL in Administration → Settings → General.
712
-
713
-
714
- **New in v3.1**
715
-
716
- - Resolved issue of plugin flooding twitter account with tweets.
717
- - added provision to exclude some post from selected categories
718
-
719
-
720
- **New in v3.0**
721
-
722
- - added OAuth authentication
723
- - user defined intervals
724
- - may not work under php 4 requires php 5
725
-
726
-
727
- **New in v2.0**
728
-
729
- - added provision to select if you want to shorten the URL or not.
730
- - Cleaned other options.
731
-
732
-
733
- **New in v1.9**
734
-
735
- - Removed PHP 4 support as it was creating problem for lot of people
736
-
737
-
738
- **New in v1.8**
739
-
740
- - Bug Fixes
741
- - Provision to fetch tweet url from custom field
742
-
743
-
744
- **New in v1.7**
745
-
746
- - Removed api option from 1click.at not needed api key
747
-
748
-
749
- **New in v1.6**
750
-
751
- - Made the plugin PHP 4 compatible. Guys try it out and please let me know if that worked.
752
- - 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.
753
- - 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.
754
-
755
-
756
- **New in v1.5**
757
-
758
- - Maximum age of post to be eligible for tweet - allows you to set Maximum age of the post to be eligible for tweet
759
- - Added one more shortner service was looking for j.mp but they dont have the api yet.
760
-
761
-
762
- **New in v1.4**
763
-
764
- - Hashtags - allows you to set default hashtags for your tweets
765
-
766
-
767
- **New in v1.3**
768
-
769
- - URL Shortener Service - allows you to select which URL shortener service you want to use.
770
-
771
-
772
- **New in v1.2**
773
-
774
- - Tweet Prefix - Allows you to set prefix to the tweets.
775
- - Add Data - Allows you to add post data to the tweets
776
- - Tweet now - Button that will tweet at that moment without wanting you to wait for scheduled tweet
777
-
778
-
779
- **v1.1**
780
-
781
- - Twitter Username & Password - Using this twitter account credentials plugin will tweet.
782
- - Minimum interval between tweets - allows you to determine how often the plugin will automatically choose and tweet a blog post for you.
783
- - Randomness interval - This is a contributing factor in minimum interval so that posts are randomly chosen and tweeted from your blog.
784
- - 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.
785
- - Categories to omit from tweets - This will protect posts from the selected categories from being tweeted.
786
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.5.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
+ ### What the plugin can do ?
14
+
15
+ 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="http://themeisle.com/contact/?utm_source=readmetop&utm_medium=announce&utm_campaign=top">contact us</a>!
16
+
17
+
18
+
19
+ **Revive Old Post provides following features**
20
+
21
+ - Share new and old posts.
22
+ - Choose the time between posts.
23
+ - Choose the number of posts to share.
24
+ - Use hashtags to focus on topics.
25
+ - Include links back to your site.
26
+ - Exclude categories
27
+ - Exclude specific posts.
28
+
29
+
30
+ > ### Why to upgrade to PRO ?
31
+
32
+ > 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.
33
+
34
+ > Other notable features :
35
+
36
+ > * Multiple Social Accounts
37
+ > * Custom Post Types support
38
+ > * Linkedin support
39
+ > * Post with image
40
+ > * Custom Schedule
41
+ > * Post to Xing / Tumblr
42
+
43
+ Some of you reported some scheduling issues, after investigation work looks like this is coming from some web hosts, make sure you check-out this post about <a rel="friend" href="http://www.codeinwp.com/blog/best-wordpress-shared-hosting-providers/">shared WordPress hosting</a>, which should help you pick a good one that works.
44
+
45
+ For updates follow https://twitter.com/themeisle If you have anything you can let us know <a href="http://themeisle.com/contact/?utm_source=readmetop&utm_medium=announce&utm_campaign=top">here</a>.
46
+
47
+ ** Useful Resources **
48
+
49
+ - Check-out our <a href="http://docs.themeisle.com" rel="friend" target="_blank">tutorials site</a>
50
+ - Take a look at our other <a href="http://themeisle.com/wordpress-plugins/" rel="friend" target="_blank">plugins</a>.
51
+ - Read more about WordPress on our <a href="http://www.codeinwp.com/blog/" rel="friend" target="_blank">blog</a>.
52
+
53
+
54
+ = Translations =
55
+
56
+ * sk_SK translation by Patrik Žec (PATWIST) of http://patwist.com
57
+
58
+ == Installation ==
59
+
60
+ Following are the steps to install the Revive Old Post plugin
61
+
62
+ 1. Download the latest version of the Revive Old Posts Plugin to your computer from here.
63
+ 2. With an FTP program, access your sites server.
64
+ 3. Upload (copy) the Plugin file(s) or folder to the /wp-content/plugins folder.
65
+ 4. In your WordPress Administration Panels, click on Plugins from the menu.
66
+ 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.
67
+ 6. To turn the Revive Old Posts Plugin on, click Activate.
68
+ 7. Check your Administration Panels or WordPress blog to see if the Plugin is working.
69
+ 8. You can change the plugin options from Revive Old Posts under settings menu.
70
+
71
+ Alternatively you can also follow the following steps to install the Revive Old Post plugin
72
+
73
+ 1. In your WordPress Administration Panels, click on Add New option under Plugins from the menu.
74
+ 2. Click on upload at the top.
75
+ 3. Browse the location and select the Revive Old Post Plugin and click install now.
76
+ 4. To turn the Revive Old Posts Plugin on, click Activate.
77
+ 5. Check your Administration Panels or WordPress blog to see if the Plugin is working.
78
+ 6. You can change the plugin options from Revive Old Posts under settings menu.
79
+
80
+ == Frequently Asked Questions ==
81
+ If you have any questions please get in touch with us at,
82
+ https://themeisle.com/contact/
83
+
84
+ **Before asking any question you need to check if you have the latest version, either PRO or FREE.**
85
+
86
+
87
+ **Plugin doesn't post at the regular interval or sends more posts than it should send to social networks.**
88
+
89
+ - 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:
90
+
91
+ > define('DISABLE_WP_CRON', true);
92
+
93
+ **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 !'**
94
+
95
+ - You need to add this line to your wp-config.php right after the lines with database credentials:
96
+
97
+ > define('ALTERNATE_WP_CRON', true);
98
+
99
+ **How do i add a facebook account**
100
+
101
+ - Please fallow this tutorial : http://docs.themeisle.com/article/66-how-to-create-a-facebook-application
102
+
103
+ **If new version doesn't works**
104
+
105
+ - Try other versions from http://wordpress.org/extend/plugins/tweet-old-post/download/
106
+ - Manually upload it in your plugins folder, activate and use.
107
+ - Note: Do not upgrade your plugin if you want to use the older version.
108
+
109
+
110
+ **Any more questions or doubts?**
111
+
112
+ - Contact us at https://themeisle.com/contact/ and send us also a copy from Revive Old Post -> System Info
113
+
114
+
115
+
116
+ == Screenshots ==
117
+
118
+ 1. Screenshot 1 Basic configurable options for Tweet Old Post to function, with ability to tweet at random interval.
119
+
120
+
121
+ for more you can check out
122
+
123
+ https://themeisle.com/plugins/tweet-old-post-lite/
124
+
125
+
126
+ == Changelog ==
127
+
128
+ **New in v7.3.5**
129
+
130
+ * Fixed issue with encoding
131
+ * Fixed issue with shortners and slow loading
132
+ * Fixed layout issue for posts with images in Manage Queue
133
+
134
+ **New in v7.3.2**
135
+
136
+ * Fixed issue with exclude posts
137
+
138
+ **New in v7.3.1**
139
+
140
+ * Fixed compatibility with old php versions.
141
+
142
+ **New in v7.3**
143
+
144
+ * Added Manage queue timeline.
145
+ * Fixed responsive issues
146
+ * Fixed issue with is.gd
147
+
148
+ **New in v7.2**
149
+
150
+ * Fixed randomization algorithm, preventing sharing of same post twice until the end of cycle.
151
+ * Fixed date range selection when both values are 0
152
+
153
+
154
+ **New in v7.1**
155
+
156
+ * Fixed inconsistency in the schedule. Now posting is more accurate.
157
+ * Fixed image sharing issue which was not working for some server configuration
158
+
159
+
160
+ **New in v7.0.8**
161
+ * Added facebook tutorial for facebook share.
162
+ * Fixed multisite issue for redirect url
163
+ * Making translation ready for new wordpress.org system
164
+ * Fixed single quotes problem
165
+ * Fixed tumblr tags
166
+
167
+ **New in v7.0.4**
168
+
169
+ * Changed pro banner.
170
+ * Fixed bugs with the new facebook api changes.
171
+
172
+ **New in v7.0.2**
173
+
174
+ * Removed twitter update_with_media call.
175
+ * Fixed activation error notices when WP_DEBUG was enabled
176
+
177
+ **New in v7.0**
178
+
179
+ * Fixed issue with duplicate posting
180
+ * Added Xing and Tumbr Networks
181
+ * Fixed issue with random posts on large databases.
182
+
183
+ **New in v6.9.6**
184
+
185
+ * Fixed issue cron stop
186
+ * Fixed issue for excluded post
187
+ * Added exclude posts from custom post types.
188
+
189
+
190
+ **New in v6.9.4**
191
+
192
+ * Fixed issue with share more than once option
193
+
194
+
195
+ **New in v6.9.3**
196
+
197
+ * Improved logging system
198
+ * Fixed vulnerability issue with update options
199
+ * Fixed issues with custom schedule timing
200
+ * Improved excluded category design
201
+ * Fixed excluded post selection issue
202
+
203
+
204
+ **New in v6.8.8**
205
+
206
+ Added a more complex logging system
207
+ Fixed multiple accounts/posts issue
208
+ Fixed 404 twitter login error
209
+
210
+ **New in v6.8.5**
211
+
212
+ Completely reworked how cron is working
213
+ Separated post format by network
214
+ Added support for custom schedule
215
+ Added remote cron trigger feature
216
+
217
+ **New in v6.8.2**
218
+
219
+ Fixed no available posts issue
220
+
221
+ **New in v6.8.1**
222
+
223
+ Added language support and custom post types
224
+
225
+ **New in v6.8**
226
+
227
+ Added Facebook and Linkedin
228
+
229
+ **New in v6.7**
230
+
231
+ Fixed interrupted posting issue
232
+
233
+ **New in v6.6**
234
+
235
+ Fixed excluded category issue and some small others.
236
+
237
+ **New in v6.7.7**
238
+
239
+ Added Facebook and Linkedin, Facebook is also enabled for the free users
240
+ Improved Post with image feature, we can also pull the image from post
241
+ Fixed Tweet over 140 chars error
242
+ Added Google Analytics Campaign Tracking
243
+ Rebranded into Revive Old Post
244
+
245
+ **New in v6.7.5**
246
+
247
+ Fixed some debug messages
248
+
249
+ **New in v6.7.3**
250
+
251
+ Added settings link, fixed tweet cutting and added cron debug messages
252
+
253
+ **New in v6.6**
254
+
255
+ Fixed excluded category issue and some small others.
256
+
257
+ **New in v6.0**
258
+
259
+ Tweets now are posted immediately, fixed scheduling and added debug messages
260
+
261
+ **New in v5.9**
262
+
263
+ Tags are converted to lowercase automatically now
264
+
265
+ **New in v5.8**
266
+
267
+ Added post by image options in the pro version and some fixes.
268
+
269
+ **New in v5.7**
270
+
271
+ Fixed permissions
272
+
273
+ **New in v5.6**
274
+
275
+ Added bit.ly back
276
+
277
+ **New in v5.5**
278
+
279
+ Fixed the table prefix issue
280
+
281
+ **New in v5.4**
282
+
283
+ Fixed the hashtags length issue
284
+
285
+ **New in v5.3**
286
+
287
+ Fixed the custom field issue
288
+
289
+ **New in v5.2**
290
+
291
+ Fixed exclude categories error, added wp short url, fixed oauth error, removed broken shorten services.
292
+
293
+ **New in v5.0**
294
+
295
+ - 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.
296
+
297
+ **New in v4.0.9**
298
+
299
+ - Resolved twitter connectivity issue, for users who were not able to connect in 4.0.8. Twitter has changed their policy
300
+ as per https://dev.twitter.com/discussions/24239
301
+
302
+
303
+
304
+ **New in v4.0.8**
305
+
306
+ - Resolved twitter connectivity issue. Twitter has changed their policy
307
+ as per https://dev.twitter.com/discussions/24239
308
+
309
+
310
+
311
+ **New in v4.0.7**
312
+
313
+ - Resolved tweet not posting issue.
314
+
315
+
316
+ **New in v4.0.6**
317
+
318
+ - Changed how pages are navigated. Should not conflict with any of the plugin that interacts with twitter ever.
319
+ - For "Page not found", update the settings and then authorize with twitter.
320
+ - If you are not able to update anything or you are redirecting to your home page, reset the settings and try again.
321
+ - Code Cleanup.
322
+
323
+
324
+ **New in v4.0.5**
325
+
326
+ - Implemented Twitter API v1.1 as Twitter is retiring API v1 from 7th May.
327
+ - Handled conflict with BackWPup plugin.
328
+ - Some performance improvements with WPSuperCache plugin.
329
+ - Some design changes.
330
+ - Code Cleanup.
331
+
332
+
333
+ **New in v4.0.4**
334
+
335
+ - Resolved issue of tweet not posting automatically. Thanks to Daniel Lopez Gonzalez for helping me.
336
+ - Minor Fixes
337
+
338
+
339
+ **New in v4.0.3**
340
+
341
+ - Handled too many tweets when W3 Total Cache plugin is installed. Please check and let me know.
342
+ - Bug fixes
343
+
344
+
345
+ **New in v4.0.2**
346
+
347
+ - Removed the option to specify the consumer key and secret as twitter does not show the application from which its tweeted anymore.
348
+ - Most probably, the tweet not posting automatically issue is resolved. Please check and let me know.
349
+ - Bug fixes
350
+
351
+
352
+ **New in v4.0.1**
353
+
354
+ - Resolved issue of page getting blank after returning from twitter
355
+ - added pages to exclude post option
356
+ - Bug fixes
357
+ - updated the steps of creating twitter application check here http://www.ajaymatharu.com/major-update-to-tweet-old-post/
358
+
359
+
360
+ **New in v4.0.0**
361
+
362
+ - You can now change the application name. Change via Tweet Old Post to your specified name. Follow the Steps here,
363
+ http://www.ajaymatharu.com/major-update-to-tweet-old-post/
364
+ - Pages can now be included in tweets. Added an option to select what is to be tweeted (pages, posts, or both).
365
+ - Removed "." and used "-" when adding additional text, "." was causing grammatical mistakes if sentence was trimmed.
366
+ - Added option to specify number of posts that can be tweeted simultaneously. You can specify how many tweets you want at a time.
367
+ - Last but not the least, removed random time slot was causing lot of confusion.
368
+
369
+
370
+
371
+ **New in v3.3.3**
372
+
373
+ - Resolved permission issue of exclude post.
374
+
375
+
376
+
377
+ **New in v3.3.2**
378
+
379
+ - Resolved too many redirects issue
380
+ If its still not working try these steps
381
+ - Make sure "Tweet Old Post Admin URL (Current URL)" is showing your current URL.
382
+ - Click on "Update Tweet Old Post Options".
383
+ - Try to authorize again.
384
+ - Removed "_" from hashtags. Previously space in hashtag was replaced with "_". Now there will be no spaces or "_" in hashtags.
385
+
386
+
387
+
388
+ **New in v3.3.1**
389
+
390
+ - Changed logic for posting data to twitter.
391
+ - Resolved bit.ly issue.
392
+
393
+
394
+
395
+ **New in v3.3.0**
396
+
397
+ - Attempt to fix logs out issue (Tweet Old Post pushes out when any action is performed).
398
+
399
+
400
+
401
+ **New in v3.2.9**
402
+
403
+ - Option to reset setting. When something goes wrong, please reset the settings and setup again.
404
+ - For people still facing issues of conflict with Google Analytics Plugin, this version should work.
405
+ - Minor bug fixes.
406
+
407
+
408
+
409
+ **New in v3.2.8**
410
+
411
+ - Resolved conflict with Google Analytics Plugin.
412
+ - Changed the log file location to root of plugin folder.
413
+ - Maintained Tweet Cycle. Repeat only when all post have been tweeted.
414
+ - Made other optimizations and resolved some minor bugs.
415
+
416
+
417
+
418
+ **New in v3.2.7**
419
+
420
+ - Added logging for people who cant make it work can enable and check the log, or mail me the log file.
421
+ - Brought back the exclude post option.
422
+ - Made other optimizations and resolved some minor bugs.
423
+ - Check http://www.ajaymatharu.com/tweet-old-post-update-3-2-7/ for more detailed explanation.
424
+
425
+
426
+
427
+ **New in v3.2.6**
428
+
429
+ - removed exclude post due to security threat. Will work on it and bring it up back.
430
+
431
+
432
+
433
+ **New in v3.2.5**
434
+
435
+ - Resolved hashtag not posting issue.
436
+ - other bug fixes.
437
+
438
+
439
+
440
+ **New in v3.2.4**
441
+
442
+ - Bug fixes
443
+
444
+
445
+
446
+ **New in v3.2.3**
447
+
448
+ - Bug fixes
449
+
450
+
451
+
452
+ **New in v3.2.2**
453
+
454
+ - Resolved bit.ly issue
455
+ - new option for hashtags
456
+ - other bug fixes
457
+
458
+
459
+
460
+ **New in v3.2.1**
461
+
462
+ - Bug fixes
463
+
464
+
465
+
466
+ **New in v3.2**
467
+
468
+ - Bug fixes
469
+ - Option to choose to include link in post
470
+ - option to post only title or body or both title and body
471
+ - option to set additional text either at beginning or end of tweet
472
+ - option to pick hashtags from custom field
473
+
474
+
475
+
476
+ **New in v3.1.2**
477
+
478
+ - Resolved tweets not getting posted when categories are excluded.
479
+ - If you are not able to authorise your twitter account set you blog URL in Administration → Settings → General.
480
+
481
+
482
+
483
+ **New in v3.1**
484
+
485
+ - Resolved issue of plugin flooding twitter account with tweets.
486
+ - added provision to exclude some post from selected categories
487
+
488
+
489
+
490
+ **New in v3.0**
491
+
492
+ - added OAuth authentication
493
+ - user defined intervals
494
+ - may not work under php 4 requires php 5
495
+
496
+
497
+
498
+ **New in v2.0**
499
+
500
+ - added provision to select if you want to shorten the URL or not.
501
+ - Cleaned other options.
502
+
503
+
504
+
505
+ **New in v1.9**
506
+
507
+ - Removed PHP 4 support as it was creating problem for lot of people
508
+
509
+
510
+
511
+ **New in v1.8**
512
+
513
+ - Bug Fixes
514
+ - Provision to fetch tweet url from custom field
515
+
516
+
517
+
518
+ **New in v1.7**
519
+
520
+ - Removed api option from 1click.at not needed api key
521
+
522
+
523
+
524
+ **New in v1.6**
525
+
526
+ - Made the plugin PHP 4 compatible. Guys try it out and please let me know if that worked.
527
+ - 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.
528
+ - 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.
529
+
530
+
531
+
532
+ **New in v1.5**
533
+
534
+ - Maximum age of post to be eligible for tweet - allows you to set Maximum age of the post to be eligible for tweet
535
+ - Added one more shortner service was looking for j.mp but they dont have the api yet.
536
+
537
+
538
+
539
+ **New in v1.4**
540
+
541
+ - Hashtags - allows you to set default hashtags for your tweets
542
+
543
+
544
+
545
+ **New in v1.3**
546
+
547
+ - URL Shortener Service - allows you to select which URL shortener service you want to use.
548
+
549
+
550
+
551
+ **New in v1.2**
552
+
553
+ - Tweet Prefix - Allows you to set prefix to the tweets.
554
+ - Add Data - Allows you to add post data to the tweets
555
+ - Tweet now - Button that will tweet at that moment without wanting you to wait for scheduled tweet
556
+
557
+
558
+
559
+ **v1.1**
560
+
561
+ - Twitter Username & Password - Using this twitter account credentials plugin will tweet.
562
+ - Minimum interval between tweets - allows you to determine how often the plugin will automatically choose and tweet a blog post for you.
563
+ - Randomness interval - This is a contributing factor in minimum interval so that posts are randomly chosen and tweeted from your blog.
564
+ - 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.
565
+ - Categories to omit from tweets - This will protect posts from the selected categories from being tweeted.
566
+
567
+
568
+ == Other Notes ==
569
+
570
+
571
+
572
+ **New in v4.0.9**
573
+
574
+ - Resolved twitter connectivity issue, for users who were not able to connect in 4.0.8. Twitter has changed their policy
575
+ as per https://dev.twitter.com/discussions/24239
576
+
577
+
578
+ **New in v4.0.8**
579
+
580
+ - Resolved twitter connectivity issue. Twitter has changed their policy
581
+ as per https://dev.twitter.com/discussions/24239
582
+
583
+
584
+ **New in v4.0.7**
585
+
586
+ - Resolved tweet not posting issue.
587
+
588
+
589
+ **New in v4.0.6**
590
+
591
+ - Changed how pages are navigated. Should not conflict with any of the plugin that interacts with twitter ever.
592
+ - For "Page not found", update the settings and then authorize with twitter.
593
+ - If you are not able to update anything or you are redirecting to your home page, reset the settings and try again.
594
+ - Code Cleanup.
595
+
596
+
597
+ **New in v4.0.5**
598
+
599
+ - Implemented Twitter API v1.1 as Twitter is retiring API v1 from 7th May.
600
+ - Handled conflict with BackWPup plugin.
601
+ - Some performance improvements with WPSuperCache plugin.
602
+ - Some design changes.
603
+ - Code Cleanup.
604
+
605
+
606
+ **New in v4.0.4**
607
+
608
+ - Resolved issue of tweet not posting automatically . Thanks to Daniel Lopez Gonzalez for helping me.
609
+ - Minor Fixes
610
+
611
+
612
+ **New in v4.0.3**
613
+
614
+ - Handled too many tweets when W3 Total Cache plugin is installed. Please check and let me know.
615
+ - Bug fixes
616
+
617
+
618
+ **New in v4.0.2**
619
+
620
+ - Removed the option to specify the consumer key and secret as twitter does not show the application from which its tweeted anymore.
621
+ - Most probably, the tweet not posting automatically issue is resolved. Please check and let me know.
622
+ - Bug fixes
623
+
624
+
625
+ **New in v4.0.1**
626
+
627
+ - Resolved issue of page getting blank after returning from twitter
628
+ - added pages to exclude post option
629
+ - Bug fixes
630
+ - updated the steps of creating twitter application check here http://www.ajaymatharu.com/major-update-to-tweet-old-post/
631
+
632
+
633
+ **New in v4.0.0**
634
+
635
+ - You can now change the application name. Change via Tweet Old Post to your specified name. Follow the Steps here,
636
+ http://www.ajaymatharu.com/major-update-to-tweet-old-post/
637
+ - Pages can now be included in tweets. Added an option to select what is to be tweeted (pages, posts, or both).
638
+ - Removed "." and used "-" when adding additional text, "." was causing grammatical mistakes if sentence was trimmed.
639
+ - Added option to specify number of posts that can be tweeted simultaneously. You can specify how many tweets you want at a time.
640
+ - Last but not the least, removed random time slot was causing lot of confusion.
641
+
642
+
643
+ **New in v3.3.3**
644
+
645
+ - Resolved permission issue of exclude post.
646
+
647
+
648
+ **New in v3.3.2**
649
+
650
+ - Resolved too many redirects issue
651
+ If its still not working try these steps
652
+ - Make sure "Tweet Old Post Admin URL (Current URL)" is showing your current URL.
653
+ - Click on "Update Tweet Old Post Options".
654
+ - Try to authorize again.
655
+ - Removed "_" from hashtags. Previously space in hashtag was replaced with "_". Now there will be no spaces or "_" in hashtags.
656
+
657
+
658
+ **New in v3.3.1**
659
+
660
+ - Changed logic for posting data to twitter.
661
+ - Resolved bit.ly issue.
662
+
663
+
664
+ **New in v3.3.0**
665
+
666
+ - Attempt to fix logs out issue (Tweet Old Post pushes out when any action is performed).
667
+
668
+
669
+ **New in v3.2.9**
670
+
671
+ - Option to reset setting. When something goes wrong, please reset the settings and setup again.
672
+ - For people still facing issues of conflict with Google Analytics Plugin, this version should work.
673
+ - Minor bug fixes.
674
+
675
+
676
+ **New in v3.2.8**
677
+
678
+ - Resolved conflict with Google Analytics Plugin.
679
+ - Changed the log file location to root of plugin folder.
680
+ - Maintained Tweet Cycle. Repeat only when all post have been tweeted.
681
+ - Made other optimizations and resolved some minor bugs.
682
+
683
+
684
+ **New in v3.2.7**
685
+
686
+ - Added logging for people who cant make it work can enable and check the log, or mail me the log file.
687
+ - Brought back the exclude post option.
688
+ - Made other optimizations and resolved some minor bugs.
689
+ - Check http://www.ajaymatharu.com/tweet-old-post-update-3-2-7/ for more detailed explanation.
690
+
691
+
692
+ **New in v3.2.6**
693
+
694
+ - removed exclude post due to security threat. Will work on it and bring it up back.
695
+
696
+
697
+ **New in v3.2.5**
698
+
699
+ - Resolved hashtag not posting issue.
700
+ - other bug fixes.
701
+
702
+
703
+ **New in v3.2.4**
704
+
705
+ - Bug fixes
706
+
707
+
708
+ **New in v3.2.3**
709
+
710
+ - Bug fixes
711
+
712
+
713
+ **New in v3.2.2**
714
+
715
+ - Resolved bit.ly issue
716
+ - new option for hashtags
717
+ - other bug fixes
718
+
719
+
720
+ **New in v3.2.1**
721
+
722
+ - Bug fixes
723
+
724
+
725
+ **New in v3.2**
726
+
727
+ - Bug fixes
728
+ - Option to choose to include link in post
729
+ - option to post only title or body or both title and body
730
+ - option to set additional text either at beginning or end of tweet
731
+ - option to pick hashtags from custom field
732
+
733
+
734
+ **New in v3.1.2**
735
+
736
+ - Resolved tweets not getting posted when categories are excluded.
737
+ - If you are not able to authorise your twitter account set you blog URL in Administration → Settings → General.
738
+
739
+
740
+ **New in v3.1**
741
+
742
+ - Resolved issue of plugin flooding twitter account with tweets.
743
+ - added provision to exclude some post from selected categories
744
+
745
+
746
+ **New in v3.0**
747
+
748
+ - added OAuth authentication
749
+ - user defined intervals
750
+ - may not work under php 4 requires php 5
751
+
752
+
753
+ **New in v2.0**
754
+
755
+ - added provision to select if you want to shorten the URL or not.
756
+ - Cleaned other options.
757
+
758
+
759
+ **New in v1.9**
760
+
761
+ - Removed PHP 4 support as it was creating problem for lot of people
762
+
763
+
764
+ **New in v1.8**
765
+
766
+ - Bug Fixes
767
+ - Provision to fetch tweet url from custom field
768
+
769
+
770
+ **New in v1.7**
771
+
772
+ - Removed api option from 1click.at not needed api key
773
+
774
+
775
+ **New in v1.6**
776
+
777
+ - Made the plugin PHP 4 compatible. Guys try it out and please let me know if that worked.
778
+ - 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.
779
+ - 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.
780
+
781
+
782
+ **New in v1.5**
783
+
784
+ - Maximum age of post to be eligible for tweet - allows you to set Maximum age of the post to be eligible for tweet
785
+ - Added one more shortner service was looking for j.mp but they dont have the api yet.
786
+
787
+
788
+ **New in v1.4**
789
+
790
+ - Hashtags - allows you to set default hashtags for your tweets
791
+
792
+
793
+ **New in v1.3**
794
+
795
+ - URL Shortener Service - allows you to select which URL shortener service you want to use.
796
+
797
+
798
+ **New in v1.2**
799
+
800
+ - Tweet Prefix - Allows you to set prefix to the tweets.
801
+ - Add Data - Allows you to add post data to the tweets
802
+ - Tweet now - Button that will tweet at that moment without wanting you to wait for scheduled tweet
803
+
804
+
805
+ **v1.1**
806
+
807
+ - Twitter Username & Password - Using this twitter account credentials plugin will tweet.
808
+ - Minimum interval between tweets - allows you to determine how often the plugin will automatically choose and tweet a blog post for you.
809
+ - Randomness interval - This is a contributing factor in minimum interval so that posts are randomly chosen and tweeted from your blog.
810
+ - 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.
811
+ - Categories to omit from tweets - This will protect posts from the selected categories from being tweeted.
812
+
tweet-old-post.php CHANGED
@@ -1,40 +1,41 @@
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.2
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.2');
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'));
 
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.3.5
8
+ # Author URI: https://themeisle.com/
9
+ # Text Domain: tweet-old-post
10
+ # Domain Path: /languages
11
+ # */
12
+
13
+ // Config Constants
14
+ define ("ROP_PRO_URL", "http://themeisle.com/plugins/tweet-old-post-pro/");
15
+ define("ROPPLUGINPATH", realpath(dirname(__FILE__) ));
16
+ define("ROPCSSFILE", plugins_url('css/style.css',__FILE__ ));
17
+ define("ROPCUSTOMDASHBOARDICON", plugins_url("css/custom_dashboard_icon.css", __FILE__));
18
+ define("ROPJSFILE", plugins_url('js/master.js',__FILE__ ));
19
+ define("ROPJSCOUNTDOWN", plugins_url('js/countdown.js',__FILE__ ));
20
+ define("ROPPLUGINBASENAME", plugin_basename(__FILE__));
21
+ define('ROP_TOP_FB_API_VERSION','v2.0');
22
+ define('ROP_VERSION','7.3.5');
23
+ // Require core.
24
+ require_once(ROPPLUGINPATH."/inc/core.php");
25
+ // Require core.
26
+ require_once(ROPPLUGINPATH."/inc/exclude-posts.php");
27
+ if (!class_exists('TAV_Remote_Notification_Client')) {
28
+ require( ROPPLUGINPATH.'/inc/class-remote-notification-client.php' );
29
+ }
30
+ if (CWP_TOP_PRO)
31
+ $notification = new TAV_Remote_Notification_Client( 37, 'a8be784b898fa2fb', 'https://themeisle.com?post_type=notification' );
32
+ else
33
+ $notification = new TAV_Remote_Notification_Client( 38, 'b7fbcc8d0c58614a', 'https://themeisle.com?post_type=notification' );
34
+
35
+ // Clear scheduled tweets on plugin deactivation
36
+ register_deactivation_hook(__FILE__, array($CWP_TOP_Core, 'deactivationHook'));
37
+
38
+ // Reset all settings on plugin activation.
39
+ register_activation_hook(__FILE__, array($CWP_TOP_Core, 'resetAllOptions'));
40
+
41
+ add_action("admin_head", array($CWP_TOP_Core, 'rop_load_dashboard_icon'));