Example #1
0
 static function Process()
 {
     list($file_ids, $cat_ids, $sql_where) = self::getFileAndCatIds();
     $files = WPFB_File::GetFiles2($sql_where, 'edit');
     $data = (object) $_POST;
     foreach ($files as $file) {
         $file->Lock();
         // category
         if (!empty($data->file_category)) {
             $file->ChangeCategoryOrName($data->file_category);
         }
         // add tags
         if (!empty($data->file_tags)) {
             $file->SetTags($file->file_tags . ',' . $data->file_tags);
         }
         if (!empty($data->file_author)) {
             $file->file_author = $data->file_author;
         }
         if (isset($data->file_direct_linking) && $data->file_direct_linking !== "") {
             $file->file_direct_linking = (int) $data->file_direct_linking;
         }
         if (isset($data->file_offline) && $data->file_offline !== "") {
             $file->file_offline = (int) $data->file_offline;
         }
         if (!empty($data->file_password)) {
             $file->file_password = $data->file_password;
         }
         $file->Lock(false);
         $file->DBSave();
     }
     return sprintf(__('%d File(s) processed.', 'wp-filebase'), count($files));
 }
Example #2
0
 static function FileSearchContent(&$ref_content)
 {
     wpfb_loadclass('ListTpl');
     $tpl = WPFB_ListTpl::Get(WPFB_Core::$settings->search_result_tpl);
     if ($tpl !== null) {
         $ref_content .= $tpl->Generate(null, array('page_limit' => WPFB_Core::$settings->filelist_num));
     } else {
         $files = WPFB_File::GetFiles2(self::SearchWhereSql(WPFB_Core::$settings->search_id3, stripslashes($_GET['wpfb_s'])), WPFB_Core::$settings->hide_inaccessible);
         foreach ($files as $file) {
             $ref_content .= $file->GenTpl2();
         }
     }
 }
