Esempio n. 1
0
 function upgrade_from_1()
 {
     global $wpdb;
     // Add columns to drainhole_access: version_id, user_id
     $wpdb->query("ALTER TABLE `{$wpdb->prefix}drainhole_access` ADD `user_id` int UNSIGNED NOT NULL;");
     // Add columns to drainhole_files: name, description, created_at
     $wpdb->query("ALTER TABLE `{$wpdb->prefix}drainhole_files` ADD `name` varchar(150) NOT NULL default '';");
     $wpdb->query("ALTER TABLE `{$wpdb->prefix}drainhole_files` ADD `description` TEXT default NULL;");
     $wpdb->query("ALTER TABLE `{$wpdb->prefix}drainhole_files` ADD\t`version_id` int(11) unsigned NOT NULL;");
     $wpdb->query("ALTER TABLE `{$wpdb->prefix}drainhole_files` ADD `options` mediumtext DEFAULT NULL ;");
     $wpdb->query("ALTER TABLE `{$wpdb->prefix}drainhole_files` ADD `svn` varchar(150) DEFAULT NULL ;");
     $wpdb->query("ALTER TABLE `{$wpdb->prefix}drainhole_access` ADD `version_id` int UNSIGNED NOT NULL DEFAULT '0';");
     // Change columns in drainhole_files for: file
     $wpdb->query("ALTER TABLE `{$wpdb->prefix}drainhole_files` CHANGE `file` `file` varchar(150) NOT NULL default '';");
     $wpdb->query("ALTER TABLE `{$wpdb->prefix}drainhole_files` CHANGE `downloads` `hits` int(10) UNSIGNED NOT NULL DEFAULT '0';");
     $wpdb->query("ALTER TABLE `{$wpdb->prefix}drainhole_holes` CHANGE `role_error_id` `role_error_url` varchar(100) DEFAULT NULL;");
     $files = DH_File::get_all();
     // Remove columns
     $wpdb->query("ALTER TABLE `{$wpdb->prefix}drainhole_files` DROP `version`;");
     $wpdb->query("ALTER TABLE `{$wpdb->prefix}drainhole_files` DROP `force_download`;");
     // Create the first version for each file and link it back to the file
     // Also link all access stats to the latest version
     if (count($files) > 0) {
         foreach ($files as $file) {
             $version = DH_Version::create($file, $file->version, $file->hits, $file->updated_at, __('First version', 'drain-hole'));
             $options = $wpdb->escape(serialize(array('force_download' => $file->force_download)));
             $wpdb->query("UPDATE {$wpdb->prefix}drainhole_files SET version_id='{$version}',options='{$options}' WHERE id='{$file->id}'");
             $wpdb->query("UPDATE {$wpdb->prefix}drainhole_access SET version_id='{$version}' WHERE file_id='{$file->id}'");
         }
     }
 }
Esempio n. 2
0
File: hole.php Progetto: Jintha/cama
 /**
  * Delete a hole, removing all files (both from the database and the disk)
  *
  * @static
  * @param int $id ID of the hole to delete
  * @return void
  **/
 function delete($id)
 {
     global $wpdb;
     $hole = DH_Hole::get($id);
     $files = DH_File::get_all($id);
     if (count($files) > 0) {
         foreach ($files as $file) {
             DH_File::delete($file->id);
         }
     }
     $options = get_option('drainhole_options');
     if (isset($options['delete_file']) && $options['delete_file'] && is_writable($hole->directory)) {
         @unlink($hole->directory . '/.htaccess');
         @rmdir($hole->directory);
     }
     $wpdb->query("DELETE FROM {$wpdb->prefix}drainhole_holes WHERE id='{$id}'");
 }
