1 | <?php
|
---|
2 |
|
---|
3 | /*
|
---|
4 | * odl_main.php
|
---|
5 | * @author Mohammad Forgani
|
---|
6 | * wordpress plugin website directory project
|
---|
7 | * @copyright Copyright 2008, Oh Jung-Su
|
---|
8 | * @version 0.5
|
---|
9 | * @link http://www.forgani.com
|
---|
10 | */
|
---|
11 |
|
---|
12 | include_once(ABSPATH . 'wp-content/plugins/odlinks/includes/pagerank.php');
|
---|
13 | function odlinksdisplay_index($msg){
|
---|
14 | global $_GET, $_POST, $table_prefix, $wpdb, $PHP_SELF, $odlinksversion;
|
---|
15 | $odlinkssettings=get_option('odlinksdata');
|
---|
16 | $includePath=get_bloginfo('wpurl') . "/wp-content/plugins/odlinks/includes/";
|
---|
17 | $SnaprHead.= "<script type=\"text/javascript\">var bubbleImagePath=\"".$includePath ."bg.png\"</script>\n";
|
---|
18 | $SnaprHead.= "<script type=\"text/javascript\" src=\"". $includePath ."previewbubble.js\"></script>\n";
|
---|
19 | print($SnaprHead);
|
---|
20 |
|
---|
21 | if(!$page) $page=1;
|
---|
22 | $id=$_GET['id'];
|
---|
23 | if(!$id) $id=0;
|
---|
24 | $limit=$odlinkssettings[odlinks_num_links];
|
---|
25 | if (!$limit or $limit ==0) $limit = 10;
|
---|
26 | $tpl=new ODLTemplate();
|
---|
27 |
|
---|
28 | $tpl->assign('odl_images', get_bloginfo('wpurl') . "/wp-content/plugins/odlinks");
|
---|
29 | //$odl_advanced=odlinkscreate_link("searchlink", array("name"=>'Advanced'));
|
---|
30 | //$tpl->assign('odl_advanced', $odl_advanced);
|
---|
31 | $odl_search_link=odlinkscreate_link("searchform", array());
|
---|
32 | $tpl->assign('odl_search_link', $odl_search_link);
|
---|
33 | $odl_main_link=odlinkscreate_link("index", array("name"=>"TOP"));
|
---|
34 | $odl_top_link=odlinkscreate_link("index", array("name"=>$odlinkssettings['page_link_title']));
|
---|
35 | $tpl->assign('odl_top_link', $odl_top_link);
|
---|
36 | $tpl->assign('odl_main_link', $odl_main_link);
|
---|
37 | $tpl->assign('odl_wpurl', get_bloginfo('url'));
|
---|
38 | if ($msg) $tpl->assign('error',$msg);
|
---|
39 |
|
---|
40 |
|
---|
41 | $tpl->assign('cat_id',$id);
|
---|
42 | list($navigationLinks, $addurl, $desc)=odl_create_navigation($id,"","","");
|
---|
43 | $tpl->assign('addurl_link', $addurl);
|
---|
44 | $navigationLinks=trim($navigationLinks);
|
---|
45 | $last=$navigationLinks{strlen($navigationLinks)-1};
|
---|
46 | if (!strcmp($last,":")){
|
---|
47 | $navigationLinks=rtrim($navigationLinks, ':');
|
---|
48 | }
|
---|
49 | $tpl->assign('navigation_link', $navigationLinks);
|
---|
50 | $tpl->assign('odl_navigation_description', $desc);
|
---|
51 | $sql="SELECT COUNT(l_id) as count FROM {$table_prefix}odlinks WHERE l_c_id='".$id."' AND l_hide ='visible'";
|
---|
52 | $result=$wpdb->get_results($sql);
|
---|
53 | for ($i=0; $i<count($result); $i++){
|
---|
54 | $row=$result[$i];
|
---|
55 | $NumberOfPages=ceil($row->count/$limit);
|
---|
56 | }
|
---|
57 | $from=($page-1)*$limit;
|
---|
58 | if($from <= 0){ $from=0; }
|
---|
59 | $sql="SELECT * FROM {$table_prefix}odlinks WHERE l_c_id='".$id."' AND l_hide ='visible'";
|
---|
60 | $results=$wpdb->get_results($sql);
|
---|
61 | $links=array();
|
---|
62 | for ($i=0; $i<count($results); $i++){
|
---|
63 | $result=$results[$i];
|
---|
64 |
|
---|
65 | $PR=new ODLPagerank();
|
---|
66 | $rankImage=false;
|
---|
67 | $Url=trim($result->l_url);
|
---|
68 | if (($Url!='') AND ($Url!='http://')) {
|
---|
69 | if (isUrlValid($Url)) {
|
---|
70 | $PageRank=$PR->getRank($Url);
|
---|
71 | $rankImage='pr'.$PageRank.".gif";
|
---|
72 | $rankText='PageRank:' . $PageRank .'/10';
|
---|
73 | }
|
---|
74 | }
|
---|
75 | $sendlinkurl=odlinkscreate_link("sendlink", array("name"=>"Refer it to a Friend", "id"=>$result->l_id));
|
---|
76 | $links[]=array ('title'=>$result->l_title, 'url'=>$Url, 'date'=>$result->l_date, 'description'=>$result->l_description, 'sendlink'=>$sendlinkurl, 'rank_img'=>$rankImage, 'rank_txt'=>$rankText);
|
---|
77 | }
|
---|
78 | $tpl->assign('links', $links);
|
---|
79 | $tpl->assign("links_total", number_format(odl_total_links(0)));
|
---|
80 |
|
---|
81 | if (!$odlinkssettings['odlinks_last_links_num']) $odlinkssettings['odlinks_last_links_num']=8;
|
---|
82 | $start=0;
|
---|
83 | $tpl->assign("linksNum", $odlinkssettings['odlinks_last_links_num']);
|
---|
84 | $sql="SELECT * FROM {$table_prefix}odlinks l, {$table_prefix}odcategories c WHERE l.l_c_id = c.c_id AND l.l_hide='visible' ORDER BY l.l_date DESC, l.l_title DESC LIMIT ".($start).", ".($odlinkssettings['odlinks_last_links_num']);
|
---|
85 | $lastAds=$wpdb->get_results($sql);
|
---|
86 | $new_links=array();
|
---|
87 | for ($l=0; $l<count($lastAds); $l++){
|
---|
88 | $result=$lastAds[$l];
|
---|
89 | $new_links[]=array ('date'=>$result->l_date, 'title'=>$result->l_title, 'url'=>$result->l_url, 'description'=>$result->l_description, 'category'=>$result->c_title);
|
---|
90 | }
|
---|
91 |
|
---|
92 | $tpl->assign('new_links', $new_links);
|
---|
93 | $result_cats=$wpdb->get_results("SELECT * FROM {$table_prefix}odcategories ORDER BY c_title ASC");
|
---|
94 | $sub_cats=array();
|
---|
95 | $cats=array();
|
---|
96 | $c_total=count($result_cats);
|
---|
97 | if (!empty($result_cats))
|
---|
98 | foreach ($result_cats as $result_cat) {
|
---|
99 | if($result_cat->c_parent == $id){
|
---|
100 | $result_cat->c_links=odl_total_links($result_cat->c_id);
|
---|
101 | $title=trim($result_cat->c_title);
|
---|
102 | $odl_category_link=odlinkscreate_link("category", array("name"=>$title, "id"=>$result_cat->c_id, "parent"=>$result_cat->c_parent));
|
---|
103 | $cats[]=array (
|
---|
104 | 'c_id'=>$result_cat->c_id,
|
---|
105 | 'c_title'=>$title,
|
---|
106 | 'c_links'=>$result_cat->c_links,
|
---|
107 | 'cat_link'=>$odl_category_link);
|
---|
108 | $sql="SELECT * FROM {$table_prefix}odcategories WHERE c_parent=".$result_cat->c_id." ORDER BY c_title ASC";
|
---|
109 | $result_subs=$wpdb->get_results($sql);
|
---|
110 | if (!empty($result_subs)){
|
---|
111 | $no=0;
|
---|
112 | foreach ($result_subs as $result_sub) {
|
---|
113 | $no++;
|
---|
114 | $title=trim($result_sub->c_title);
|
---|
115 | $subcategory_link=odlinkscreate_link("category", array("name"=>$title, "id"=>$result_sub->c_id,"parent"=>$result_sub->c_parent));
|
---|
116 | if ( !($result_sub == end($result_subs)) )
|
---|
117 | $subcategory_link=$subcategory_link . ".";
|
---|
118 | $sub_cats[]=array (
|
---|
119 | 'c_parent'=>$result_sub->c_parent,
|
---|
120 | 'c_title'=>$title,
|
---|
121 | 'c_path'=>$subcategory_link,
|
---|
122 | 'c_no'=>$no);
|
---|
123 | };
|
---|
124 | }
|
---|
125 | }
|
---|
126 | }
|
---|
127 | $tpl->assign('categories_total',number_format($c_total));
|
---|
128 | $tpl->assign('categories',$cats);
|
---|
129 | $tpl->assign('subcategories',$sub_cats);
|
---|
130 |
|
---|
131 | if ($odlinkssettings[odlinksshow_credits] == 'y') {
|
---|
132 | $credit='Open Directory Links Powered By <a href="http://www.forgani.com/" target="_blank">4gani</a> Version ' . $odlinksversion;
|
---|
133 | $tpl->assign('odl_credit_line', $credit);
|
---|
134 | }
|
---|
135 |
|
---|
136 | list($gAd, $gtop, $gbtn)=get_odl_GADlink();
|
---|
137 |
|
---|
138 | if ($gAd) {
|
---|
139 | $code='<div class="odl_googleAd">' . $gAd . '</div>';
|
---|
140 | $tpl->assign('googletop',$gtop);
|
---|
141 | $tpl->assign('googlebtn',$gbtn);
|
---|
142 | $tpl->assign('googleAd',$code);
|
---|
143 | }
|
---|
144 |
|
---|
145 | odlinks_footer($tpl);
|
---|
146 | return $tpl->display('body.tpl');
|
---|
147 | }
|
---|
148 |
|
---|
149 |
|
---|
150 | function get_odl_GADlink() {
|
---|
151 | global $_GET, $_POST, $table_prefix, $wpdb, $PHP_SELF, $odlinksversion;
|
---|
152 | $odlinkssettings=get_option('odlinksdata');
|
---|
153 |
|
---|
154 | $gtop=false;
|
---|
155 | $gbtn=false;
|
---|
156 | if ($odlinkssettings[GADposition] == 'bth') {
|
---|
157 | $gtop=true;
|
---|
158 | $gbtn=true;
|
---|
159 | } else {
|
---|
160 | if ($odlinkssettings[GADposition] == 'top') {
|
---|
161 | $gtop=true;
|
---|
162 | } elseif ($odlinkssettings[GADposition] == 'btn') {
|
---|
163 | $gbtn=true;
|
---|
164 | }
|
---|
165 | }
|
---|
166 |
|
---|
167 | if ($gtop || $gbtn){
|
---|
168 | $rand=rand(0,100);
|
---|
169 | $key_code=($rand <= $odlinkssettings['share']) ? 'pub-2844370112691023' : $odlinkssettings['googleID'];
|
---|
170 | $format=$odlinkssettings[GADLformat] . '_0ads_al'; // _0ads_al_s 5 Ads Per Unit
|
---|
171 | list($width,$height,$null)=split('[x]',$odlinkssettings[GADLformat]);
|
---|
172 | $code="\n" . '<script type="text/javascript"><!--' . "\n";
|
---|
173 | $code.= 'google_ad_client="' . $key_code . '"; ' . "\n";
|
---|
174 | $code.= 'google_ad_width="' . $width . '"; ' . "\n";
|
---|
175 | $code.= 'google_ad_height="' . $height . '"; ' . "\n";
|
---|
176 | $code.= 'google_ad_format="' . $format . '"; ' . "\n";
|
---|
177 | if($settings['alternate_url']!=''){
|
---|
178 | $code.= 'google_alternate_ad_url="' . $settings['alternate_url'] . '"; ' . "\n";
|
---|
179 | } else {
|
---|
180 | if($settings['alternate_color']!='') {
|
---|
181 | $code.= 'google_alternate_color="' . $settings['alternate_color'] . '"; ' . "\n";
|
---|
182 | }
|
---|
183 | }
|
---|
184 | //Default to Ads
|
---|
185 | $code.= 'google_color_border="' . $odlinkssettings[GADcolor_border] . '"' . ";\n";
|
---|
186 | $code.= 'google_color_bg="' . $odlinkssettings[GADcolor_bg] . '"' . ";\n";
|
---|
187 | $code.= 'google_color_link="' . $odlinkssettings[GADcolor_link] . '"' . ";\n";
|
---|
188 | $code.= 'google_color_text="' . $odlinkssettings[GADcolor_text] . '"' . ";\n";
|
---|
189 | $code.= 'google_color_url="' . $odlinkssettings[GADcolor_url] . '"' . ";\n";
|
---|
190 | $code.= '//--></script>' . "\n";
|
---|
191 | $code.= '<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>' . "\n";
|
---|
192 |
|
---|
193 | return array($code, $gtop, $gbtn);
|
---|
194 | }
|
---|
195 | return false;
|
---|
196 | }
|
---|
197 |
|
---|
198 |
|
---|
199 | function odl_create_navigation($id,$links,$addurl, $desc){
|
---|
200 | global $table_prefix, $wpdb, $tpl;
|
---|
201 | $again="";
|
---|
202 | $sql="SELECT * FROM {$table_prefix}odcategories WHERE c_id=".$id;
|
---|
203 | $result=$wpdb->get_results($sql);
|
---|
204 | for ($i=0; $i<count($result); $i++){
|
---|
205 | $row=$result[$i];
|
---|
206 | $name=trim($row->c_title);
|
---|
207 | $odl_link=odlinkscreate_link("category", array("name"=>$name, "id"=>$row->c_id, "parent"=>$row->c_parent));
|
---|
208 | $links=$odl_link . ":" . $links;
|
---|
209 | if ($row->c_parent>0)
|
---|
210 | $addurl=odlinkscreate_link("postlink", array("name"=>"Submitting Your Site", "id"=>$row->c_id, "parent"=>$row->c_parent));
|
---|
211 | $again=odl_create_navigation($row->c_parent, $links, $addurl, $row->c_description);
|
---|
212 |
|
---|
213 | }
|
---|
214 | if ($id <> "0") {
|
---|
215 | return $again;
|
---|
216 | } else {
|
---|
217 | $out=array($links, $addurl, $desc);
|
---|
218 | return $out;
|
---|
219 | }
|
---|
220 | }
|
---|
221 |
|
---|
222 | function odl_total_links($cat_id){
|
---|
223 | global $table_prefix, $wpdb;
|
---|
224 | $out="";
|
---|
225 | $all_cats=odl_get_categories($cat_id);
|
---|
226 | for($a=0;$a<=count($all_cats)-1;$a++){
|
---|
227 | $out .= $all_cats[$a].",";
|
---|
228 | }
|
---|
229 | $sql="SELECT COUNT(l_id) as count FROM {$table_prefix}odlinks WHERE l_hide='visible' AND l_c_id IN (".trim($out,',').")";
|
---|
230 | $result=$wpdb->get_row($sql, ARRAY_A);
|
---|
231 | return $result['count'];
|
---|
232 | }
|
---|
233 |
|
---|
234 | function odl_get_categories($parent) {
|
---|
235 | global $table_prefix, $wpdb;
|
---|
236 | $sql="SELECT c_id FROM {$table_prefix}odcategories WHERE c_parent='$parent'";
|
---|
237 | $result=$wpdb->get_results($sql);
|
---|
238 | $arr[]=$parent;
|
---|
239 | for ($x=0; $x<count($result); $x++){
|
---|
240 | $row=$result[$x];
|
---|
241 | $arr=odl_combine_arrays($arr, odl_get_categories($row->c_id));
|
---|
242 | }
|
---|
243 | return $arr;
|
---|
244 | }
|
---|
245 |
|
---|
246 | function odl_combine_arrays($arr1, $arr2) {
|
---|
247 | foreach ($arr2 as $elem) {
|
---|
248 | $arr1[]=$elem;
|
---|
249 | }
|
---|
250 | return $arr1;
|
---|
251 | }
|
---|
252 |
|
---|
253 |
|
---|
254 | function odl_html2text( $badStr ) {
|
---|
255 | //remove PHP if it exists
|
---|
256 | while( substr_count( $badStr, '<'.'?' ) && substr_count( $badStr, '?'.'>' ) && strpos( $badStr, '?'.'>', strpos( $badStr, '<'.'?' ) ) > strpos( $badStr, '<'.'?' ) ) {
|
---|
257 | $badStr=substr( $badStr, 0, strpos( $badStr, '<'.'?' ) ) . substr( $badStr, strpos( $badStr, '?'.'>', strpos( $badStr, '<'.'?' ) ) + 2 ); }
|
---|
258 | //remove comments
|
---|
259 | while( substr_count( $badStr, '<!--' ) && substr_count( $badStr, '-->' ) && strpos( $badStr, '-->', strpos( $badStr, '<!--' ) ) > strpos( $badStr, '<!--' ) ) {
|
---|
260 | $badStr=substr( $badStr, 0, strpos( $badStr, '<!--' ) ) . substr( $badStr, strpos( $badStr, '-->', strpos( $badStr, '<!--' ) ) + 3 ); }
|
---|
261 | //now make sure all HTML tags are correctly written (> not in between quotes)
|
---|
262 | for( $x=0, $goodStr='', $is_open_tb=false, $is_open_sq=false, $is_open_dq=false; strlen( $chr=$badStr{$x} ); $x++ ) {
|
---|
263 | //take each letter in turn and check if that character is permitted there
|
---|
264 | switch( $chr ) {
|
---|
265 | case '<':
|
---|
266 | if( !$is_open_tb && strtolower( substr( $badStr, $x + 1, 5 ) ) == 'style' ) {
|
---|
267 | $badStr=substr( $badStr, 0, $x ) . substr( $badStr, strpos( strtolower( $badStr ), '</style>', $x ) + 7 ); $chr='';
|
---|
268 | } elseif( !$is_open_tb && strtolower( substr( $badStr, $x + 1, 6 ) ) == 'script' ) {
|
---|
269 | $badStr=substr( $badStr, 0, $x ) . substr( $badStr, strpos( strtolower( $badStr ), '</script>', $x ) + 8 ); $chr='';
|
---|
270 | } elseif( !$is_open_tb ) { $is_open_tb=true; } else { $chr='<'; }
|
---|
271 | break;
|
---|
272 | case '>':
|
---|
273 | if( !$is_open_tb || $is_open_dq || $is_open_sq ) { $chr='>'; } else { $is_open_tb=false; }
|
---|
274 | break;
|
---|
275 | case '"':
|
---|
276 | if( $is_open_tb && !$is_open_dq && !$is_open_sq ) { $is_open_dq=true; }
|
---|
277 | elseif( $is_open_tb && $is_open_dq && !$is_open_sq ) { $is_open_dq=false; }
|
---|
278 | else { $chr='"'; }
|
---|
279 | break;
|
---|
280 | case "'":
|
---|
281 | if( $is_open_tb && !$is_open_dq && !$is_open_sq ) { $is_open_sq=true; }
|
---|
282 | elseif( $is_open_tb && !$is_open_dq && $is_open_sq ) { $is_open_sq=false; }
|
---|
283 | } $goodStr .= $chr;
|
---|
284 | }
|
---|
285 | //now that the page is valid (I hope) for strip_tags, strip all unwanted tags
|
---|
286 | $goodStr=strip_tags( $goodStr, '<title><hr><h1><h2><h3><h4><h5><h6><div><p><pre><sup><ul><ol><br><dl><dt><table><caption><tr><li><dd><th><td><a><area><img><form><input><textarea><button><select><option>' );
|
---|
287 | //strip extra whitespace except between <pre> and <textarea> tags
|
---|
288 | $badStr=preg_split( "/<\/?pre[^>]*>/i", $goodStr );
|
---|
289 | for( $x=0; is_string( $badStr[$x] ); $x++ ) {
|
---|
290 | if( $x % 2 ) { $badStr[$x]='<pre>'.$badStr[$x].'</pre>'; } else {
|
---|
291 | $goodStr=preg_split( "/<\/?textarea[^>]*>/i", $badStr[$x] );
|
---|
292 | for( $z=0; is_string( $goodStr[$z] ); $z++ ) {
|
---|
293 | if( $z % 2 ) { $goodStr[$z]='<textarea>'.$goodStr[$z].'</textarea>'; } else {
|
---|
294 | $goodStr[$z]=preg_replace( "/\s+/", ' ', $goodStr[$z] );
|
---|
295 | } }
|
---|
296 | $badStr[$x]=implode('',$goodStr);
|
---|
297 | } }
|
---|
298 | $goodStr=implode('',$badStr);
|
---|
299 | //remove all options from select inputs
|
---|
300 | $goodStr=preg_replace( "/<option[^>]*>[^<]*/i", '', $goodStr );
|
---|
301 | //replace all tags with their text equivalents
|
---|
302 | $goodStr=preg_replace( "/<(\/title|hr)[^>]*>/i", "\n-----------------------------------------------\n", $goodStr );
|
---|
303 | $goodStr=preg_replace( "/<(h|div|p)[^>]*>/i", "\n\n", $goodStr );
|
---|
304 | $goodStr=preg_replace( "/<sup[^>]*>/i", '^', $goodStr );
|
---|
305 | $goodStr=preg_replace( "/<(ul|ol|br|dl|dt|table|caption|\/textarea|tr[^>]*>\s*<(td|th))[^>]*>/i", "\n", $goodStr );
|
---|
306 | $goodStr=preg_replace( "/<li[^>]*>/i", "\n· ", $goodStr );
|
---|
307 | $goodStr=preg_replace( "/<dd[^>]*>/i", "\n\t", $goodStr );
|
---|
308 | $goodStr=preg_replace( "/<(th|td)[^>]*>/i", "\t", $goodStr );
|
---|
309 | $goodStr=preg_replace( "/<a[^>]* href=(\"((?!\"|#|javascript:)[^\"#]*)(\"|#)|'((?!'|#|javascript:)[^'#]*)('|#)|((?!'|\"|>|#|javascript:)[^#\"'> ]*))[^>]*>/i", "[LINK: $2$4$6] ", $goodStr );
|
---|
310 | $goodStr=preg_replace( "/<img[^>]* alt=(\"([^\"]+)\"|'([^']+)'|([^\"'> ]+))[^>]*>/i", "[IMAGE: $2$3$4] ", $goodStr );
|
---|
311 | $goodStr=preg_replace( "/<form[^>]* action=(\"([^\"]+)\"|'([^']+)'|([^\"'> ]+))[^>]*>/i", "\n[FORM: $2$3$4] ", $goodStr );
|
---|
312 | $goodStr=preg_replace( "/<(input|textarea|button|select)[^>]*>/i", "[INPUT] ", $goodStr );
|
---|
313 | //strip all remaining tags (mostly closing tags)
|
---|
314 | $goodStr=strip_tags( $goodStr );
|
---|
315 | //convert HTML entities
|
---|
316 | $goodStr=strtr( $goodStr, array_flip( get_html_translation_table( HTML_ENTITIES ) ) );
|
---|
317 | preg_replace( "/&#(\d+);/me", "chr('$1')", $goodStr );
|
---|
318 | //wordwrap
|
---|
319 | $goodStr=wordwrap( $goodStr );
|
---|
320 | //make sure there are no more than 3 linebreaks in a row and trim whitespace
|
---|
321 | return preg_replace( "/^\n*|\n*$/", '', preg_replace( "/[ \t]+(\n|$)/", "$1", preg_replace( "/\n(\s*\n){2}/", "\n\n\n", preg_replace( "/\r\n?|\f/", "\n", str_replace( chr(160), ' ', $goodStr ) ) ) ) );
|
---|
322 | }
|
---|
323 |
|
---|
324 | function isUrlValid($Url) {
|
---|
325 | return (strpos(strtolower($Url),'http://')===0);
|
---|
326 | }
|
---|
327 |
|
---|
328 |
|
---|
329 | ?>
|
---|