Example #3
0
 function GenerateList(&$content, $categories, $list_args = null)
 {
     if (!empty($list_args)) {
         $this->current_list = (object) $list_args;
         unset($list_args);
     }
     $hia = WPFB_Core::$settings->hide_inaccessible;
     $sort = WPFB_Core::GetSortSql($this->current_list->file_order);
     if ($this->current_list->page_limit > 0) {
         // pagination
         $page = empty($_REQUEST['wpfb_list_page']) || $_REQUEST['wpfb_list_page'] < 1 ? 1 : intval($_REQUEST['wpfb_list_page']);
         $start = $this->current_list->page_limit * ($page - 1);
     } else {
         $start = -1;
     }
     $search_term = empty($_GET['wpfb_s']) ? null : stripslashes($_GET['wpfb_s']);
     if ($search_term || WPFB_Core::$file_browser_search) {
         // search
         wpfb_loadclass('Search');
         $where = WPFB_Search::SearchWhereSql(WPFB_Core::$settings->search_id3, $search_term);
     } else {
         $where = '1=1';
     }
     $num_total_files = 0;
     if (is_null($categories)) {
         // if null, just list all files!
         $files = WPFB_File::GetFiles2($where, $hia, $sort, $this->current_list->page_limit, $start);
         $num_total_files = WPFB_File::GetNumFiles2($where, $hia);
         foreach ($files as $file) {
             $content .= $file->GenTpl2($this->file_tpl_tag);
         }
     } else {
         if (!empty($this->current_list->cat_order)) {
             WPFB_Item::Sort($categories, $this->current_list->cat_order);
         }
         $cat = reset($categories);
         // get first category
         // here we check if single category and cat has at least one file (also secondary cat files!)
         if (count($categories) == 1 && $cat->cat_num_files > 0) {
             // single cat
             if (!$cat->CurUserCanAccess()) {
                 return '';
             }
             $where = "({$where}) AND " . WPFB_File::GetSqlCatWhereStr($cat->cat_id);
             $files = WPFB_File::GetFiles2($where, $hia, $sort, $this->current_list->page_limit, $start);
             $num_total_files = WPFB_File::GetNumFiles2($where, $hia);
             if ($this->current_list->cat_grouping && $num_total_files > 0) {
                 $content .= $cat->GenTpl2($this->cat_tpl_tag);
             }
             foreach ($files as $file) {
                 $content .= $file->GenTpl2($this->file_tpl_tag);
             }
         } else {
             // multi-cat
             // TODO: multi-cat list pagination does not work properly yet
             // special handling of categories that do not have files directly: list child cats!
             if (count($categories) == 1 && $cat->cat_num_files == 0) {
                 $categories = $cat->GetChildCats(true, true);
                 if (!empty($this->current_list->cat_order)) {
                     WPFB_Item::Sort($categories, $this->current_list->cat_order);
                 }
             }
             if ($this->current_list->cat_grouping) {
                 // group by categories
                 $n = 0;
                 foreach ($categories as $cat) {
                     if (!$cat->CurUserCanAccess()) {
                         continue;
                     }
                     $num_total_files = max($nf = WPFB_File::GetNumFiles2("({$where}) AND " . WPFB_File::GetSqlCatWhereStr($cat->cat_id), $hia), $num_total_files);
                     // TODO
                     //if($n > $this->current_list->page_limit) break; // TODO!!
                     if ($nf > 0) {
                         $files = WPFB_File::GetFiles2("({$where}) AND " . WPFB_File::GetSqlCatWhereStr($cat->cat_id), $hia, $sort, $this->current_list->page_limit, $start);
                         if (count($files) > 0) {
                             $content .= $cat->GenTpl2($this->cat_tpl_tag);
                             // check for file count again, due to pagination!
                             foreach ($files as $file) {
                                 $content .= $file->GenTpl2($this->file_tpl_tag);
                             }
                         }
                     }
                 }
             } else {
                 // this is not very efficient, because all files are loaded, no pagination!
                 $all_files = array();
                 foreach ($categories as $cat) {
                     if (!$cat->CurUserCanAccess()) {
                         continue;
                     }
                     $all_files += WPFB_File::GetFiles2("({$where}) AND " . WPFB_File::GetSqlCatWhereStr($cat->cat_id), $hia, $sort);
                 }
                 $num_total_files = count($all_files);
                 WPFB_Item::Sort($all_files, $sort);
                 $keys = array_keys($all_files);
                 if ($start == -1) {
                     $start = 0;
                 }
                 $last = $this->current_list->page_limit > 0 ? min($start + $this->current_list->page_limit, $num_total_files) : $num_total_files;
                 for ($i = $start; $i < $last; $i++) {
                     $content .= $all_files[$keys[$i]]->GenTpl2($this->file_tpl_tag);
                 }
             }
         }
     }
     return $num_total_files;
 }
Example #4
0
 function prepare_items()
 {
     global $wpdb;
     $columns = $this->get_columns();
     $hidden = array();
     $sortable = $this->get_sortable_columns();
     $this->_column_headers = array($columns, $hidden, $sortable);
     $this->process_bulk_action();
     $pagenum = $this->get_pagenum();
     if (!isset($filesperpage) || $filesperpage < 0) {
         $filesperpage = 50;
     }
     $pagestart = ($pagenum - 1) * $filesperpage;
     $where = $this->get_file_where_cond(empty($_REQUEST['view']) ? null : $_REQUEST['view']);
     $order = "{$wpdb->wpfilebase_files}." . (!empty($_REQUEST['orderby']) && in_array($_REQUEST['orderby'], array_merge(array_keys(get_class_vars('WPFB_File')), array_keys(WPFB_Core::GetCustomFields(true)))) ? $_REQUEST['orderby'] . " " . (!empty($_REQUEST['order']) && $_REQUEST['order'] == "desc" ? "DESC" : "ASC") : "file_id DESC");
     $total_items = WPFB_File::GetNumFiles2($where, 'edit');
     $files = WPFB_File::GetFiles2($where, 'edit', $order, $filesperpage, $pagestart);
     if (empty($files) && !empty($wpdb->last_error)) {
         wp_die("<b>Database error</b>: " . $wpdb->last_error);
     }
     $this->items = $files;
     $this->set_pagination_args(array('total_items' => $total_items, 'per_page' => $filesperpage, 'total_pages' => ceil($total_items / $filesperpage)));
 }
Example #5
0
 /**
  * Get child files
  *
  * @access public
  * 
  * @param $recursive Optional
  * @return WPFB_File[] Files
  */
 function GetChildFiles($recursive = false, $sorting = null, $check_permissions = false)
 {
     if ($this->is_file) {
         return array($this->GetId() => $this);
     }
     if ($check_permissions && !$this->CurUserCanAccess()) {
         return array();
     }
     // if recursive, include secondary category links with GetSqlCatWhereStr
     $where = $recursive ? WPFB_File::GetSqlCatWhereStr($this->cat_id) : '(file_category = ' . $this->cat_id . ')';
     $files = WPFB_File::GetFiles2($where, $check_permissions, $sorting);
     if ($recursive) {
         $cats = $this->GetChildCats(true);
         foreach (array_keys($cats) as $i) {
             $files += $cats[$i]->GetChildFiles(false, $sorting, $check_permissions);
         }
     }
     return $files;
 }
Example #6
0
 function WPFB_SyncData($init = false)
 {
     if ($init) {
         $this->files = WPFB_File::GetFiles2();
         $this->cats = WPFB_Category::GetCats();
         $this->log = array('missing_files' => array(), 'missing_folders' => array(), 'changed' => array(), 'not_added' => array(), 'error' => array(), 'updated_categories' => array(), 'warnings' => array());
         $this->known_filenames = array();
         $this->new_files = array();
         $this->missing_files = array();
         $this->num_files_to_add = 0;
         $this->num_all_files = 0;
         $this->num_files_processed = 0;
         $this->time_begin = microtime(true);
         $this->mem_peak = memory_get_peak_usage();
     }
 }
Example #7
0
 /**
  * 
  * @staticvar function $parent_walker
  * @param boolean $recursive
  * @return WPFB_File[]
  */
 function GetChildFilesFast($recursive = false)
 {
     static $parent_walker = false;
     if (!$parent_walker) {
         $parent_walker = create_function('&$f,$fid,$pid', 'if($f->file_category != $pid) $f = null;');
     }
     if ($this->is_file) {
         return array($this->GetId() => $this);
     }
     // get all direct child files (including secondary)
     if (!isset($this->cat_child_files)) {
         $this->cat_child_files = WPFB_File::GetFiles2(WPFB_File::GetSqlCatWhereStr($this->cat_id));
     }
     $files = $this->cat_child_files;
     // if not recursive, exclude secondary category links with GetSqlCatWhereStr
     if (!$recursive) {
         array_walk($files, $parent_walker, $this->cat_id);
         return array_filter($files);
     }
     $cats = $this->GetChildCats(false);
     foreach (array_keys($cats) as $i) {
         $files += $cats[$i]->GetChildFilesFast(true);
     }
     return $files;
 }
Example #8
0
 static function UpdateItemsPath($files = null, $cats = null)
 {
     wpfb_loadclass('File', 'Category');
     if (is_null($files)) {
         $files = WPFB_File::GetFiles2();
     }
     if (is_null($cats)) {
         $cats = WPFB_Category::GetCats();
     }
     foreach (array_keys($cats) as $i) {
         $cats[$i]->Lock(true);
     }
     foreach (array_keys($files) as $i) {
         $files[$i]->GetLocalPath(true);
     }
     foreach (array_keys($cats) as $i) {
         $cats[$i]->Lock(false);
         $cats[$i]->DBSave();
     }
 }
Example #9
0
 function widget($args, $instance)
 {
     wpfb_loadclass('File', 'Category', 'Output');
     extract($args);
     $title = apply_filters('widget_title', $instance['title']);
     echo $before_widget, $before_title . (empty($title) ? __('Files', WPFB) : $title) . $after_title;
     // special handling for empty cats
     if (!empty($instance['cat']) && !is_null($cat = WPFB_Category::GetCat($instance['cat'])) && $cat->cat_num_files == 0) {
         $instance['cat'] = array();
         foreach ($cat->GetChildCats() as $c) {
             $instance['cat'][] = $c->cat_id;
         }
     }
     $files = WPFB_File::GetFiles2(empty($instance['cat']) ? null : WPFB_File::GetSqlCatWhereStr($instance['cat']), WPFB_Core::$settings->hide_inaccessible, array($instance['sort-by'] => $instance['sort-asc'] ? 'ASC' : 'DESC'), (int) $instance['limit']);
     //$instance['tpl_parsed']
     //WPFB_FileListWidget
     $tpl_func = WPFB_Core::CreateTplFunc($instance['tpl_parsed']);
     echo '<ul>';
     foreach ($files as $file) {
         echo '<li>', $tpl_func($file), '</li>';
     }
     echo '</ul>';
     echo $after_widget;
 }
Example #10
0
 public static function SettingsUpdated($old, &$new)
 {
     $messages = array();
     wpfb_call('Setup', 'ProtectUploadPath');
     // custom fields:
     $messages = array_merge($messages, WPFB_Admin::SyncCustomFields());
     if ($old['thumbnail_path'] != $new['thumbnail_path']) {
         update_option(WPFB_OPT_NAME, $old);
         // temporaly restore old settings
         WPFB_Core::$settings = (object) $old;
         $items = array_merge(WPFB_File::GetFiles2(), WPFB_Category::GetCats());
         $old_thumbs = array();
         foreach ($items as $i => $item) {
             $old_thumbs[$i] = $item->GetThumbPath(true);
         }
         update_option(WPFB_OPT_NAME, $new);
         // restore new settings
         WPFB_Core::$settings = (object) $new;
         $n = 0;
         foreach ($items as $i => $item) {
             if (!empty($old_thumbs[$i]) && is_file($old_thumbs[$i])) {
                 $new_path = $item->GetThumbPath(true);
                 $dir = dirname($new_path);
                 if (!is_dir($dir)) {
                     self::Mkdir($dir);
                 }
                 if (rename($old_thumbs[$i], $new_path)) {
                     $n++;
                 } else {
                     $messages[] = sprintf(__('Could not move thumnail %s to %s.', WPFB), $old_thumbs[$i], $new_path);
                 }
             }
         }
         if (count($n > 0)) {
             $messages[] = sprintf(__('%d Thumbnails moved.', WPFB), $n);
         }
     }
     flush_rewrite_rules();
     return $messages;
 }
Example #11
0
 static function GetAttachedFiles($post_id, $show_all = false)
 {
     $post_id = intval($post_id);
     return WPFB_File::GetFiles2(array('file_post_id' => $post_id), !$show_all && WPFB_Core::$settings->hide_inaccessible, WPFB_Core::GetSortSql(null, true));
 }