Esempio n. 3
0
    if (count($stats) > 0) {
        foreach ($stats as $stat) {
            $csv = array();
            $csv[] = $drainhole->csv_escape(date('Y-m-d', $stat->created_at));
            $csv[] = $drainhole->csv_escape(date('H:i', $stat->created_at));
            $csv[] = $drainhole->csv_escape($stat->ip);
            $csv[] = $drainhole->csv_escape($stat->speed);
            $csv[] = $drainhole->csv_escape($stat->time_taken);
            echo implode(',', $csv) . "\r\n";
        }
    }
} else {
    if ($type == 'files') {
        $hole = DH_Hole::get($id);
        header('Content-Disposition: attachment; filename="' . basename($hole->url) . '.csv"');
        $files = DH_File::get_all($id);
        if (count($files) > 0) {
            foreach ($files as $file) {
                $csv = array();
                $csv[] = $drainhole->csv_escape($file->file);
                $csv[] = $drainhole->csv_escape($file->version);
                $csv[] = $drainhole->csv_escape($file->hits);
                $csv[] = $drainhole->csv_escape(date('Y-m-d', $file->updated_at));
                $csv[] = $drainhole->csv_escape(date('H:i', $file->updated_at));
                echo implode(',', $csv) . "\r\n";
            }
        }
    } else {
        if ($type == 'holes') {
            header('Content-Disposition: attachment; filename="drain-holes.csv"');
            $holes = DH_Hole::get_all($id);
Esempio n. 4
0
 function editor($id)
 {
     $this->render_admin('editor', array('files' => DH_File::get_all()));
 }
Esempio n. 5
0
 /**
  * Replaces matched regular expressions with appropriate data
  * 
  * @param array $matches An array of matches from preg_replace.  $matches[1]=type, $matches[2]=ID, $matches[3]=command, $matches[4]=arguments
  * @return string New text with replaced tags
  **/
 function tags($matches)
 {
     $type = $matches[1];
     $id = intval($matches[2]);
     $cmd = $matches[3];
     $args = $matches[4];
     $options = $this->get_options();
     if ($type == 'hole') {
         $hole = DH_Hole::get($id);
         if ($hole) {
             if ($cmd == 'hits') {
                 return number_format($hole->hits);
             } else {
                 if ($cmd == 'recent') {
                     if ($args == 0) {
                         $args = 1;
                     }
                     $files = DH_File::get_recent($hole->id, $args);
                     return $this->capture('show_hole', array('files' => $files, 'hole' => $hole));
                 } else {
                     if ($cmd == 'show' && !$this->excerpt) {
                         if ($args == '') {
                             $args = 'show_hole';
                         }
                         $files = DH_File::get_all($hole->id);
                         return $this->capture($args, array('files' => $files, 'hole' => $hole));
                     }
                 }
             }
         }
     } else {
         if ($type == 'file') {
             $file = DH_File::get($id);
             if ($file) {
                 $hole = DH_Hole::get($file->hole_id);
                 if ($cmd == 'show' && !$this->excerpt) {
                     if ($args == '') {
                         $args = 'default_show';
                     }
                     return $this->tags_inline($this->capture($args, array('file' => $file, 'hole' => $hole)), $hole, $file);
                 } else {
                     if ($cmd == 'versions') {
                         $limit = 5;
                         if ($args) {
                             $limit = intval($args);
                         }
                         $versions = DH_Version::get_history($file->id, $file->version_id, $limit);
                         if (count($versions) > 0 && $options['tracker']) {
                             foreach ($versions as $pos => $version) {
                                 $versions[$pos]->reason = preg_replace('@\\#(\\d*)@', '<a href="' . $options['tracker'] . '$1">#$1</a>', $version->reason);
                             }
                         }
                         return $this->capture('versions', array('versions' => $versions, 'file' => $file, 'hole' => $hole));
                     } else {
                         if ($cmd == 'version') {
                             return $file->version;
                         } else {
                             if ($cmd == 'hits') {
                                 return number_format($file->hits);
                             } else {
                                 if ($cmd == 'name') {
                                     return $file->name();
                                 } else {
                                     if ($cmd == 'md5') {
                                         return md5($file->file($hole));
                                     } else {
                                         if ($cmd == 'url') {
                                             return $file->url($hole, $args == '' ? basename($file->file) : $args, $options['google']);
                                         } else {
                                             if ($cmd == 'href') {
                                                 return $file->url_ref($hole);
                                             } else {
                                                 if ($cmd == 'svn') {
                                                     return $file->svn();
                                                 } else {
                                                     if ($cmd == 'updated') {
                                                         return date(get_option('date_format'), $file->updated_at);
                                                     } else {
                                                         if ($cmd == 'size') {
                                                             return $file->bytes($file->filesize($hole));
                                                         } else {
                                                             if ($cmd == 'icon') {
                                                                 return $file->icon($hole, $this->url(), $options['google']);
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }