prepare("SELECT option_id FROM $wpdb->options WHERE option_name = %s", $option_name ); return $wpdb->get_var($query); } } function sanitize_wpdocs_data( $input ) { if(is_array($input)){ $new_input = array(); foreach ( $input as $key => $val ) { $new_input[ $key ] = (is_array($val)?sanitize_wpdocs_data($val):sanitize_text_field( $val )); } }else{ $new_input = sanitize_text_field($input); } if(!is_array($new_input)){ if(stripos($new_input, '@') && is_email($new_input)){ $new_input = sanitize_email($new_input); } if(stripos($new_input, 'http') || wp_http_validate_url($new_input)){ $new_input = sanitize_url($new_input); } } return $new_input; } function wpdocs_admin_enqueue_script() { if (isset($_GET['page']) && $_GET['page'] == 'wpdocs') { global $wpdocs_pro, $wpdocs_options; wp_enqueue_script('wpdocs_boostrap', plugin_dir_url(dirname(__FILE__)) . 'js/bootstrap.min.js', array('jquery')); wp_enqueue_style('wpdocs-boostrap', plugins_url('css/bootstrap.min.css', dirname(__FILE__))); wp_enqueue_script('wpdocs_slim', plugin_dir_url(dirname(__FILE__)) . 'js/slimselect.js', array('jquery')); wp_enqueue_style('wpdocs-slim', plugins_url('css/slimselect.css', dirname(__FILE__))); wp_enqueue_style( 'jquery-ui', plugins_url('css/jquery-ui.css', dirname(__FILE__)), array('jquery') ); wp_enqueue_style( 'wp-jquery-ui-dialog' ); wp_enqueue_script('wpdocs_block_scripts', plugin_dir_url(dirname(__FILE__)) . 'js/jquery.blockUI.js', array('jquery')); wp_enqueue_style('fontawesome', plugins_url('css/fontawesome.min.css', dirname(__FILE__))); wp_enqueue_media(); wp_enqueue_style('wpdocs-common', plugins_url('css/common-styles.css', dirname(__FILE__)), array(), date('Ymdhi')); wp_enqueue_style('wpdocs-admin', plugins_url('css/admin-styles.css', dirname(__FILE__)), array(), date('Ymdhi')); wp_enqueue_script('wpdocs_admin_scripts', plugin_dir_url(dirname(__FILE__)) . 'js/admin-scripts.js', array('jquery', 'jquery-ui-dialog'), time()); if($wpdocs_pro){ wp_enqueue_script('wpdocs_pro_scripts', plugin_dir_url(dirname(__FILE__)) . 'pro/wp-docs-admin.js?t='.time(), array('jquery')); } $dir_id_to_titles = array(); $all_dirs = wpdocs_list(''); if(!empty($all_dirs)){ foreach($all_dirs as $all_dir){ $dir_id_to_titles[$all_dir['id']] = $all_dir['title']; } } wp_localize_script( 'wpdocs_admin_scripts', 'wpdocs_ajax_object', array( 'ajax_url' => admin_url('admin-ajax.php'), 'url' => admin_url('options-general.php?page=wpdocs'), 'wpdocs_pro' => $wpdocs_pro, 'wpdocs_delete_msg' => __('Do you want to delete this directory and data as well?', 'wp-docs'), 'wpdocs_delete_shortcut_msg' => __('Do you want to delete this shortcut?', 'wp-docs'), 'target_dir_msg' => __('Select a target directory.', 'wp-docs'), 'move_error' => __('Sorry! File could not move, please try again.', 'wp-docs'), 'move_str' => __('Cannot move to the selected directory', 'wp-docs'), 'copied' => __('Successfully copied!', 'wp-docs'), 'moved' => __('Successfully moved!', 'wp-docs'), 'premium_feature' => __('This feature is not available in basic version. Please upgrade.', 'wp-docs'), 'del_confirm' => __('Do you want to delete this file?', 'wp-docs'), 'del_confirm_all' => __('Do you want to delete selected files?', 'wp-docs'), 'import_confirm' => __('Do you want to import all directories and files from Memphis Documents Library?', 'wp-docs'), 'undo_import_confirm' => __('Do you want to rollback the import?', 'wp-docs'), 'select_role_str' => __('Select roles to allow upload', 'wp-docs'), 'rename_confirm' => __('Do you want to rename this directory?', 'wp-docs'), 'reset_confirm' => __('Do you want to reset all settings and clear directories?', 'wp-docs'), 'nonce' => wp_create_nonce('wpdocs_update_options_nonce'), 'empty_settings' => empty($wpdocs_options), 'wc_os_pg' => (isset($_GET['pg'])?esc_attr($_GET['pg']):'0'), 'wc_os_tab' => (isset($_GET['t'])?esc_attr($_GET['t']):'0'), 'all_dirs' => $dir_id_to_titles ) ); } } add_filter( 'ajax_query_attachments_args', 'wpdocs_filter_media'); function wpdocs_filter_media( $query ) { // admins get to see everything if ( ! current_user_can( 'manage_options' ) ) $query['author'] = get_current_user_id(); return $query; } function wpdocs_get_user_roles(){ $ret = array(); global $wp_roles; if(!empty($wp_roles) && isset($wp_roles->roles) && !empty($wp_roles->roles)){ foreach($wp_roles->roles as $key=>$arr){ $ret[$key] = $arr['name']; } } return $ret; } function wpdocs_get_user_roles_options(array $selected){ $wpdocs_get_user_roles = wpdocs_get_user_roles(); $options = ''; if(!empty($wpdocs_get_user_roles)){ foreach ($wpdocs_get_user_roles as $role_key => $role_name){ $selected_option = in_array($role_key, $selected) ? 'selected="selected"' : ''; $options .= ""; } } return $options; } function wpdocs_allowed_mime_types($mime_types){ global $wpdocs_options; $dir = (isset($_GET['wpdocs_restriction']) ? esc_attr($_GET['wpdocs_restriction']) : 0); $is_file = wpdocs_dir_options_by_name('file_upload', false, $dir); $allowed_ext = wpdocs_dir_options_by_name('allowed_ext', '', $dir); if($is_file && $allowed_ext){ $allowed_ext = explode(',', $allowed_ext); $allowed_ext = array_map('trim', $allowed_ext); $allowe_mime_types = array(); if(!empty($mime_types)){ foreach ($mime_types as $mime_key => $mime_value){ $mime_key_array = explode('|', $mime_key); $mime_key_array = array_map('trim', $mime_key_array); if(!empty($allowed_ext)){ foreach ($allowed_ext as $ext){ if(in_array($ext, $mime_key_array)){ $allowe_mime_types[$mime_key] = $mime_value; } } } } } return $allowe_mime_types; }else{ return $mime_types; } } function wpdocs_get_current_user_role() { global $wp_roles; $current_user = wp_get_current_user(); $roles = $current_user->roles; $role = array_shift( $roles ); return isset( $wp_roles->role_names[ $role ] ) ? $role : FALSE; } function wpdocs_can_current_user_upload_file($dir = 0){ global $wpdocs_options; $is_file = wpdocs_dir_options_by_name('file_upload', false, $dir); if(!is_user_logged_in() && !$is_file){return false;} $current_user_role = wpdocs_get_current_user_role(); // $allowed_role = array_key_exists('allowed_role', $wpdocs_options) ? $wpdocs_options['allowed_role'] : array(); $allowed_role = wpdocs_dir_options_by_name('allowed_role', array(), $dir); if(!empty($allowed_role)){ if(in_array($current_user_role, $allowed_role)){ $can_current_user_upload = current_user_can('upload_files'); if(!$can_current_user_upload){ $user_role = get_role($current_user_role); $user_role->add_cap('upload_files'); $user_role->add_cap('delete_posts'); } return true; }else{ return false; } }else{ return current_user_can('upload_files'); } } add_action('admin_enqueue_scripts', 'wpdocs_admin_enqueue_script'); add_action('wp_enqueue_scripts', 'wpdocs_wp_enqueue_script'); function wp_docs_recursive_array_search($needle, $haystack) { if(is_array($haystack) && !empty($haystack)){ foreach($haystack as $key=>$value) { if(!is_array($value) && stripos(' '.$value, $needle)) { return array($key); } else if (is_array($value) && $subkey = wp_docs_recursive_array_search($needle,$value)) { array_unshift($subkey, $key); return $subkey; } } } } function wpdocs_test($post_content , $short_code = ''){ global $post; $result = array(); //get shortcode regex pattern wordpress function $pattern = get_shortcode_regex(); $result = array(); if ( preg_match_all( '/'. $pattern .'/s', $post_content, $matches ) ) { pree($matches); $keys = array(); foreach( $matches[0] as $key => $value) { // $matches[3] return the shortcode attribute as string // replace space with '&' for parse_str() function $get = preg_replace('/"\s/', '"&', $matches[3][$key] ); parse_str($get, $output); pree($get); pree($output); //get all shortcode attribute keys $keys = array_unique( array_merge( $keys, array_keys($output)) ); $result[] = $output; } //var_dump($result); if( $keys && $result ) { // Loop the result array and add the missing shortcode attribute key foreach ($result as $key => $value) { // Loop the shortcode attribute key foreach ($keys as $attr_key) { $result[$key][$attr_key] = isset( $result[$key][$attr_key] ) ? $result[$key][$attr_key] : NULL; } //sort the array key ksort( $result[$key]); } } //display the result } return $result; } function wpdocs_wp_enqueue_script() { global $post, $wpdocs_pro, $wpdocs_url, $wpdocs_options; $wpdocs_relevant_page = false; $localize_handler = 'wpdocs_front_scripts'; //pree($post->post_content); //pree(stripos($post->post_content, '[wpdocs]')); $details_view_sorting = array_key_exists('details_view_sorting', $wpdocs_options); $ajax_based_deep_search = ($wpdocs_pro && array_key_exists('ajax_based_deep_search', $wpdocs_options)); if(!empty($post) && isset($post->post_content)){ $meta_data = get_post_meta($post->ID); $wpdocs_inside_meta = wp_docs_recursive_array_search('[wpdocs', $meta_data); $wpdocs_inside_meta = is_array($wpdocs_inside_meta)?array_filter($wpdocs_inside_meta):array(); //pree($wpdocs_inside_meta); if(stripos(' '.$post->post_content, '[wpdocs') || !empty($wpdocs_inside_meta)){ $wpdocs_relevant_page = true; } } //pree($wpdocs_relevant_page); if($wpdocs_relevant_page){ $is_bootstrap = array_key_exists('bootstrap', $wpdocs_options); $is_file_upload = array_key_exists('file_upload', $wpdocs_options); if(is_admin() || ($wpdocs_pro)){ add_filter('upload_mimes', 'wpdocs_allowed_mime_types', 1, 1); wp_enqueue_media(); } if($is_bootstrap){ wp_enqueue_script('wpdocs_boostrap', plugin_dir_url(dirname(__FILE__)) . 'js/bootstrap.min.js'); wp_enqueue_style('wpdocs-boostrap', plugins_url('css/bootstrap.min.css', dirname(__FILE__))); } $is_ajax_url = false; $is_ajax = false; if($wpdocs_pro){ $is_ajax = array_key_exists('ajax', $wpdocs_options); $is_ajax_url = array_key_exists('ajax_url', $wpdocs_options); wp_enqueue_script('wpdocs_pro_scripts', $wpdocs_url . 'pro/wp-docs-pro.js', array('jquery'), time()); $localize_handler = 'wpdocs_pro_scripts'; wp_enqueue_script('wpdocs_block_scripts', $wpdocs_url . 'js/jquery.blockUI.js', array('jquery')); } wp_enqueue_style('fontawesome', plugins_url('css/fontawesome.min.css', dirname(__FILE__))); wp_enqueue_script('wpdocs_front_scripts', plugin_dir_url(dirname(__FILE__)) . 'js/front-scripts.js', array('jquery'), date('Ymdhi')); wp_enqueue_style('wpdocs-common', plugins_url('css/common-styles.css', dirname(__FILE__))); wp_enqueue_style('wpdocs-front', plugins_url('css/front-styles.css', dirname(__FILE__)), array(), date('Ymdhi')); $dir_id = (array_key_exists('dir_id', $_GET)?sanitize_wpdocs_data($_GET['dir_id']):0); $dir_id = (!$dir_id && array_key_exists('dir', $_GET)?sanitize_wpdocs_data($_GET['dir']):0); $params_array = array( 'dir_id' => $dir_id, 'parent_dir' => get_permalink($post->ID).'/?dir=', 'wpdocs_pro' => $wpdocs_pro, 'details_view_sorting' => $details_view_sorting, 'ajax_based_deep_search' => $ajax_based_deep_search, 'ajax_url' => admin_url('admin-ajax.php'), 'this_url' => get_permalink(), 'del_confirm' => __('Do you want to delete this file?', 'wp-docs'), 'del_dir_confirm' => __('Do you want to delete this directory?', 'wp-docs'), 'select_file_alert' => __('Please select a file to delete.', 'wp-docs'), 'not_belong_dir_string' => __('Sorry, you can not delete this directory.', 'wp-docs'), 'not_belong_string' => __('Sorry, you can not delete this file.', 'wp-docs'), 'copied' => __('Successfully copied!', 'wp-docs'), 'moved' => __('Successfully moved!', 'wp-docs'), 'block_ui' => __('Please wait...', 'wp-docs'), 'is_ajax' => $is_ajax, 'is_ajax_url' => $is_ajax_url, 'del_from_front' => array_key_exists('del_from_front', $wpdocs_options), 'nonce' => wp_create_nonce('wpdocs_update_options_nonce'), 'restriction_load' => isset($_GET['wpdocs_restriction']), 'restriction_id' => isset($_GET['wpdocs_restriction']) ? $_GET['wpdocs_restriction'] : '', 'restriction_container' => isset($_GET['wpdocs_container']) ? $_GET['wpdocs_container'] : '', 'current_user_id' => get_current_user_id(), 'current_user_role' => wpdocs_get_current_user_role(), ); if($params_array['dir_id'] && $params_array['del_from_front']){ $params_array['del_from_front'] = wpdocs_can_current_user_upload_file($params_array['dir_id']); } wp_localize_script( $localize_handler, 'wpdocs', $params_array ); } } if (is_admin()) { add_action('admin_menu', 'wpdocs_menu'); } function wpdocs_menu() { global $wpdocs_data, $wpdocs_pro; $title = $wpdocs_data['Name'] . ' ' . ($wpdocs_pro ? ' ' . __('Pro', 'wp-docs') : ''); add_options_page($title, $title, 'publish_pages', 'wpdocs', 'wpdocs_settings'); } function wpdocs_settings() { global $wpdocs_premium_link, $wpdocs_pro, $wpdocs_url; $wpdocs_options = get_option('wpdocs_options', array()); $wpdocs_options = is_array($wpdocs_options)?$wpdocs_options:array(); include_once('wpdocs_settings.php'); } function wpdocs_list_inner($post_parent='', $recursive=false, $orderby='post_title', $order='ASC', $exclude_post_type=array()){ global $wpdb, $wpdocs_post_types, $wpdocs_post_status; $ids = (is_array($post_parent)?$post_parent:explode(',', $post_parent)); $ids = array_map('trim', $ids); $ids = array_filter($ids, 'is_numeric'); $ids = (empty($ids)?array(0):$ids); $posts_array = array(); if(!empty($ids)){ $post_types = $wpdocs_post_types; if(!empty($exclude_post_type)){ $post_types = array_diff_key($post_types, array_flip($exclude_post_type)); } //pree($exclude_post_type); //pree($post_types);//exit; if($recursive){ unset($post_types['shortcut']); } $query_str = $wpdb->prepare('SELECT ID, post_title, post_type, post_content, post_parent, guid FROM '.$wpdb->posts.' WHERE post_status=%s AND post_type IN ("'.implode('","', $post_types).'") AND post_parent IN ("'.implode(',', $ids).'") ORDER BY '. $orderby.' '.$order, $wpdocs_post_status ); //pree($query_str); $posts_array = $wpdb->get_results($query_str); if($recursive){ $post_parent_arr = array(); if(!empty($posts_array)){ foreach($posts_array as $posts_item){ $post_parent_arr[] = $posts_item->ID; } if(!empty($post_parent)){ $posts_array = array_merge($posts_array, wpdocs_list_inner($post_parent_arr, $recursive, $orderby, $order, $exclude_post_type)); } } } } return $posts_array; } function wpdocs_list($post_parent = 0, $orderby='post_title', $order='ASC', $return_type='smart', $exclude_post_type=array()){ //pree($post_parent);pree($orderby);pree($order);pree($return_type);pree($exclude_post_type); global $wpdocs_post_types, $wpdocs_post_status; $ret = $posts_array = array(); //global $wpdb; $args = array( 'posts_per_page' => -1, 'offset' => 0, 'category' => '', 'category_name' => '', 'orderby' => $orderby, 'order' => $order, 'include' => '', 'exclude' => '', 'meta_key' => '', 'meta_value' => '', 'post_type' => $wpdocs_post_types, 'post_mime_type' => '', 'author' => '', 'author_name' => '', 'post_status' => $wpdocs_post_status, 'suppress_filters' => true ); if(is_numeric($post_parent)) { $args['post_parent'] = $post_parent; $posts_array = get_posts($args); //pree($wpdb->last_query); }else{ switch($orderby){ case 'title': case 'post_title': $orderby = 'post_title'; break; case 'date': case 'post_date': $orderby = 'post_date'; break; } //pree($exclude_post_type); $posts_array = wpdocs_list_inner($post_parent, false, $orderby, $order, $exclude_post_type); } if (!empty($posts_array)) { foreach ($posts_array as $posts) { //pree($posts); switch($return_type){ default: case 'smart': $guid_pos = strpos($posts->guid, 'p='.$posts->ID); $posts->guid = ($guid_pos!='' && $guid_pos>=0?'':$posts->guid); $ret[] = array('id' => $posts->ID, 'title' => $posts->post_title, 'type' => $posts->post_type, 'content' => $posts->post_content, 'link' => $posts->guid); break; case 'object': $ret[] = $posts; break; } } } //pree($ret); return $ret; } function wpdocs_create_folder_post($post_parent, $post_title = "New Folder") { $my_post = array( 'post_title' => $post_title, 'post_content' => '', 'post_status' => 'hidden', 'post_author' => get_current_user_id(), 'post_type' => 'wpdocs_folder', 'post_parent' => (($post_parent > 0 && wpdocs_folder_exists($post_parent)) ? $post_parent : 0), 'post_category' => array() ); $dir_id = wp_insert_post($my_post); return $dir_id; } add_action('wp_ajax_wpdocs_create_folder', 'wpdocs_create_folder'); function wpdocs_create_folder() { $nonce = sanitize_wpdocs_data(wp_unslash($_POST['nonce'])); if (!empty($_POST) && isset($_POST['nonce']) && ! wp_verify_nonce( $nonce, 'wpdocs_update_options_nonce' ) ) die (__("Sorry, your nonce did not verify.", 'wp-docs')); $post_parent = sanitize_wpdocs_data($_POST['parent_dir']); $dir_id = wpdocs_create_folder_post($post_parent); $list_obj = get_post($dir_id); $list = array('id'=>$list_obj->ID, 'content'=>$list_obj->post_content, 'title'=>$list_obj->post_title, 'type'=>$list_obj->post_type, 'guid'=>$list_obj->guid); $is_shortcut = ($list['type']==$wpdocs_post_types['shortcut']); echo '
  • '.__('New Folder', 'wp-docs').'
  • '; exit; } if(!function_exists('wpd_get_icon_file_types')){ function wpd_get_icon_file_types(){ global $icon_sub_path, $wpdocs_dir; $ext_img_dir = $wpdocs_dir.$icon_sub_path; $file_types = file_exists($ext_img_dir) && is_dir($ext_img_dir) ? scandir($ext_img_dir) : array(); $file_types = array_map(function ($file) use ($ext_img_dir){ $ignore_array = array('.', '..'); if(!in_array($file, $ignore_array) && !is_dir($ext_img_dir.$file)){ return current(explode('.', $file)); } }, $file_types); $file_types = array_filter($file_types); return $file_types; } } if(!function_exists('wpd_get_item_type_icon_url')){ function wpd_get_item_type_icon_url($item){ //pree($item); global $wpdocs_url, $icon_sub_path, $wpdocs_options, $wpdocs_pro; $ext_img_url = $wpdocs_url.$icon_sub_path; $file_types = wpd_get_icon_file_types(); $file_url = wp_get_attachment_url($item); //pree($file_url);exit; $filename = basename($file_url); $filename = explode('?', $filename); $filename = (is_array($filename)?current($filename):$filename); $ext = explode('.', $filename); $ext = end($ext); $icon = in_array($ext, $file_types) ? $ext.'.png' : 'unknown.png'; $icon_url = $ext_img_url.$icon; switch($ext){ case 'svg': case 'gif': case 'bmp': case 'jpg': case 'jpeg': case 'png': $thumb_image = array_key_exists('thumb_image', $wpdocs_options); if($thumb_image){ $icon_urls = wp_get_attachment_image_src($item, 'thumbnail', false); if(!empty($icon_urls)){ $icon_url = current($icon_urls); } } //pree($icon_urls); break; } return array( 'file_url' => $file_url, 'ext' => $ext, 'filename' => $filename, 'title' => $filename, 'icon_url' => $icon_url ); } } add_action('wp_ajax_wpdocs_add_files', 'wpdocs_add_files'); function wpdocs_add_files(){ $nonce = sanitize_wpdocs_data(wp_unslash($_POST['nonce'])); if (!empty($_POST) && isset($_POST['nonce']) && ! wp_verify_nonce( $nonce, 'wpdocs_update_options_nonce' ) ) die (__("Sorry, your nonce did not verify.", 'wp-docs')); $dir_id = sanitize_wpdocs_data($_POST['dir_id']); $files = sanitize_wpdocs_data($_POST['files']); $files = is_array($files) ? $files : array($files); // delete_post_meta($dir_id, 'wpdocs_items'); wpdocs_update_files_meta($dir_id, $files); $ret = ''; if(!empty($files)){ $files_list = wpdocs_list_added_items($dir_id); $ret = $files_list; } echo $ret; exit; } function wpdocs_list_added_items($dir) { global $wpdocs_options; $wp_get_upload_dir = wp_get_upload_dir(); $wp_uploads_path = $wp_get_upload_dir['basedir']; $wp_uploads_url = $wp_get_upload_dir['baseurl']; $wpdocs_items = wpdocs_added_items($dir); //pree($wpdocs_items); $files_list = array(); $pdf_thumb_selected = (array_key_exists('pdf_thumb', $wpdocs_options)?$wpdocs_options['pdf_thumb']:'default'); if (!empty($wpdocs_items)) { //pree('$wpdocs_items'); foreach ($wpdocs_items as $item) { $class = ''; $item_data = wpd_get_item_type_icon_url($item); extract($item_data); //pree($item_data); //pree($wp_uploads_path);exit; $icon_str = ''; switch ($ext) { case 'png': case 'jpg': case 'jpeg': case 'gif': case 'bmp': //$class .= 'fa-image'; break; case 'pdf': if($pdf_thumb_selected=='first_page_as_thumbnail'){ $pdf_file = str_replace($wp_uploads_url, $wp_uploads_path, $item_data['file_url']); if(file_exists($pdf_file) && class_exists('imagick')){ //pree($item_data); //$icon_str = ''; $file_url_thumb = str_replace('.pdf', '.png', strtolower($item_data['file_url'])); $file_url_thumb_path = str_replace($wp_uploads_url, $wp_uploads_path, $file_url_thumb); if(!file_exists($file_url_thumb_path)){ $im = new imagick($item_data['file_url']); $im->setIteratorIndex(0); $im->setImageFormat('png'); $im->writeImage($file_url_thumb_path); } $icon_str = ''; } } break; default: //$class .= 'fa-file'; break; } $class = ''; $files_list[$title] = '
  • '.$icon_str.' ' . $title . '
  • '; } } ksort($files_list); return implode('', $files_list); } if(!function_exists('wpdocs_get_breadcrumb_array')){ function wpdocs_get_breadcrumb_array($dir, $breadcrumb=true){ $breadcrumb_array = array(); if ($breadcrumb && $dir) { $dir_id = $dir; $dir_parent = wp_get_post_parent_id($dir_id); array_push($breadcrumb_array, $dir_id); array_push($breadcrumb_array, $dir_parent); if ($dir_parent != 0) { do { $dir_parent = wp_get_post_parent_id($dir_parent); array_push($breadcrumb_array, $dir_parent); } while ($dir_parent > 0); } } return $breadcrumb_array; } } if(!function_exists('wpdocs_list_population')){ function wpdocs_list_population($list=array(), $file_data=array(), $file_list_row='', $default_orderby='', $default_order=''){ $filename = $file_data['filename']; $list[$filename] = $file_list_row; return $list; } } if(!function_exists('wpdocs_sorting')){ function wpdocs_sorting($list, $order=''){ ksort($list); return $list; } } add_shortcode('wpdocs', 'wpdocs_front_list'); function wpdocs_front_list($atts=array()) { if ( !empty($_POST) && !wp_doing_ajax() && ( (isset( $_POST['wpdocs_front_list_nonce'] ) && ! wp_verify_nonce( sanitize_wpdocs_data(wp_unslash($_POST['wpdocs_front_list_nonce_field'])), 'wpdocs_front_list_nonce' ) ) ) ) { print _e('Sorry, your nonce did not verify.', 'wp-docs'); exit; } else { } //pree($atts); ob_start(); global $wpdocs_url, $wpdocs_options, $wpdocs_pro, $wpdocs_post_types, $pdf_thumb_selected; $pdf_thumb_selected = (array_key_exists('pdf_thumb', $wpdocs_options)?$wpdocs_options['pdf_thumb']:'default'); $wpdocs_view = get_option('wpdocs_view', array()); $wpdocs_view = is_array($wpdocs_view) ? $wpdocs_view : array(); $is_bootstrap = array_key_exists('bootstrap', $wpdocs_options); $is_searchbox = array_key_exists('searchbox', $wpdocs_options); $details_date = array_key_exists('details_date', $wpdocs_options); $details_date_created = array_key_exists('details_date_created', $wpdocs_options); $details_view_sorting = array_key_exists('details_view_sorting', $wpdocs_options); $ajax_based_deep_search = ($wpdocs_pro && array_key_exists('ajax_based_deep_search', $wpdocs_options)); $details_type = array_key_exists('details_type', $wpdocs_options); $details_size = array_key_exists('details_size', $wpdocs_options); $customize_icon_size = array_key_exists('icon_size', $wpdocs_options) ? $wpdocs_options['icon_size'] : ''; $customize_icon_size = ($customize_icon_size?$customize_icon_size: 'font-size:100%'); $customize_icon_size = explode(':', $customize_icon_size); $customize_icon_size = 'font-size:'.end($customize_icon_size); $customize_font_size = array_key_exists('font_size', $wpdocs_options) ? $wpdocs_options['font_size'] : ''; $customize_font_size = ($customize_font_size?$customize_font_size: 'font-size:90%'); $customize_font_size = explode(':', $customize_font_size); $customize_font_size = 'font-size:'.end($customize_font_size); $wp_get_upload_dir = wp_get_upload_dir(); $wp_uploads_path = $wp_get_upload_dir['basedir']; $wp_uploads_url = home_url('wp-content/uploads'); if(isset($_POST['wpd_dir_id_ajax'])){ $dir = ((isset($_POST['wpd_dir_id_ajax']) && wpdocs_folder_exists($_POST['wpd_dir_id_ajax'])) ? $_POST['wpd_dir_id_ajax'] : 0); if($_POST['wpd_dir_id_ajax'] == 0 && $_POST['wpd_home_id'] != 0){ $dir = sanitize_wpdocs_data($_POST['wpd_home_id']); } $get_permalink = isset($_POST['wpd_get_permalink']) ? $_POST['wpd_get_permalink'] : '' ; }else{ $dir = ((isset($_GET['dir']) && is_numeric($_GET['dir']) && wpdocs_folder_exists($_GET['dir'])) ? sanitize_wpdocs_data($_GET['dir']) : 0); $get_permalink = get_permalink(); } $dir = ($dir?$dir:((isset($atts['dir']) && $atts['dir']!='' && is_numeric($atts['dir']) && wpdocs_folder_exists($atts['dir']))?sanitize_wpdocs_data($atts['dir']):$dir)); $no_breadcrumb = (isset($atts['breadcrumb']) && $atts['breadcrumb']=='false'); $default_view = (isset($atts['view']) ? $atts['view'] : 'list'); $default_orderby = (isset($atts['orderby']) ? $atts['orderby'] : 'title'); $default_order = (isset($atts['order']) ? $atts['order'] : 'ASC'); switch($default_view){ default: case 'list': $default_view = 'list_view'; break; case 'icons': $default_view = 'large_icon_view'; break; case 'details': $default_view = 'detail_view'; break; } if(isset($_POST['wpd_home_id'])){ $home_id = sanitize_wpdocs_data($_POST['wpd_home_id']); }elseif(isset($atts['dir'])){ $home_id = sanitize_wpdocs_data($atts['dir']); }else{ $home_id = 0; } $home_id = preg_replace("/[\'\"\"\"]+/", '', $home_id); $wpdoc_valid = true; $wpdocs_security = get_post_meta($dir, 'wpdocs_security', true); //pree($wpdocs_security); $roles = array(); if($wpdocs_security!=''){ if( is_user_logged_in() ) { $user = wp_get_current_user(); $roles = ( array ) $user->roles; //pree($roles); $wpdoc_valid = (in_array($wpdocs_security, $roles) || current_user_can('administrator')); }else{ $wpdoc_valid = false; } } //pree($wpdoc_valid);exit; $breadcrumb_array = wpdocs_get_breadcrumb_array($dir, !$no_breadcrumb); //pree($breadcrumb_array); //pree($wpdoc_valid); $warning_msg = ''; if(!$wpdoc_valid){ $dir = time()*time(); $warning_msg = '
    '.__('Sorry', 'wp-docs').'! '.__('You are not allowed to access this content.', 'wp-docs').'
    '; } //pree($dir.' ~ '.$no_breadcrumb); if(is_array($breadcrumb_array) && !empty($breadcrumb_array)){ $array_search = array_search($home_id , $breadcrumb_array); if($array_search === 0){ unset($breadcrumb_array); }else{ $breadcrumb_array[$array_search] = 0; } if(!empty($breadcrumb_array)){ foreach ($breadcrumb_array as $index => $bread){ if($index > $array_search){ unset($breadcrumb_array[$index]); } } } } $wpdocs_list = wpdocs_list($dir, $default_orderby, $default_order); $files_list = wpdocs_added_items($dir); //pree($files_list); $wpdocs_list_merged_arr = array(); $deep_files_list_arr = array(); //pree($wpdocs_list); //pree($wpdocs_list_merged_arr); //pree($deep_files_list_arr); //pree($files_list); $is_file = wpdocs_dir_options_by_name('file_upload', false, $dir); $is_del_from_front = (is_user_logged_in() && wpdocs_dir_options_by_name('del_from_front', false, $dir)); $is_current_user_files = wpdocs_dir_options_by_name('current_user_files', false, $dir); if($is_file && $is_current_user_files){ $files_list = wpdocs_added_items_by_user($dir); //pree($files_list); } if(!$is_current_user_files && $ajax_based_deep_search && function_exists('get_deep_files_list_arr')){ //pree($wpdocs_list); $deep_list_arr = get_deep_files_list_arr($wpdocs_list); $wpdocs_list_merged_arr = $deep_list_arr['wpdocs_list_merged_arr']; $deep_files_list_arr = $deep_list_arr['deep_files_list_arr']; } ?>
    -1, 'offset' => 0, 'category' => '', 'category_name' => '', 'orderby' => 'title', 'order' => 'ASC', 'include' => array($dir), 'exclude' => '', 'meta_key' => '', 'meta_value' => '', 'post_type' => 'wpdocs_folder', 'post_mime_type' => '', 'post_parent' => '',//$post_parent, 'author' => $current_user_id, 'author_name' => '', 'post_status' => 'hidden', 'suppress_filters' => true ); $posts_array = get_posts($args); pree($posts_array); */ ?> '.$warning_msg.'
    ':''; ?>
    $list_obj->ID, 'content'=>$list_obj->post_content, 'title'=>$list_obj->post_title, 'type'=>$list_obj->post_type, 'guid'=>$list_obj->guid); $is_shortcut = ($list['type']==$wpdocs_post_types['shortcut']); ?>
    '; $file_url_thumb = str_replace('.pdf', '.png', strtolower($file_data['file_url'])); $file_url_thumb_path = str_replace($wp_uploads_url, $wp_uploads_path, $file_url_thumb); if(!file_exists($file_url_thumb_path)){ $im = new imagick($file_data['file_url']); $im->setIteratorIndex(0); $im->setImageFormat('png'); $im->writeImage($file_url_thumb_path); } $icon_url = $file_url_thumb; } } break; default: //$class .= 'fa-file'; break; } $file_list_row = '
    '.$title.'
    '; $list = wpdocs_list_population($list, $file_data, $file_list_row, $default_orderby); } } //pree(array_keys($list)); //ksort($list); $list = wpdocs_sorting($list, $default_order); //pree(array_keys($list)); echo implode('', $list); } else { $no_file_found = true; } if (!empty($deep_files_list_arr)) { $list = array(); foreach ($deep_files_list_arr as $file) { $file_data = wpd_get_item_type_icon_url($file); extract($file_data); if(trim($file_url)){ switch ($ext) { case 'png': case 'jpg': case 'jpeg': case 'gif': case 'bmp': //$class .= 'fa-image'; break; case 'pdf': if($pdf_thumb_selected=='first_page_as_thumbnail'){ $pdf_file = str_replace($wp_uploads_url, $wp_uploads_path, $file_data['file_url']); if(file_exists($pdf_file) && class_exists('imagick')){ //pree($file_data); //$icon_str = ''; $file_url_thumb = str_replace('.pdf', '.png', strtolower($file_data['file_url'])); $file_url_thumb_path = str_replace($wp_uploads_url, $wp_uploads_path, $file_url_thumb); if(!file_exists($file_url_thumb_path)){ $im = new imagick($file_data['file_url']); $im->setIteratorIndex(0); $im->setImageFormat('png'); $im->writeImage($file_url_thumb_path); } $icon_url = $file_url_thumb; } } break; default: //$class .= 'fa-file'; break; } $file_list_row = '
    '.$title.'
    '; $list = wpdocs_list_population($list, $file_data, $file_list_row, $default_orderby); } } //pree(array_keys($list)); //ksort($list); $list = wpdocs_sorting($list, $default_order); //pree(array_keys($list)); echo implode('', $list); } if ($no_dir_found && $no_file_found) { ?>
    $list_obj->ID, 'content'=>$list_obj->post_content, 'title'=>$list_obj->post_title, 'type'=>$list_obj->post_type, 'guid'=>$list_obj->guid); $is_shortcut = ($list['type']==$wpdocs_post_types['shortcut']); ?>
    '.$title.'
    '; $list = wpdocs_list_population($list, $file_data, $file_list_row, $default_orderby); } } //pree($list); //ksort($list); $list = wpdocs_sorting($list, $default_order); echo implode('', $list); } else { $no_file_found = true; } if (!empty($deep_files_list_arr)) { $list = array(); foreach ($deep_files_list_arr as $file) { $file_data = wpd_get_item_type_icon_url($file); extract($file_data); if(trim($file_url)){ $file_list_row = '
    '.$title.'
    '; $list = wpdocs_list_population($list, $file_data, $file_list_row, $default_orderby); } } //pree($list); //ksort($list); $list = wpdocs_sorting($list, $default_order); echo implode('', $list); } if ($no_dir_found && $no_file_found) { ?>
    ' : ''; ?>
    $list_obj->ID, 'content'=>$list_obj->post_content, 'title'=>$list_obj->post_title, 'type'=>$list_obj->post_type, 'guid'=>$list_obj->guid); $is_shortcut = ($list['type']==$wpdocs_post_types['shortcut']); ?> '; } $created_time_u = get_post_time('U', false, $file); $modified_time_u = get_post_modified_time('U', false, $file); $file_path = str_replace($wp_uploads_url, $wp_uploads_path, $file_url); $file_size = round(@filesize($file_path) / 1024); if($details_date_created): $files_list_row .= ''; endif; if($details_date): $files_list_row .= ''; endif; if($details_type): $files_list_row .= ''; endif; if($details_size): $files_list_row .= ''; endif; // data-time is used for sorting purpose on front end it will sort by data-time value if it exist if not exist than it will be sorted by td inner text $files_list_row .= ''; $list = wpdocs_list_population($list, $file_data, $files_list_row, $default_orderby); } $list = wpdocs_sorting($list, $default_order); echo implode('', $list); } else { $no_file_found = true; } if (!empty($deep_files_list_arr)) { $list = array(); //pree($wp_get_upload_dir); foreach ($deep_files_list_arr as $file) { //pree($file);exit; $file_data = wpd_get_item_type_icon_url($file); extract($file_data); //pree($ts); if(trim($icon_url)){ $files_list_row = ' '; } $created_time_u = get_post_time('U', false, $file); $modified_time_u = get_post_modified_time('U', false, $file); $file_path = str_replace($wp_uploads_url, $wp_uploads_path, $file_url); $file_size = round(@filesize($file_path) / 1024); if($details_date_created): $files_list_row .= ''; endif; if($details_date): $files_list_row .= ''; endif; if($details_type): $files_list_row .= ''; endif; if($details_size): $files_list_row .= ''; endif; // data-time is used for sorting purpose on front end it will sort by data-time value if it exist if not exist than it will be sorted by td inner text $files_list_row .= ''; $list = wpdocs_list_population($list, $file_data, $files_list_row, $default_orderby); } $list = wpdocs_sorting($list, $default_order); echo implode('', $list); } if ($no_dir_found && $no_file_found) { ?>
    '.__('Shortcut', 'wp-docs'); }elseif($wpdocs_post_types['dir']==$directory_post_type){ echo __('Directory', 'wp-docs'); }else{ echo $directory_post_type; } ?>
    '.$title.'
    '.get_the_date(get_option( 'date_format' ), $file) . ' ' . get_the_time(get_option( 'time_format' ), $file).''.get_the_modified_date(get_option( 'date_format' ), $file) . ' ' . get_the_modified_time(get_option( 'time_format' ), $file).''.get_post_mime_type($file).''.$file_size. ' KB'.'
    post_parent; } return ($parent_id); } function wpdocs_added_items_by_user($dir_id) { $current_user_items = array(); if(!is_user_logged_in()){return array();} $current_user = get_current_user_id(); if (is_numeric($dir_id) && $dir_id > 0 && wpdocs_folder_exists($dir_id)) { $wpdocs_items = get_post_meta($dir_id, 'wpdocs_items_by_user', true); //pree($wpdocs_items); $wpdocs_items = is_array(maybe_unserialize($wpdocs_items)) ? maybe_unserialize($wpdocs_items) : array(); $current_user_items = array_key_exists($current_user, $wpdocs_items) ? $wpdocs_items[$current_user] : array(); //pree($wpdocs_items); //asort($wpdocs_items); } return $current_user_items; } function wpdocs_added_items($dir_id) { $wpdocs_items = array(); if (is_numeric($dir_id) && $dir_id > 0 && wpdocs_folder_exists($dir_id)) { $wpdocs_items = get_post_meta($dir_id, 'wpdocs_items', true); //pree($wpdocs_items); $wpdocs_items = is_array(maybe_unserialize($wpdocs_items)) ? maybe_unserialize($wpdocs_items) : array(); //pree($wpdocs_items); //asort($wpdocs_items); } return $wpdocs_items; } function wpdocs_folder_exists($ids='', $user_id=0) { //pree($id); //pree($ids); $posts_array = array(); $ids = explode(',', $ids); $ids = array_map('trim', $ids); $ids = array_filter($ids, 'is_numeric'); //pree($ids);exit; if (!empty($ids)) { global $wpdocs_post_types, $wpdocs_post_status; $ids = sanitize_wpdocs_data($ids); $args = array( 'posts_per_page' => -1, 'offset' => 0, 'category' => '', 'category_name' => '', 'orderby' => 'title', 'order' => 'ASC', 'include' => $ids, 'exclude' => '', 'meta_key' => '', 'meta_value' => '', 'post_type' => $wpdocs_post_types, 'post_mime_type' => '', 'post_parent' => '',//$post_parent, 'author' => ($user_id?$user_id:''), 'author_name' => '', 'post_status' => $wpdocs_post_status, 'suppress_filters' => true ); //pree($args); $posts_array = get_posts($args); } return (count($posts_array) > 0); } add_action('wp_ajax_wpdocs_update_folder', 'wpdocs_update_folder'); function wpdocs_update_folder() { $nonce = sanitize_wpdocs_data(wp_unslash($_POST['nonce'])); if (!empty($_POST) && isset($_POST['nonce']) && ! wp_verify_nonce( $nonce, 'wpdocs_update_options_nonce' ) ) die (__("Sorry, your nonce did not verify.", 'wp-docs')); $dir_id = sanitize_wpdocs_data($_POST['dir_id']); $dir_id_compare = base64_decode(sanitize_wpdocs_data($_POST['resource_id'])); //pree($dir_id_compare.'=='.$dir_id.' - '.wpdocs_folder_exists($dir_id));exit; $ret = array('msg'=>''); if ($dir_id>0 && $dir_id_compare==$dir_id && wpdocs_folder_exists($dir_id)) { global $wpdb, $wpdocs_post_types, $wpdocs_post_status; $my_post = array( 'post_title' => htmlspecialchars_decode(sanitize_wpdocs_data($_POST['new_name'])), 'ID' => $dir_id, ); //pree($my_post);exit; //wp_update_post($my_post); $rename_query = $wpdb->prepare("UPDATE $wpdb->posts SET post_title=%s WHERE ID=%d AND post_type IN ('".implode("','", $wpdocs_post_types)."') AND post_status=%s", $my_post['post_title'], $dir_id, $wpdocs_post_status ); //pree($rename_query);exit; $updated = $wpdb->query($rename_query); if($updated){ $ret['msg'] = __("Successfully updated.", 'wp-docs'); }else{ $ret['msg'] = __("No changes are made, input seems the same as before.", 'wp-docs'); } } echo wp_json_encode($ret); exit; } add_action('wp_ajax_wpdocs_delete_folder', 'wpdocs_delete_folder'); function wpdocs_delete_folder() { $nonce = sanitize_wpdocs_data(wp_unslash($_POST['nonce'])); if (!empty($_POST) && isset($_POST['nonce']) && ! wp_verify_nonce( $nonce, 'wpdocs_update_options_nonce' ) ) die (__("Sorry, your nonce did not verify.", 'wp-docs')); $dir_id = sanitize_wpdocs_data($_POST['dir_id']); $resource_id = base64_decode(sanitize_wpdocs_data($_POST['resource_id'])); if($dir_id==$resource_id){ wpdocs_recursive_delete_folder($dir_id); } exit; } add_action('wp_ajax_wpdocs_delete_files', 'wpdocs_delete_files'); function wpdocs_recursive_delete_folder($dir_id){ if ($dir_id > 0 && wpdocs_folder_exists($dir_id)) { $wpdocs_list = wpdocs_list($dir_id); if(!empty($wpdocs_list)){ foreach($wpdocs_list as $wpdocs_item){ //pree($wpdocs_item); if(is_numeric($wpdocs_item['id'])){ wpdocs_recursive_delete_folder($wpdocs_item['id']); } } } if(function_exists('wp_docs_relocate_memphis_meta')){ wp_docs_relocate_memphis_meta($dir_id); } wp_delete_post($dir_id, true); } } if(!function_exists('wpdocs_update_files_meta')){ function wpdocs_update_files_meta($dir_id, $files=array()){ if ($dir_id > 0 && wpdocs_folder_exists($dir_id) && count($files) > 0) { //Items for single user $current_user = get_current_user_id(); $wpdocs_items_by_user = get_post_meta($dir_id, 'wpdocs_items_by_user', true); $wpdocs_items_by_user = $wpdocs_items_by_user && is_array($wpdocs_items_by_user) ? $wpdocs_items_by_user: array(); $current_user_items = array_key_exists($current_user, $wpdocs_items_by_user) ? $wpdocs_items_by_user[$current_user] : array(); $current_user_items = array_merge($current_user_items, $files); $current_user_items = array_unique($current_user_items); $wpdocs_items_by_user[$current_user] = $current_user_items; //overall items $wpdocs_items = wpdocs_added_items($dir_id); $wpdocs_items = array_merge($wpdocs_items, $files); $wpdocs_items = array_unique($wpdocs_items); //pree($wpdocs_items); update_post_meta($dir_id, 'wpdocs_items_by_user', $wpdocs_items_by_user); return update_post_meta($dir_id, 'wpdocs_items', $wpdocs_items); } } } function wpdocs_delete_files() { $dir_id = sanitize_wpdocs_data($_POST['dir_id']); $files = sanitize_wpdocs_data($_POST['files']); $files = is_array($files) ? $files : array($files); //pree($dir_id);pree($files);exit; if ($dir_id > 0 && wpdocs_folder_exists($dir_id) && count($files) > 0) { wpdocs_del_items_by_user($dir_id, $files, get_current_user_id()); $wpdocs_items = wpdocs_added_items($dir_id); //pree($wpdocs_items); $wpdocs_items = array_diff($wpdocs_items, $files); //pree($wpdocs_items); $wpdocs_items = array_unique($wpdocs_items); //pree($wpdocs_items); update_post_meta($dir_id, 'wpdocs_items', $wpdocs_items); } exit; } function wpd_admin_footer(){ ?> false, 'dir_move' => false, ); if (!empty($_POST) && isset($_POST['nonce']) && ! wp_verify_nonce( $nonce, 'wpdocs_update_options_nonce' ) ) die (__("Sorry, your nonce did not verify.", 'wp-docs')); if(isset($_POST['wpdocs_options'])){ $wpdocs_options = isset($_POST['wpdocs_options']) ? sanitize_wpdocs_data($_POST['wpdocs_options']) : array(); $wpdocs_dir_id = isset($_POST['wpdocs_dir_id']) ? sanitize_wpdocs_data($_POST['wpdocs_dir_id']) : 0; $sanitized_option = sanitize_wpdocs_data($wpdocs_options); $sanitized_option['allowed_role'] = $sanitized_option['allowed_role'] !== 'empty' ? $sanitized_option['allowed_role'] : array(); if($wpdocs_dir_id == 0){ $update = update_option('wpdocs_options', $sanitized_option); }else{ $update = update_post_meta($wpdocs_dir_id, '_wpdocs_dir_options', $sanitized_option); $child_dir_list = wpdoc_get_dir_children($wpdocs_dir_id); if(!empty($child_dir_list)){ foreach ($child_dir_list as $child_dir) { $update = update_post_meta($child_dir, '_wpdocs_dir_options', $sanitized_option); # code... } } } } if(isset($_POST['wpdocs_move_selected_dir'])){ $wpdocs_move_selected_dir = sanitize_wpdocs_data($_POST['wpdocs_move_selected_dir']); $action_type = $wpdocs_move_selected_dir['action_type']; $is_file = array_key_exists('is_file', $wpdocs_move_selected_dir) ? $wpdocs_move_selected_dir['is_file']: false; $is_file = $is_file == 'false' ? false: true; if(!$is_file && array_key_exists('dir_selected', $wpdocs_move_selected_dir) && array_key_exists('dir_id', $wpdocs_move_selected_dir)){ switch($action_type){ default: case 'move': $update = wp_update_post( array( 'ID' => $wpdocs_move_selected_dir['dir_selected'], 'post_parent' => $wpdocs_move_selected_dir['dir_id'] ) ); if($update == $wpdocs_move_selected_dir['dir_selected']){ $return['dir_move'] = true; } break; case 'copy': $existing_dir = get_post($wpdocs_move_selected_dir['dir_selected']); $existing_dir = (is_object($existing_dir)?(array)$existing_dir:array()); if(!empty($existing_dir) && array_key_exists('ID', $existing_dir) && function_exists('wpdocs_recursive_copy_folder')){ wpdocs_recursive_copy_folder($wpdocs_move_selected_dir['dir_id'], $existing_dir); $return['dir_move'] = true; } break; } } //exit; if($is_file){ $file_id = $wpdocs_move_selected_dir['files']; $current_dir = $wpdocs_move_selected_dir['file_dir']; $new_dir = $wpdocs_move_selected_dir['dir_id']; $files = wpdocs_added_items($current_dir); $file_id = is_array($file_id) ? $file_id : array($file_id); $files = array_diff($files, $file_id); switch($action_type){ default: case 'move': update_post_meta($current_dir, 'wpdocs_items', $files); break; case 'copy': break; } $update = wpdocs_update_files_meta($new_dir, $file_id); if($update === true){ $return['dir_move'] = true; } } } echo wp_json_encode($return); } wp_die(); } } if(!function_exists('wpdocs_dir_list_complete')){ function wpdocs_dir_list_complete($dir = 0){ $wpdocs_list = wpdocs_list($dir); if(!empty($wpdocs_list)){ $wp_dir_child = array(); foreach ($wpdocs_list as $index => $wp_dir){ if(!array_key_exists('id', $wp_dir)) continue; $wpdocs_list_child = wpdocs_list($wp_dir['id']); if(!empty($wpdocs_list_child)){ $wp_dir['child_dir'] = wpdocs_dir_list_complete($wp_dir['id']); } $wp_dir_child[] = $wp_dir; } return $wp_dir_child; }else{ return array(); } } } if(!function_exists('wpdocs_dir_list_option')){ function wpdocs_dir_list_option($dir = 0, $str = ' __ ', $level = 0){ $wpdocs_list = wpdocs_list($dir); $option = ''; if(!empty($wpdocs_list)){ foreach ($wpdocs_list as $index => $wp_dir){ if(!array_key_exists('id', $wp_dir)) continue; $wpdocs_list_child = wpdocs_list($wp_dir['id']); $option .= ''; if(!empty($wpdocs_list_child)){ $option .= wpdocs_dir_list_option($wp_dir['id'], $str, $level+1); } } } return $option; } } add_action('wpdocs_before_docs_list', 'wpdocs_add_breadcrumb'); if(!function_exists('wpdocs_add_breadcrumb')){ function wpdocs_add_breadcrumb($dir_id, $breadcrumb=true){ $breadcrumb_array = wpdocs_get_breadcrumb_array($dir_id, $breadcrumb); $get_permalink = admin_url('options-general.php?page=wpdocs'); if (!empty($breadcrumb_array)) { ?> post_title; } $current_dir_temp = $parent_path.'/'.$current_dir_name; if(!is_dir($current_dir_temp)) mkdir($current_dir_temp); return $current_dir_temp; } } if(!function_exists('wpdocs_copy_files')){ function wpdocs_copy_files($wpdocs_items, $current_dir_temp){ //pre($wpdocs_items); $upload_dir = wp_upload_dir(); if(!empty($wpdocs_items)){ foreach ($wpdocs_items as $item_id){ //pre($item_id); //pre(get_post_meta($item_id)); $attached_file = get_post_meta($item_id, '_wp_attached_file', true); //pre($attached_file); $absolute_path = false; if(!$attached_file){ $attached_post = get_post($item_id); $attached_file = $attached_post->guid; $absolute_path = true; } $file_name = basename($attached_file); $file_copy_path = $current_dir_temp.'/'.$file_name; if($absolute_path){ $file_path = str_replace($upload_dir['baseurl'], $upload_dir['basedir'], $attached_file); }else{ $file_path = $upload_dir['basedir'].'/'.$attached_file; } //pre($file_path); if(!is_dir($file_path) && file_exists($file_path)){ copy($file_path, $file_copy_path); } } } //exit; } } if(!function_exists('wpdocs_create')){ function wpdocs_create($dir_id, $wpdocs_dir){ //pree($dir_id); $wpdocs_list = wpdocs_list($dir_id); //pre($wpdocs_list); $wpdocs_items = wpdocs_added_items($dir_id); //pre($wpdocs_items); $current_dir_temp = wpdocs_create_dir($dir_id, $wpdocs_dir); //pree($current_dir_temp); //exit; wpdocs_copy_files($wpdocs_items, $current_dir_temp); if(!empty($wpdocs_list)){ foreach ($wpdocs_list as $single_dir){ wpdocs_create($single_dir['id'], $current_dir_temp); } } } } if(!function_exists('wpdocs_generate_zip')){ function wpdocs_generate_zip($source, $destination) { // Initialize archive object $zip = new ZipArchive(); $zip->open($destination, ZipArchive::CREATE | ZipArchive::OVERWRITE); // Create recursive directory iterator /** @var SplFileInfo[] $files */ $files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST ); //pre($files); if (!empty($files)) { foreach ($files as $name => $file) { $file_path = $file->getRealPath(); $relative_path = substr($file_path, strlen($source) + 1); /* if (!$file->isDir()) { // Get real and relative path for current file // Add current file to archive $zip->addFile($file_path, $relative_path); } */ if (is_dir($file_path) === true) { $zip->addEmptyDir(str_replace($source . '/', '', $relative_path . '/')); } elseif (is_file($file) === true) { $zip->addFromString(str_replace($source . '/', '', $relative_path), file_get_contents($file_path)); } } } // Zip archive will be created only after closing object $zip->close(); $ret = str_replace('\\', '/', $destination); $url = str_replace(get_home_path(), get_home_url().'/', $ret); $resp = array( 'url' => $url, 'path' => $destination, ); //pree($resp);exit; return $resp; } } if(!function_exists('wpdocs_download_zip')){ function wpdocs_download_zip($dir_id){ $upload_dir = wp_upload_dir(); $upload_dir = $upload_dir['basedir']; $wpdocs_dir = $upload_dir.'/wpdocs'; $current_dir_temp = wpdocs_create_dir($dir_id, $wpdocs_dir); wpdocs_create($dir_id, $wpdocs_dir); $dest = $wpdocs_dir.'/'.basename($current_dir_temp).'.zip'; //pre($current_dir_temp);pre($dest); //exit; $ret = wpdocs_generate_zip($current_dir_temp, $dest); //pree($ret); if(isset($_GET['debug'])){ exit; } return $ret; } } add_action('init', 'wpdocs_dir_actions'); if(!function_exists('wpdocs_dir_actions')){ function wpdocs_dir_actions(){ if(is_admin() && get_option('wpdocs_memphis_uninstall')){ if(wp_docs_memphis_folder_preserve('mdocs_2', 'mdocs')){ update_option('wpdocs_memphis_uninstall', false); } } if(isset($_GET['wpdocs_dir']) && is_numeric($_GET['wpdocs_dir']) && isset($_GET['wpdocs_wpnonce']) && wp_verify_nonce( sanitize_wpdocs_data(wp_unslash($_GET['wpdocs_wpnonce'])), "wpdocs-{$_GET['wpdocs_dir']}" )){ //pree($_GET);exit; if(isset($_GET['download'])){ $wpdocs_clear_clutter = get_option('wpdocs_clear_clutter', array()); $wpdocs_clear_clutter = (is_array($wpdocs_clear_clutter)?$wpdocs_clear_clutter:array()); if(!empty($wpdocs_clear_clutter)){ foreach($wpdocs_clear_clutter as $i=>$wpdocs_clear_clutter_iter){ if(is_array($wpdocs_clear_clutter_iter)){ list($rm_dir, $zip_path) = $wpdocs_clear_clutter_iter; unlink($zip_path); if (is_dir($rm_dir)) { $dir = new RecursiveDirectoryIterator($rm_dir, RecursiveDirectoryIterator::SKIP_DOTS); foreach (new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::CHILD_FIRST ) as $filename => $file) { if (is_file($filename)) unlink($filename); else rmdir($filename); } rmdir($rm_dir); // Now remove myfolder } } unset($wpdocs_clear_clutter[$i]); } update_option('wpdocs_clear_clutter', $wpdocs_clear_clutter); } $wpdocs_dir = sanitize_wpdocs_data($_GET['wpdocs_dir']); //pree($wpdocs_dir);exit; $zip = wpdocs_download_zip($wpdocs_dir); $rm_dir = str_replace('.zip', '',$zip['path'] ); //pree($rm_dir);exit; //pree($wpdocs_dir);pree($rm_dir);pree($zip);exit; if(file_exists($zip['path'])){ $wpdocs_clear_clutter = get_option('wpdocs_clear_clutter', array()); $wpdocs_clear_clutter = (is_array($wpdocs_clear_clutter)?$wpdocs_clear_clutter:array()); $wpdocs_clear_clutter[] = array($rm_dir, $zip['path']); update_option('wpdocs_clear_clutter', $wpdocs_clear_clutter); //echo $rm_dir;exit; //echo $zip['path'];exit; header("Content-type: application/zip"); header("Content-Disposition: attachment; filename=".basename($zip['path']).""); header("Pragma: no-cache"); header("Expires: 0"); header("Content-length: " . @filesize($zip['path'])); //readfile($zip['path']); wp_redirect($zip['url']);exit; }else{ wp_redirect(admin_url('options-general.php?page=wpdocs'));exit; } } if(isset($_GET['clear'])){ global $wpdocs_url, $wpdb, $wpdocs_post_types; update_option('wpdocs_options', array()); $wpdb->query($wpdb->prepare("DELETE FROM $wpdb->posts WHERE post_type IN ('".implode("','", $wpdocs_post_types)."')")); wp_redirect(admin_url('options-general.php?page=wpdocs'));exit; } } } } function wpdocs_plugin_links($links) { global $wpdocs_premium_link, $wpdocs_pro; $settings_link = ''.__('Settings', 'wp-docs').''; if($wpdocs_pro){ array_unshift($links, $settings_link); }else{ $wpdocs_premium_link = ''.__('Go Premium', 'wp-docs').''; array_unshift($links, $settings_link, $wpdocs_premium_link); } return $links; } if(!function_exists('wpdocs_get_current_user_items')){ function wpdocs_get_current_user_items($dir_id, $current_user_id){ $current_user_files = array(); if ($dir_id > 0 && wpdocs_folder_exists($dir_id)) { $wpdocs_items_by_user = get_post_meta($dir_id, 'wpdocs_items_by_user', true); $wpdocs_items_by_user = is_array($wpdocs_items_by_user)?$wpdocs_items_by_user:array(); $current_user_files = array_key_exists($current_user_id, $wpdocs_items_by_user) ? $wpdocs_items_by_user[$current_user_id] : array(); } return $current_user_files; } } if(!function_exists('wpdocs_is_file_belong_to_user')){ function wpdocs_is_file_belong_to_user($dir_id, $files, $current_user_id){ if ($dir_id > 0 && wpdocs_folder_exists($dir_id) && count($files) > 0) { $current_user_files = wpdocs_get_current_user_items($dir_id, $current_user_id); $current_user_updated_items = array_intersect($current_user_files, $files); return !empty($current_user_updated_items); }else{ return false; } } } if(!function_exists('wpdocs_del_items_by_user')){ function wpdocs_del_items_by_user($dir_id, $files, $current_user_id){ if ($dir_id > 0 && wpdocs_folder_exists($dir_id) && count($files) > 0) { $wpdocs_items_by_user = get_post_meta($dir_id, 'wpdocs_items_by_user', true); $current_user_files = wpdocs_get_current_user_items($dir_id, $current_user_id); $current_user_updated_items = array_diff($current_user_files, $files); $current_user_updated_items = array_unique($current_user_updated_items); $wpdocs_items_by_user[$current_user_id] = $current_user_updated_items; $wpdocs_items_by_user = array_filter($wpdocs_items_by_user); return update_post_meta($dir_id, 'wpdocs_items_by_user', $wpdocs_items_by_user); }else{ return false; } } } add_action('wp_ajax_wp_docs_import_memphis_docs', 'wp_docs_import_memphis_docs'); if(!function_exists('wp_docs_import_memphis_docs')){ function wp_docs_import_memphis_docs(){ $result_array = array( 'status' => false, ); if(!empty($_POST) && isset($_POST['wp_docs_nonce'])){ if (!wp_verify_nonce( sanitize_wpdocs_data(wp_unslash($_POST['wp_docs_nonce'])), 'wpdocs_update_options_nonce' ) ){ wp_die(__("Sorry, your nonce did not verify.", 'wp-docs')); }else{ $dir_progress = wp_docs_import_memphis_directories(); $file_progress = wp_docs_memphis_import_files(); $result_array['status'] = ($dir_progress || $file_progress); if($result_array['status']){ wp_docs_whiteflag_memphis_htaccess(); } if(!$dir_progress && !$file_progress){ $result_array['remarks'] = __('No directories and files found.', 'wp-docs'); } } } wp_send_json($result_array); } } add_action('wp_ajax_wp_docs_import_memphis_rollback', 'wp_docs_import_memphis_rollback'); if(!function_exists('wp_docs_import_memphis_rollback')){ function wp_docs_import_memphis_rollback(){ $result_array = array( 'status' => false, ); if(!empty($_POST) && isset($_POST['wp_docs_nonce'])){ if (!wp_verify_nonce( sanitize_wpdocs_data(wp_unslash($_POST['wp_docs_nonce'])), 'wpdocs_update_options_nonce' ) ){ wp_die(__("Sorry, your nonce did not verify.", 'wp-docs')); }else{ wp_docs_rollback_memphis_import(); $result_array['status'] = true; } } wp_send_json($result_array); } } if(!function_exists('wp_docs_get_memphis_name')){ function wp_docs_get_memphis_name(){ global $wpdb; $name = esc_sql('Memphis Documents'); $query = $wpdb->prepare("SELECT max(ID) FROM $wpdb->posts WHERE post_title LIKE '%$name%'"); $result = $wpdb->get_var($query); if($result){ $post = get_post($result); $title_array = explode(' ', $post->post_title); $last_elment = end($title_array); if(is_numeric($last_elment)){ $last_elment++; }else{ $last_elment = 1; } $name .= ' '.$last_elment; } return $name; } } if(!function_exists('wp_docs_get_memphis_dir_id')){ function wp_docs_get_memphis_dir_id(){ global $wpdb; $name = esc_sql('Memphis Documents'); $dir_id = 0; $query = $wpdb->prepare("SELECT max(ID) FROM $wpdb->posts WHERE post_title LIKE '%$name%'"); $result = $wpdb->get_var($query); if($result){ $dir_id = $result; } return $dir_id; } } if(!function_exists('wp_docs_import_memphis_directories')){ function wp_docs_import_memphis_directories(){ global $wp_docs_is_memphis; $progress_status = false; if(!$wp_docs_is_memphis){ }else{ $memphis_folders_array = get_option('mdocs-cats', array()); if(!empty($memphis_folders_array)){ extract(wp_docs_count_memphis_folder($memphis_folders_array)); if($import_folder_count != $total_folder_count){ $parent_id = wp_docs_get_memphis_dir_id(); if($parent_id == 0){ $parent_id = wpdocs_create_folder_post(0, 'Memphis Documents'); } wp_docs_memphis_create_directory($memphis_folders_array, $parent_id); $progress_status = true; } } } return $progress_status; } } if(!function_exists('wp_docs_memphis_create_directory')){ function wp_docs_memphis_create_directory($directory_list, $base_parent_id){ global $wp_docs_is_memphis, $wpdocs_imported_folder, $memphis_folders_id; if(!$wp_docs_is_memphis){ }else{ if(!empty($directory_list)){ foreach ($directory_list as $key => $single_directory) { # code... $slug = $single_directory['slug']; $name = $single_directory['name']; $child_dir_list = $single_directory['children']; $slug_key = $memphis_folders_id.'_'.$slug; if(in_array($slug_key, $wpdocs_imported_folder)) continue; $current_parent_id = wpdocs_create_folder_post($base_parent_id, $name); if($current_parent_id){ update_post_meta($current_parent_id, '_wpdocs_memphis_slug', $slug_key); $wpdocs_imported_folder[] = $slug_key; if(!empty($child_dir_list)){ wp_docs_memphis_create_directory($child_dir_list, $current_parent_id); } } } update_option('wpdocs_imported_folder', $wpdocs_imported_folder); } } } } if(!function_exists('wp_docs_count_memphis_folder')){ function wp_docs_count_memphis_folder($memphis_folders, $total_folder_count = 0, $import_folder_count = 0){ global $memphis_folders_id, $wpdocs_imported_folder; if(!empty($memphis_folders)){ foreach ($memphis_folders as $key => $folder) { # code... $children = $folder['children']; $slug = $folder['slug']; $slug_key = $memphis_folders_id.'_'.$slug; $total_folder_count++; if(in_array($slug_key, $wpdocs_imported_folder)){ $import_folder_count++; } if(!empty($children)){ extract(wp_docs_count_memphis_folder($children, $total_folder_count, $import_folder_count)); } } } return array('total_folder_count' => $total_folder_count, 'import_folder_count' => $import_folder_count); } } if(!function_exists('wp_docs_count_memphis_files')){ function wp_docs_count_memphis_files(){ global $memphis_files_array, $wpdocs_imported_files, $wpdocs_memphis_list; $total_file_count = (count($memphis_files_array) + count($wpdocs_memphis_list)); return array('total_file_count' => $total_file_count, 'import_file_count' => count($wpdocs_memphis_list)); } } if(!function_exists('wp_docs_memphis_statistics')){ function wp_docs_memphis_statistics(){ global $memphis_folders_array; //pree($memphis_folders_array); extract(wp_docs_count_memphis_folder($memphis_folders_array)); extract(wp_docs_count_memphis_files()); return array( 'total_folder' => $total_folder_count, 'import_folder' => $import_folder_count, 'total_files' => $total_file_count, 'import_files' => $import_file_count, ); } } if(!function_exists('wp_docs_relocate_memphis_meta')){ function wp_docs_relocate_memphis_meta($dir_id){ global $wpdocs_imported_files, $wpdocs_imported_folder; $wpdocs_items = get_post_meta($dir_id, 'wpdocs_items', true); $wpdocs_items = (is_array($wpdocs_items) ? $wpdocs_items : array()); $dir_slug = get_post_meta($dir_id, '_wpdocs_memphis_slug', true); $wpdocs_imported_files = (is_array($wpdocs_imported_files)?$wpdocs_imported_files:array()); if(!empty($wpdocs_items)){ $wpdocs_imported_files = array_diff($wpdocs_imported_files, $wpdocs_items); } if($dir_slug){ $wpdocs_imported_folder = array_diff($wpdocs_imported_folder, array($dir_slug)); } update_option('wpdocs_imported_folder', $wpdocs_imported_folder); update_option('wpdocs_imported_files', $wpdocs_imported_files); }; } if(!function_exists('wp_docs_memphis_import_files')){ function wp_docs_memphis_import_files(){ global $memphis_folders_id, $memphis_files_array, $wpdocs_imported_files, $wpdocs_memphis_list, $wpdocs_post_types; $before_count = count($wpdocs_imported_files); if(!empty($memphis_files_array)){ foreach($memphis_files_array as $file_index => $file_data){ $attachment_id = $file_data['id']; $attachment_folder = $file_data['cat']; $slug_key = $memphis_folders_id.'_'.$attachment_folder; $files = array($attachment_id); $upload_dir = wp_upload_dir(); $upload_base_url = $upload_dir['baseurl']; if(in_array($attachment_id, $wpdocs_imported_files)){continue;} $dir_arg = array( 'post_type' => $wpdocs_post_types, 'numberposts' => '-1', 'post_status' => 'any', 'fields' => 'ids', 'meta_query' => array( array( 'key' => '_wpdocs_memphis_slug', 'value' => $slug_key, 'compare' => '=' ) ) ); $dir_list = get_posts($dir_arg); if(!empty($dir_list)){ foreach($dir_list as $dir_id){ update_post_meta($attachment_id, '_wpdocs_memphis_media_file', true); $wpdocs_imported_files[] = $attachment_id; wpdocs_update_files_meta($dir_id, $files); } unset($memphis_files_array[$file_index]); $wpdocs_memphis_list[] = $file_data; } } update_option('mdocs-list', $memphis_files_array); update_option('wpdocs_memphis_list', $wpdocs_memphis_list); update_option('wpdocs_imported_files', $wpdocs_imported_files); } $after_count = count($wpdocs_imported_files); return ($before_count != $after_count); } } add_filter('pre_delete_attachment', 'wpdocs_delete_attachment_callback', 10, 3); if(!function_exists('wpdocs_delete_attachment_callback')){ function wpdocs_delete_attachment_callback($check, $post, $force_delete){ $wpdoc_memphis_media_file = get_post_meta($post->ID, '_wpdocs_memphis_media_file', true); $is_memphis_media = strpos($post->post_content, 'mdocs_media_attachment'); if($wpdoc_memphis_media_file && $is_memphis_media){ $post->post_content = ''; wp_update_post($post); return $post; }else{ return $check; } } } add_action('pre_uninstall_plugin', 'wp_docs_save_attachments_to_del'); if(!function_exists('wp_docs_save_attachments_to_del')){ function wp_docs_save_attachments_to_del($plugin){ global $wpdocs_imported_folder, $wpdocs_imported_files, $wpdocs_memphis_list; $wpdocs_memphis_list = get_option('wpdocs_memphis_list', array()); if($plugin == 'memphis-documents-library/memphis-documents.php'){ if(!empty($wpdocs_memphis_list)){ if(wp_docs_memphis_folder_preserve('mdocs', 'mdocs_2')){ update_option('wpdocs_memphis_uninstall', true); } $wpdocs_imported_folder = array(); $wpdocs_imported_files = array(); $wpdocs_memphis_list = array(); update_option('wpdocs_imported_folder', $wpdocs_imported_folder); update_option('wpdocs_imported_files', $wpdocs_imported_files); update_option('wpdocs_memphis_list', $wpdocs_memphis_list); } } } } if(!function_exists('wp_docs_memphis_folder_preserve')){ function wp_docs_memphis_folder_preserve($from, $to){ $upload_dir = wp_upload_dir(); $upload_basedir = $upload_dir['basedir']; $memphis_dir = $upload_basedir.'/'.$from; $bak_file = $memphis_dir.'/mdocs-files.bak'; if(file_exists($bak_file)){ try { unlink($bak_file); } catch (\Exception $ex) { //throw $th; } } $status = false; if(file_exists($memphis_dir)){ $status = rename($memphis_dir, $upload_basedir.'/'.$to); } return $status; } } if(!function_exists('wp_docs_whiteflag_memphis_htaccess')){ function wp_docs_whiteflag_memphis_htaccess(){ $upload_dir = wp_upload_dir(); $basedir = $upload_dir['basedir']; $memphis_dir = $basedir.'/mdocs/'; if(is_dir($memphis_dir)){ $memphis_dir_ht = $memphis_dir.'.htaccess'; $memphis_dir_index = $memphis_dir.'index.html'; if(file_exists($memphis_dir_ht)){ if(!file_exists($memphis_dir_index)){ file_put_contents($memphis_dir_index, ''); } /*file_put_contents($memphis_dir_ht, 'Allow from all Options +Indexes ');*/ unlink($memphis_dir_ht); } } } } if(!function_exists('wp_docs_rollback_memphis_import')){ function wp_docs_rollback_memphis_import(){ global $memphis_files_array, $wpdocs_imported_folder, $wpdocs_imported_files, $wpdocs_memphis_list, $wpdocs_post_types; $wp_docs_args = array( 'post_type' => $wpdocs_post_type['dir'], 'post_status' => 'any', 'numberposts' => -1, 'meta_query' => array( array( 'key' => '_wpdocs_memphis_slug', 'compare' => 'EXIST' ) ) ); $all_memphis_folder = get_posts($wp_docs_args); if(!empty($all_memphis_folder)){ foreach($all_memphis_folder as $m_folder){ wpdocs_recursive_delete_folder($m_folder->ID); } } if(!empty($wpdocs_memphis_list)){ foreach($wpdocs_memphis_list as $file_index => $file_data){ delete_post_meta($file_data['id'], '_wpdocs_memphis_media_file'); unset($wpdocs_memphis_list[$file_index]); $memphis_files_array[] = $file_data; } } update_option('mdocs-list', $memphis_files_array); update_option('wpdocs_memphis_list', $wpdocs_memphis_list); update_option('wpdocs_imported_files', array()); } } function wpdocs_specific_directory_settings($dir=0, $is_file=false, $is_current_user_files=false, $is_del_from_front=false, $allowed_role=array(), $allowed_ext='', $default_ext=''){ global $wpdocs_pro; $dir_option_class = ''; if($dir){ $dir_option_class = 'wpdocs_dir_options'; $is_file = wpdocs_dir_options_default('file_upload', false, $dir); $is_current_user_files = wpdocs_dir_options_default('current_user_files', false, $dir); $is_del_from_front = (is_user_logged_in() && wpdocs_dir_options_default('del_from_front', false, $dir)); $allowed_role = wpdocs_dir_options_default('allowed_role', array(), $dir); $allowed_ext = wpdocs_dir_options_default('allowed_ext', '', $dir); $default_ext = ''; $breadcrumb = get_the_title($dir); ?> 0){ $dir_options = get_post_meta($dir, '_wpdocs_dir_options', true); $dir_options = (is_array($dir_options) ? $dir_options : array()); } $key_exist = false; $search_options = array(); if(array_key_exists($option_name, $dir_options)){ $search_options = $dir_options; $key_exist = true; }else if(array_key_exists($option_name, $wpdocs_options)){ $search_options = $wpdocs_options; $key_exist = true; } if($key_exist){ $return_value = $search_options[$option_name]; $return_value = (is_array($default_return) && !is_array($return_value) ? array() : $return_value); $default_return = $return_value; } if($default_return == 'true'){ $default_return = true; }elseif($default_return == 'false'){ $default_return = false; } return $default_return; } } if(!function_exists('wpdocs_dir_options_default')){ function wpdocs_dir_options_default($option_name, $default_return = false, $dir = 0){ global $wpdocs_options; $dir_options = array(); if($dir > 0){ $dir_options = get_post_meta($dir, '_wpdocs_dir_options', true); $dir_options = (is_array($dir_options) ? $dir_options : array()); } $key_exist = false; $search_options = array(); if(array_key_exists($option_name, $dir_options)){ $search_options = $dir_options; $key_exist = true; } if($key_exist){ $return_value = $search_options[$option_name]; $return_value = (is_array($default_return) && !is_array($return_value) ? array() : $return_value); $default_return = $return_value; } if($default_return == 'true'){ $default_return = true; }elseif($default_return == 'false'){ $default_return = false; } return $default_return; } } if(!function_exists('wpdocs_get_dir_restrictions')){ function wpdocs_get_dir_restrictions($dir = 0, $rest_type = 'array'){ $dir_restrictions = array(); if($dir > 0){ $dir_options = get_post_meta($dir, '_wpdocs_dir_options', true); $dir_options = (is_array($dir_options) ? $dir_options : array()); $is_file_upload = array_key_exists('file_upload', $dir_options) && $dir_options['file_upload'] == 'true'; $dir_restrictions = $dir_options; } switch ($rest_type) { case 'array': # code... return $dir_restrictions; break; case 'json': # code... if(!empty($dir_options)){ return wp_json_encode($dir_restrictions); }else{ return ''; } break; case 'base64': # code... if(!empty($dir_options)){ return base64_encode(wp_json_encode($dir_restrictions)); }else{ return ''; } break; } } } add_action('init', function(){ global $wpdocs_current_theme; $wpdocs_current_theme = str_replace(array('-', ' '), '_', strtolower(wp_get_theme())); // return; // wpdoc_get_dir_children(8764); }); if(!function_exists('wpdoc_get_dir_children')){ function wpdoc_get_dir_children($parent_id){ global $wpdocs_post_types; $all_folder_query = new WP_Query(); $all_folder = $all_folder_query->query(array('post_type' => $wpdocs_post_types, 'post_status' => 'any', 'numberposts' => -1)); $all_folders_array = get_page_children( $parent_id, $all_folder ); $all_folders_array = array_map(function($single){return $single->ID;}, $all_folders_array); return $all_folders_array; } } if(!function_exists('wpdoc_humanize')){ function wpdoc_humanize($str){ return ucwords(str_replace(array('-', '_'), ' ', $str)); } }