Example #12
0
 static function GetTreeItems($parent_id, $args = array())
 {
     /* $args = array(
      * sort_cats
      * sort_files
      * cats_only
      * exclude_attached
      * priv
      * idp => 
      * onselect
      * );
      */
     $parent_id = is_object($parent_id) ? $parent_id->cat_id : intval($parent_id);
     $args = self::fileBrowserArgs($args);
     $type = $args['type'];
     $browser = $type === 'browser';
     $filesel = $type === 'fileselect';
     $catsel = $type === 'catselect';
     $args['idp'] = wp_strip_all_tags($args['idp']);
     $idp_cat = $args['idp'] . 'cat-';
     $idp_file = $args['idp'] . 'file-';
     $file_tpl = $cat_tpl = !empty($args['tpl']) ? $args['tpl'] : (($is_admin = !empty($args['is_admin'])) ? 'filebrowser_admin' : 'filebrowser');
     if ($parent_id > 0 && (is_null($cat = WPFB_Category::GetCat($parent_id)) || !$cat->CurUserCanAccess())) {
         return array((object) array('id' => 0, 'text' => WPFB_Core::$settings->cat_inaccessible_msg));
     }
     $sql_sort_files = $browser ? WPFB_Core::GetSortSql((WPFB_Core::$settings->file_browser_file_sort_dir ? '>' : '<') . WPFB_Core::$settings->file_browser_file_sort_by) : 'file_display_name';
     $sql_sort_cats = $browser ? WPFB_Core::GetSortSql((WPFB_Core::$settings->file_browser_cat_sort_dir ? '>' : '<') . WPFB_Core::$settings->file_browser_cat_sort_by, false, true) : 'cat_name';
     $files_before_cats = $browser && WPFB_Core::$settings->file_browser_fbc;
     $inline_add_cat = WPFB_Core::CurUserCanCreateCat();
     $where = " cat_parent = {$parent_id} ";
     if ($browser) {
         $where .= " AND cat_exclude_browser <> '1' ";
     }
     $cats = WPFB_Category::GetCats("WHERE {$where} ORDER BY {$sql_sort_cats}");
     $cat_items = array();
     $i = 0;
     $folder_class = $filesel || $catsel ? 'folder' : '';
     foreach ($cats as $c) {
         if ($c->CurUserCanAccess(true)) {
             $cat_items[$i++] = (object) array('id' => $idp_cat . $c->cat_id, 'cat_id' => $c->cat_id, 'text' => self::fileBrowserCatItemText($catsel, $filesel, $c, $args['onselect'], $cat_tpl), 'hasChildren' => $inline_add_cat || $c->HasChildren($catsel), 'classes' => $folder_class);
         }
     }
     if ($inline_add_cat) {
         $is = WPFB_Core::$settings->small_icon_size > 0 ? WPFB_Core::$settings->small_icon_size : 32;
         $cat_items[$i++] = (object) array('id' => $idp_cat . '0', 'cat_id' => 0, 'text' => '<form action="" style="display:none;"><input type="text" placeholder="' . __('Category Name', WPFB) . '" name="cat_name" /></form> ' . '<a href="#" style="text-decoration:none;" onclick=\'return wpfb_newCatInput(this,' . $parent_id . ');\'><span style="' . ($browser ? 'font-size:' . $is . 'px;width:' . $is . 'px' : 'font-size:200%') . ';line-height:0;vertical-align:sub;display:inline-block;text-align:center;">+</span>' . __('Add Category', WPFB) . '</a>' . '<span style="font-size: 200%;vertical-align: sub;line-height: 0;font-weight: lighter;"> / </span>' . '<a href="#" style="text-decoration:none;" class="add-file"><span style="' . ($browser ? 'font-size:' . $is . 'px;width:' . $is . 'px' : 'font-size:200%') . ';line-height:0;vertical-align:sub;display:inline-block;text-align:center;">+</span>' . __('Add File', WPFB) . '</a>', 'hasChildren' => false, 'classes' => 'add-item');
     } elseif ($parent_id == 0 && $catsel && $i == 0) {
         return array((object) array('id' => $idp_cat . '0', 'text' => sprintf(__('You did not create a category. <a href="%s" target="_parent">Click here to create one.</a>', WPFB), admin_url('admin.php?page=wpfilebase_cats#addcat')), 'hasChildren' => false));
     }
     $file_items = array();
     $i = 0;
     if (empty($args['cats_only']) && !$catsel) {
         $where = WPFB_File::GetSqlCatWhereStr($parent_id);
         if (!empty($args['exclude_attached'])) {
             $where .= " AND `file_post_id` = 0";
         }
         //	$files =  WPFB_File::GetFiles2(WPFB_File::GetSqlCatWhereStr($root_id),  WPFB_Core::$settings->hide_inaccessible, $sql_file_order);
         //$files =  WPFB_File::GetFiles2(WPFB_File::GetSqlCatWhereStr($root_id),  WPFB_Core::$settings->hide_inaccessible, $sql_file_order);
         $files = WPFB_File::GetFiles2($where, WPFB_Core::$settings->hide_inaccessible && !($filesel && wpfb_call('Core', 'CurUserCanUpload')), $sql_sort_files);
         foreach ($files as $f) {
             $file_items[$i++] = (object) array('id' => $idp_file . $f->file_id, 'text' => $filesel ? '<a href="javascript:;" onclick="' . sprintf($args['onselect'], $f->file_id) . '">' . esc_html($f->GetTitle(24)) . '</a> <span style="font-size:75%;vertical-align:top;">' . esc_html($f->file_name) . '</span>' : $f->GenTpl2($file_tpl, false), 'classes' => $filesel ? 'file' : null, 'hasChildren' => false);
         }
     }
     return $files_before_cats ? array_merge($file_items, $cat_items) : array_merge($cat_items, $file_items);
 }
Example #13
0
 static function GetTreeItems($parent_id, $type = 'browser', $args = array())
 {
     /* $args = array(
      * sort_cats
      * sort_files
      * cats_only
      * exclude_attached
      * priv
      * cat_id_fmt => 
      * file_id_fmt => 
      * onselect
      * );
      */
     $parent_id = is_object($parent_id) ? $parent_id->cat_id : intval($parent_id);
     $browser = $type === 'browser';
     $filesel = $type === 'fileselect';
     $catsel = $type === 'catselect';
     if ($parent_id > 0 && (is_null($cat = WPFB_Category::GetCat($parent_id)) || !$cat->CurUserCanAccess())) {
         return array((object) array('id' => 0, 'text' => WPFB_Core::$settings->cat_inaccessible_msg));
     }
     $sql_sort_files = $browser ? WPFB_Core::GetSortSql((WPFB_Core::$settings->file_browser_file_sort_dir ? '>' : '<') . WPFB_Core::$settings->file_browser_file_sort_by) : 'file_display_name';
     $sql_sort_cats = $browser ? WPFB_Core::GetSortSql((WPFB_Core::$settings->file_browser_cat_sort_dir ? '>' : '<') . WPFB_Core::$settings->file_browser_cat_sort_by, false, true) : 'cat_name';
     $cat_id_format = empty($args['cat_id_fmt']) ? 'wpfb-cat-%d' : $args['cat_id_fmt'];
     $file_id_format = empty($args['file_id_fmt']) ? 'wpfb-file-%d' : $args['file_id_fmt'];
     if ($filesel || $catsel) {
         $onselect = $args['onselect'];
     }
     $files_before_cats = $browser && WPFB_Core::$settings->file_browser_fbc;
     $where = " cat_parent = {$parent_id} ";
     if ($browser) {
         $where .= " AND cat_exclude_browser <> '1' ";
     }
     $cats = WPFB_Category::GetCats("WHERE {$where} ORDER BY {$sql_sort_cats}");
     $cat_items = array();
     $i = 0;
     foreach ($cats as $c) {
         if ($c->CurUserCanAccess(true)) {
             $cat_items[$i++] = (object) array('id' => sprintf($cat_id_format, $c->cat_id), 'cat_id' => $c->cat_id, 'text' => $catsel ? '<a href="javascript:' . sprintf($onselect, $c->cat_id, str_replace('\'', '\\\'', htmlspecialchars(stripslashes($c->cat_name)))) . '">' . esc_html($c->GetTitle(24)) . '</a>' : ($filesel ? esc_html($c->cat_name) . " ({$c->cat_num_files} / {$c->cat_num_files_total})" : $c->GenTpl2('filebrowser', false)), 'hasChildren' => $c->HasChildren($catsel), 'classes' => $filesel || $catsel ? 'folder' : null);
         }
     }
     if ($parent_id == 0 && $catsel && $i == 0) {
         return array((object) array('id' => sprintf($cat_id_format, 0), 'text' => sprintf(__('You did not create a category. <a href="%s" target="_parent">Click here to create one.</a>', WPFB), admin_url('admin.php?page=wpfilebase_cats#addcat')), 'hasChildren' => false));
     }
     $file_items = array();
     $i = 0;
     if (empty($args['cats_only']) && !$catsel) {
         $where = WPFB_File::GetSqlCatWhereStr($parent_id);
         if (!empty($args['exclude_attached'])) {
             $where .= " AND `file_post_id` = 0";
         }
         //	$files =  WPFB_File::GetFiles2(WPFB_File::GetSqlCatWhereStr($root_id),  WPFB_Core::$settings->hide_inaccessible, $sql_file_order);
         //$files =  WPFB_File::GetFiles2(WPFB_File::GetSqlCatWhereStr($root_id),  WPFB_Core::$settings->hide_inaccessible, $sql_file_order);
         $files = WPFB_File::GetFiles2($where, WPFB_Core::$settings->hide_inaccessible && !($filesel && wpfb_call('Admin', 'CurUserCanUpload')), $sql_sort_files);
         foreach ($files as $f) {
             $file_items[$i++] = (object) array('id' => sprintf($file_id_format, $f->file_id), 'text' => $filesel ? '<a href="javascript:' . sprintf($onselect, $f->file_id, str_replace('\'', '\\\'', htmlspecialchars(stripslashes($f->file_display_name)))) . '">' . esc_html($f->GetTitle(24)) . '</a> <span style="font-size:75%;vertical-align:top;">' . esc_html($f->file_name) . '</span>' : $f->GenTpl2('filebrowser', false), 'classes' => $filesel ? 'file' : null, 'hasChildren' => false);
         }
     }
     return $files_before_cats ? array_merge($file_items, $cat_items) : array_merge($cat_items, $file_items);
 }