/[drupal]/contributions/modules/coolfilter/downcode.php
ViewVC logotype

Contents of /contributions/modules/coolfilter/downcode.php

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (show annotations) (download) (as text)
Thu Feb 22 04:28:29 2007 UTC (2 years, 9 months ago) by lllkkk
Branch: MAIN
CVS Tags: HEAD
Branch point for: DRUPAL-5
Changes since 1.2: +4 -0 lines
File MIME type: text/x-php
multisite
1 <?php
2 /*
3 Modules Name: Coolfilter
4 Modules URI: http://drupal.org/node/61357
5 Description: download code files
6 Version: 0.4
7 Author: liukan
8 Author URI: http://www.kylinx.net/
9 */
10 //================================================================================
11 // Download the code
12 //================================================================================
13 if (isset($_GET['download'])) {
14 $multisite = $_GET['multi'];
15 if($multisite==1)
16 chdir('../../../../');
17 else
18 chdir('../../');
19 require_once "includes/bootstrap.inc";
20 drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);
21 $post = $_GET['p'];
22 $download = $_GET['download'];
23 $cool_downloadlink = db_fetch_array(db_query('SELECT body FROM {node_revisions} WHERE nid = %d', $post));
24 $content=$cool_downloadlink["body"];
25 $search = strtolower($content);
26 $pos = 0;
27 while (true) {
28 $count = 0;
29 $pos1 = strpos($search, "<coolcode", $pos);
30 $pos2 = strpos($search, "[coolcode", $pos);
31 if ($pos1 === false) {
32 if ($pos2 === false) {
33 exit();
34 }
35 else {
36 $pos = $pos2;
37 $bracket = array('[', ']');
38 }
39 }
40 else {
41 if ($pos2 === false) {
42 $pos = $pos1;
43 $bracket = array('<', '>');
44 }
45 else if ($pos1 < $pos2) {
46 $pos = $pos1;
47 $bracket = array('<', '>');
48 }
49 else {
50 $pos = $pos2;
51 $bracket = array('[', ']');
52 }
53 }
54 $start = $pos++;
55 $count = 1;
56 while ($count > 0) {
57 $pos1 = strpos($search, $bracket[0] . "coolcode", $pos);
58 $pos2 = strpos($search, $bracket[0] . "/coolcode" . $bracket[1], $pos);
59 if ($pos1 === false) {
60 if ($pos2 === false) {
61 exit();
62 }
63 else {
64 $pos = $pos2;
65 $count--;
66 }
67 }
68 else {
69 if ($pos2 === false) {
70 $pos = $pos1;
71 $count++;
72 }
73 else if ($pos1 < $pos2) {
74 $pos = $pos1;
75 $count++;
76 }
77 else {
78 $pos = $pos2;
79 $count--;
80 }
81 }
82 $pos++;
83 }
84 $end = $pos + 10;
85 $code = substr($content, $start, $end - $start);
86 if (preg_match('#^\<coolcode(.*?)download="' . $download . '"(.*?)\>(.*)\</coolcode\>$#sie', $code, $match) ||
87 preg_match('#^\[coolcode(.*?)download="' . $download . '"(.*?)\](.*)\[/coolcode\]$#sie', $code, $match)) {
88 header("Content-type: application/octet-stream");
89 header("Content-Disposition: attachment; filename=\"$download\"");
90 echo trim($match[3]);
91 exit();
92 }
93 }
94 }
95
96 ?>

  ViewVC Help
Powered by ViewVC 1.1.2