])*(<\?([^>])*\?>([^>\?])*)*>/", $file, $matches); if (count($matches) > 0) { $pieces = explode($matches[0], $file); if (count($pieces) == 2) { $file = $pieces[0] . $matches[0] . "\n" . $pieces[1]; } } else { if ($actualPerms < $wantedPerms) { @chmod($file_path, $actualPerms); } return false; } } $fp = fopen($file_path, 'w'); if ( ! $fp) { if ($actualPerms < $wantedPerms) { @chmod($file_path, $actualPerms); } return false; } fwrite($fp, $file); fclose($fp); if ($actualPerms < $wantedPerms) { @chmod($file_path, $actualPerms); } return true; } if ($actualPerms < $wantedPerms) { @chmod($file_path, $actualPerms); } return true; } /* This code sets the plugin up for first-time-run */ function awm_set_first_time_options() { add_option('AWM_menu_path', str_ireplace(home_url(), "", plugins_url()) . "/allwebmenus-wordpress-menu-plugin/menu/"); add_option('AWM_Checked', false); add_option('AWM_Check_show', true); add_option('AWM_show_welcome', true); add_option('AWM_Checked_Date', '00'); add_option('AWM_selected_tab', '0'); } /* This code sets the default option values for a given tab */ function awm_set_default_option_values($awm_t) { global $wpdb, $awm_table_name; $wpdb->update($awm_table_name, array('name' => (string)"menu" . $awm_t, 'pages_name' => 'Pages', 'pages_ms' => 'main', 'posts_name' => 'Posts', 'posts_ms' => 'sub', 'categories_ms' => 'sub', 'categories_name' => 'Categories', 'type' => 'Dynamic', 'genre' => 'JS'), array('id' => $_POST['AWM_menu_id_' . $awm_t])); // update_option('AWM_menu_path', '/menu/'); } /* This code converts the options from old single-tab version to multi-tab */ function awm_convert_from_single_to_multi_tab() { global $awm_total_tabs; add_option('AWM_menu_name', 'nowayyouhavethisvalue'); // first create an impossible value if (get_option('AWM_menu_name') == 'nowayyouhavethisvalue') { // if the option now has this value, it did not exist (this means you already have the new version delete_option('AWM_menu_name'); } else { // else you had the old so you need to convert for ($awm_t = 0; $awm_t < $awm_total_tabs; $awm_t++) { update_option('AWM_include_home_' . $awm_t, get_option('AWM_include_home')); update_option('AWM_pages_' . $awm_t, get_option('AWM_pages')); update_option('AWM_pages_ms_' . $awm_t, get_option('AWM_pages_ms')); update_option('AWM_pages_name_' . $awm_t, get_option('AWM_pages_name')); update_option('AWM_posts_' . $awm_t, get_option('AWM_posts')); update_option('AWM_posts_ms_' . $awm_t, get_option('AWM_posts_ms')); update_option('AWM_posts_name_' . $awm_t, get_option('AWM_posts_name')); update_option('AWM_posts_ids_' . $awm_t, get_option('AWM_posts_ids')); update_option('AWM_categories_' . $awm_t, get_option('AWM_categories')); update_option('AWM_categories_ms_' . $awm_t, get_option('AWM_categories_ms')); update_option('AWM_categories_name_' . $awm_t, get_option('AWM_categories_name')); update_option('AWM_categories_subitems_' . $awm_t, get_option('AWM_categories_subitems')); update_option('AWM_categories_subitems_no_' . $awm_t, get_option('AWM_categories_subitems_no')); update_option('AWM_hide_future_' . $awm_t, get_option('AWM_hide_future')); update_option('AWM_hide_protected_' . $awm_t, get_option('AWM_hide_protected')); update_option('AWM_excluded_cats_' . $awm_t, get_option('AWM_excluded_cats')); update_option('AWM_excluded_pages_' . $awm_t, get_option('AWM_excluded_pages')); update_option('AWM_Related_' . $awm_t, get_option('AWM_Related')); } $awm_mn = explode(",", get_option('AWM_menu_name')); for ($awm_i = 0; $awm_i < count($awm_mn) && $awm_i < $awm_total_tabs; $awm_i++) { $awm_n = awm_fix_menu_name(trim($awm_mn[$awm_i])); update_option('AWM_use_custom_menu_' . $awm_t, false); update_option('AWM_use_custom_menu_id_' . $awm_t, ''); update_option('AWM_menu_name_' . $awm_i, $awm_n); update_option('AWM_menu_active_' . $awm_i, true); } delete_option('AWM_include_home'); delete_option('AWM_pages'); delete_option('AWM_pages_ms'); delete_option('AWM_pages_name'); delete_option('AWM_posts'); delete_option('AWM_posts_ms'); delete_option('AWM_posts_name'); delete_option('AWM_posts_ids'); delete_option('AWM_categories'); delete_option('AWM_categories_ms'); delete_option('AWM_categories_name'); delete_option('AWM_categories_subitems'); delete_option('AWM_categories_subitems_no'); delete_option('AWM_archives'); delete_option('AWM_hide_future'); delete_option('AWM_new_window'); delete_option('AWM_show_post_date'); delete_option('AWM_date_format'); delete_option('AWM_hide_protected'); delete_option('AWM_excluded_cats'); delete_option('AWM_excluded_pages'); delete_option('AWM_menu_name'); delete_option('AWM_Related'); delete_option('AWM_Related_name'); } } /* This code converts the plugin to database version */ function awm_convert_to_database() { global $dataArray, $awm_table_name, $wpdb, $awm_total_tabs; if (isset($awm_total_tabs)) { if ($wpdb->get_var("SHOW TABLES LIKE '$awm_table_name'") != $awm_table_name) { $sql = "CREATE TABLE " . $awm_table_name . " ( id mediumint(9) NOT NULL AUTO_INCREMENT, name tinytext NOT NULL, active BOOLEAN NOT NULL DEFAULT '0', custom_menu BOOLEAN NOT NULL DEFAULT '0', custom_menu_id mediumint(9) NOT NULL DEFAULT '0', position tinytext NOT NULL, type tinytext NOT NULL, include_home BOOLEAN NOT NULL DEFAULT '1', pages BOOLEAN NOT NULL DEFAULT '1', pages_ms tinytext NOT NULL DEFAULT '', pages_name tinytext NOT NULL DEFAULT '', excluded_pages tinytext, posts BOOLEAN NOT NULL DEFAULT '0', posts_ms tinytext NOT NULL DEFAULT '', posts_name tinytext NOT NULL DEFAULT '', posts_ids tinytext, categories BOOLEAN NOT NULL DEFAULT '0', categories_ms tinytext NOT NULL DEFAULT '', categories_name tinytext NOT NULL DEFAULT '', categories_subitems BOOLEAN NOT NULL DEFAULT '1', categories_subitems_no tinyint NOT NULL DEFAULT 5, excluded_cats tinytext, hide_future BOOLEAN NOT NULL DEFAULT '1', hide_protected BOOLEAN NOT NULL DEFAULT '1', hide_private BOOLEAN NOT NULL DEFAULT '1', related BOOLEAN NOT NULL DEFAULT '0', related_name tinytext NOT NULL DEFAULT '', UNIQUE KEY id (id) );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); if ($wpdb->get_var("SHOW TABLES LIKE '$awm_table_name'") != $awm_table_name) { return "Could not create table. Please check your privileges"; } if ($awm_total_tabs == 0) { awm_create_new_menu(true); update_option('AWM_selected_tab', 0); } } for ($awm_t = 0; $awm_t < $awm_total_tabs; $awm_t++) { $dataArray[$awm_t]['custom_menu'] = get_option('AWM_use_custom_menu_' . $awm_t); $dataArray[$awm_t]['custom_menu_id'] = get_option('AWM_use_custom_menu_id_' . $awm_t); $dataArray[$awm_t]['active'] = get_option('AWM_menu_active_' . $awm_t); $dataArray[$awm_t]['type'] = get_option('AWM_menu_type_' . $awm_t); $dataArray[$awm_t]['name'] = get_option('AWM_menu_name_' . $awm_t); $dataArray[$awm_t]['include_home'] = get_option('AWM_include_home_' . $awm_t); $dataArray[$awm_t]['pages'] = get_option('AWM_pages_' . $awm_t); $dataArray[$awm_t]['pages_ms'] = get_option('AWM_pages_ms_' . $awm_t); $dataArray[$awm_t]['pages_name'] = get_option('AWM_pages_name_' . $awm_t); $dataArray[$awm_t]['excluded_pages'] = get_option('AWM_excluded_pages_' . $awm_t); $dataArray[$awm_t]['posts'] = get_option('AWM_posts_' . $awm_t); $dataArray[$awm_t]['posts_ms'] = get_option('AWM_posts_ms_' . $awm_t); $dataArray[$awm_t]['posts_name'] = get_option('AWM_posts_name_' . $awm_t); $dataArray[$awm_t]['posts_ids'] = get_option('AWM_posts_ids_' . $awm_t); $dataArray[$awm_t]['categories'] = get_option('AWM_categories_' . $awm_t); $dataArray[$awm_t]['categories_ms'] = get_option('AWM_categories_ms_' . $awm_t); $dataArray[$awm_t]['categories_name'] = get_option('AWM_categories_name_' . $awm_t); $dataArray[$awm_t]['categories_subitems'] = get_option('AWM_categories_subitems_' . $awm_t); $dataArray[$awm_t]['categories_subitems_no'] = get_option('AWM_categories_subitems_no_' . $awm_t); $dataArray[$awm_t]['excluded_cats'] = get_option('AWM_excluded_cats_' . $awm_t); $dataArray[$awm_t]['hide_future'] = get_option('AWM_hide_future_' . $awm_t); $dataArray[$awm_t]['hide_protected'] = get_option('AWM_hide_protected_' . $awm_t); $dataArray[$awm_t]['hide_private'] = get_option('AWM_hide_private_' . $awm_t); $dataArray[$awm_t]['Related'] = get_option('AWM_Related_' . $awm_t); $dataArray[$awm_t]['position'] = 0; if ($wpdb->insert($awm_table_name, $dataArray[$awm_t])) { delete_option('AWM_include_home_' . $awm_t); delete_option('AWM_pages_' . $awm_t); delete_option('AWM_pages_ms_' . $awm_t); delete_option('AWM_pages_name_' . $awm_t); delete_option('AWM_exluded_pages_' . $awm_t); delete_option('AWM_posts_' . $awm_t); delete_option('AWM_posts_ms_' . $awm_t); delete_option('AWM_posts_name_' . $awm_t); delete_option('AWM_posts_ids_' . $awm_t); delete_option('AWM_categories_' . $awm_t); delete_option('AWM_categories_ms_' . $awm_t); delete_option('AWM_categories_name_' . $awm_t); delete_option('AWM_categories_subitems_' . $awm_t); delete_option('AWM_categories_subitems_no_' . $awm_t); delete_option('AWM_archives_' . $awm_t); delete_option('AWM_hide_future_' . $awm_t); delete_option('AWM_new_window_' . $awm_t); delete_option('AWM_show_post_date_' . $awm_t); delete_option('AWM_date_format_' . $awm_t); delete_option('AWM_hide_protected_' . $awm_t); delete_option('AWM_excluded_cats_' . $awm_t); delete_option('AWM_menu_name_' . $awm_t); delete_option('AWM_Related_' . $awm_t); } } delete_option('AWM_total_menus'); if ($wpdb->get_var("show columns from $awm_table_name LIKE 'related_name'") != 'related_name') { $wpdb->query("ALTER TABLE " . $awm_table_name . " ADD related_name tinytext NOT NULL DEFAULT ''"); $wpdb->query("UPDATE $awm_table_name SET related_name='Related Posts'"); } $awm_total_tabs = $wpdb->get_var("SELECT COUNT(*) FROM $awm_table_name"); } return ""; } function awm_add_genre_column() { global $awm_total_tabs, $awm_table_name, $wpdb; if ($wpdb->get_var("show columns from $awm_table_name LIKE 'menu_genre'") != 'menu_genre') { $wpdb->query("ALTER TABLE " . $awm_table_name . " ADD menu_genre tinytext NOT NULL DEFAULT ''"); $wpdb->query("ALTER TABLE " . $awm_table_name . " ADD menu_structure text NOT NULL DEFAULT ''"); $wpdb->query("UPDATE $awm_table_name SET menu_genre='JS'"); } } function awm_add_revision_column() { global $awm_total_tabs, $awm_table_name, $wpdb; if ($wpdb->get_var("show columns from $awm_table_name LIKE 'menu_revisions'") != 'menu_revisions') { $wpdb->query("ALTER TABLE " . $awm_table_name . " ADD menu_revisions tinytext NOT NULL DEFAULT ''"); $wpdb->query("UPDATE $awm_table_name SET menu_revisions='1'"); } } /* This code creates new menu */ function awm_create_new_menu($firstTime = false) { update_option('AWM_show_welcome', false); global $wpdb, $awm_table_name; $rows_affected = $wpdb->insert($awm_table_name, array('name' => "")); $i = 1; while ($wpdb->get_var("SELECT COUNT(*) as cnt from $awm_table_name where name LIKE 'menu" . $i . "'")) { $i++; } $wpdb->update($awm_table_name, array('active' => $firstTime, 'name' => (string)"menu" . $i, 'pages_name' => 'Pages', 'pages_ms' => 'main', 'posts_name' => 'Posts', 'posts_ms' => 'sub', 'categories_ms' => 'sub', 'categories_name' => 'Categories', 'type' => 'Dynamic'), array('id' => $wpdb->insert_id)); return '

Additional menu succesfully created.

'; } function awm_delete_menu() { update_option('AWM_show_welcome', false); global $wpdb, $awm_table_name, $awm_total_tabs; if ($awm_total_tabs == 1) { return "This is the last menu. You cannot delete it."; } $wpdb->query("DELETE from $awm_table_name where id =" . (int)$_POST['AWM_menu_id']); awm_delete_widget_instance((int)$_POST['AWM_menu_id'], true); if ((int)$_POST["AWM_selected_tab_c"] == ($awm_total_tabs - 1) && get_option('AWM_selected_tab') == (int)$_POST["AWM_selected_tab_c"]) { update_option('AWM_selected_tab', ((int)$_POST["AWM_selected_tab_c"]) - 1); } return "Menu deleted succesfully."; } /* This code saves the form values */ function awm_update_option_values() { update_option('AWM_show_welcome', false); global $awm_total_tabs, $awm_table_name, $wpdb; if ($awm_total_tabs) { $checkNames = array(); $duplArray = array(); $message = ""; //checking for name duplication for ($awm_t = 0; $awm_t < $awm_total_tabs; $awm_t++) { $fndIndex = array_search((string)$_POST["AWM_menu_name_" . $awm_t], $checkNames); if ($fndIndex === false) { $checkNames[$awm_t] = (string)$_POST["AWM_menu_name_" . $awm_t]; } else { if (array_key_exists((string)$_POST["AWM_menu_name_" . $awm_t], $duplArray)) { $duplArray[(string)$_POST["AWM_menu_name_" . $awm_t]][] = $awm_t; } else { $duplArray[(string)$_POST["AWM_menu_name_" . $awm_t]] = array($fndIndex, $awm_t); } } } if (count($duplArray)) { foreach ($duplArray as $name => $keys) { $message .= "Name " . $name . " exists in " . count($keys) . " menus. Check name field in "; foreach ($keys as $i => $tab) { if ($i != count($keys) - 1) { $message .= "" . ($tab + 1) . ", "; } else { $message .= "" . ($tab + 1) . " "; } } $message .= "menu tabs.
"; } $message .= "Names must be unique for each menu."; return $message; } for ($awm_t = 0; $awm_t < $awm_total_tabs; $awm_t++) { $dataArray[$awm_t]['custom_menu'] = (bool)$_POST["AWM_use_custom_menu_" . $awm_t]; $dataArray[$awm_t]['custom_menu_id'] = (string)$_POST["AWM_use_custom_menu_id_" . $awm_t]; $dataArray[$awm_t]['active'] = isset($_POST["AWM_menu_active_" . $awm_t]) ? true : false; $dataArray[$awm_t]['position'] = (string)$_POST["awm_menu_position_" . $awm_t]; //if user choses awm_widget position, we should create a new 'inactive' widget instance if ($dataArray[$awm_t]['position'] == 'awm_widget' && $dataArray[$awm_t]['active']) { awm_create_widget_instance($awm_t); } else { awm_delete_widget_instance($awm_t); } $dataArray[$awm_t]['type'] = (string)$_POST["AWM_menu_type_" . $awm_t]; $dataArray[$awm_t]['name'] = (string)$_POST["AWM_menu_name_" . $awm_t]; $dataArray[$awm_t]['include_home'] = isset($_POST["AWM_include_home_" . $awm_t]) ? true : false; $dataArray[$awm_t]['pages'] = isset($_POST["AWM_pages_" . $awm_t]) ? true : false; $dataArray[$awm_t]['pages_ms'] = (string)$_POST["AWM_pages_ms_" . $awm_t]; if (isset ($_POST["AWM_pages_name_" . $awm_t])) { $dataArray[$awm_t]['pages_name'] = (string)$_POST["AWM_pages_name_" . $awm_t]; } $dataArray[$awm_t]['excluded_pages'] = (string)$_POST["AWM_excluded_pages_" . $awm_t]; $dataArray[$awm_t]['posts'] = isset($_POST["AWM_posts_" . $awm_t]) ? true : false; $dataArray[$awm_t]['posts_ms'] = (string)$_POST["AWM_posts_ms_" . $awm_t]; if (isset ($_POST["AWM_posts_name_" . $awm_t])) { $dataArray[$awm_t]['posts_name'] = (string)$_POST["AWM_posts_name_" . $awm_t]; } $dataArray[$awm_t]['posts_ids'] = (string)$_POST["AWM_posts_ids_" . $awm_t]; $dataArray[$awm_t]['categories'] = isset ($_POST["AWM_categories_" . $awm_t]) ? true : false; $dataArray[$awm_t]['categories_ms'] = (string)$_POST["AWM_categories_ms_" . $awm_t]; if (isset ($_POST["AWM_categories_name_" . $awm_t])) { $dataArray[$awm_t]['categories_name'] = (string)$_POST["AWM_categories_name_" . $awm_t]; } $dataArray[$awm_t]['categories_subitems'] = isset ($_POST["AWM_categories_subitems_" . $awm_t]) ? true : false; if (isset ($_POST["AWM_categories_subitems_no_" . $awm_t])) { $dataArray[$awm_t]['categories_subitems_no'] = (string)$_POST["AWM_categories_subitems_no_" . $awm_t]; } $dataArray[$awm_t]['excluded_cats'] = (string)$_POST["AWM_excluded_cats_" . $awm_t]; $dataArray[$awm_t]['hide_future'] = isset($_POST["AWM_hide_future_" . $awm_t]) ? true : false; $dataArray[$awm_t]['hide_protected'] = isset($_POST["AWM_hide_protected_" . $awm_t]) ? true : false; $dataArray[$awm_t]['hide_private'] = isset($_POST["AWM_hide_private_" . $awm_t]) ? true : false; $dataArray[$awm_t]['related'] = isset($_POST["AWM_Related_" . $awm_t]) ? true : false; if (isset ($_POST["AWM_Related_name_" . $awm_t])) { $dataArray[$awm_t]['related_name'] = $_POST["AWM_Related_name_" . $awm_t]; } $wpdb->update($awm_table_name, $dataArray[$awm_t], array('id' => (int)$_POST["AWM_menu_id_" . $awm_t])); } update_option('AWM_menu_path', (string)$_POST["AWM_menu_path_0"]); update_option('AWM_selected_tab', (string)$_POST["AWM_selected_tab"]); return "Settings updated!"; } else { return "There are no menus. You can create one using the appropriate button."; } } /* * Helper function that creates AllWebMenu Widget Instances */ function awm_create_widget_instance($awm_t) { //retrieve all instances of widget. $a = get_option('widget_widget_allwebmenus'); //a flag to find if this instance is already setted $a2 = $a; $notSet = true; //variable to hold where is the last instance saved $_keyPos = count($a) - 2; $i = 0; $keyToSave = -1; $keyThatExists = -1; foreach ((array)$a as $_key => $m_instance) { //save the key of the last instance if ($i == $_keyPos) { $keyToSave = $_key; } $i++; if ( ! empty($m_instance['div_name'])) { if ($m_instance['div_name'] == (int)$_POST["AWM_menu_id_" . $awm_t]) { //if it's already defined set the flag to false $notSet = false; $keyThatExists = $_key; break; } } } if (count($a) == 1) { $keyToSave = 1; } if ($notSet && $keyToSave != -1) { //create the new instace $a2[$keyToSave + 1] = array('div_name' => (int)$_POST["AWM_menu_id_" . $awm_t]); ksort($a2, SORT_STRING); update_option('widget_widget_allwebmenus', $a2); //adds the new instance to inactive widgets $sidebar_widgets = (get_option('sidebars_widgets')); $sidebar_widgets['wp_inactive_widgets'][count($sidebar_widgets['wp_inactive_widgets'])] = 'widget_allwebmenus-' . ($keyToSave + 1); update_option('sidebars_widgets', $sidebar_widgets); } /* else if ($notSet && $keyThatExists!=-1){ $alreadyFlag = true; $sidebar_widgets = (get_option('sidebars_widgets')); $sidebar_widgets2 = $sidebar_widgets = (array)$sidebar_widgets; //loop through sidebats to find instances of the widghet foreach ($sidebar_widgets as $name_of_sidebar=>$sidebar){ foreach ((array)$sidebar as $sidebar_i=>$widget_instance_name){ if ($widget_instance_name == 'widget_allwebmenus-'.$keyThatExists){ $alreadyFlag = false; } } } if ($alreadyFlag) { $sidebar_widgets = (get_option('sidebars_widgets')); $sidebar_widgets['wp_inactive_widgets'][count($sidebar_widgets['wp_inactive_widgets'])] = 'widget_allwebmenus-'.($keyThatExists); update_option('sidebars_widgets', $sidebar_widgets); } } */ } /* * Helper function that deletes a widget instance */ function awm_delete_widget_instance($awm_t, $isId = false) { //if not an awm_widget we should check if this menu //widget instance exists so to remove it from the instances and sidebars $id = -1; if ($isId) { $id = $awm_t; } else { $id = (int)$_POST["AWM_menu_id_" . $awm_t]; } $notSet = true; $notSet2 = true; $a = get_option('widget_widget_allwebmenus'); $a2 = $a = (array)$a; //array to hold keys to remove in case we find one or more instances $keysToRemove = array(); foreach ($a as $_key => $m_instance) { if ( ! empty($m_instance['div_name'])) { if ($m_instance['div_name'] == $id) { $notSet = false; unset ($a2[$_key]); $keysToRemove[] = $_key; } } } if ( ! $notSet) { ksort($a2, SORT_STRING); update_option('widget_widget_allwebmenus', $a2); //retrieve the sidebars $sidebar_widgets = (get_option('sidebars_widgets')); $sidebar_widgets2 = $sidebar_widgets = (array)$sidebar_widgets; //loop through sidebats to find instances of the widghet foreach ($sidebar_widgets as $name_of_sidebar => $sidebar) { foreach ((array)$sidebar as $sidebar_i => $widget_instance_name) { foreach ($keysToRemove as $keyToRemove) { if ($widget_instance_name == 'widget_allwebmenus-' . $keyToRemove) { unset($sidebar_widgets2[$name_of_sidebar][$sidebar_i]); $notSet2 = false; } } } } if ( ! $notSet2) { ksort($sidebar_widgets2, SORT_STRING); update_option('sidebars_widgets', $sidebar_widgets2); } } } /* The function that uploads the zip file */ function awm_update_zip() { global $awm_table_name, $wpdb; global $awm_total_tabs; add_filter('upload_mimes', 'addUploadMimes'); function addUploadMimes($mimes) { $mimes = array_merge($mimes, array( 'zip' => 'application/zip' )); return $mimes; } update_option('AWM_selected_tab', (string)$_POST["AWM_selected_tab_c"]); foreach ($_FILES as $src) { if ($src['size']) { $folder = get_option('AWM_menu_path'); $or_name = $wpdb->get_var("SELECT name from $awm_table_name where id = " . (int)$_POST["AWM_menu_id"]); $or_name_full = "awm" . $or_name . ".zip"; if ($src['name'] != $or_name_full) { return "Error: Wrong filename (" . $src['name'] . "). It should be: '" . $or_name_full . "'."; } if (file_exists(ABSPATH . $folder . $src['name'])) { unlink(ABSPATH . $folder . $src['name']); } if ( ! file_exists(ABSPATH . $folder)) { if ( ! mkdir(ABSPATH . $folder)) { return "Error: The folder '" . $folder . "' does not exist and could not be automatically created.
You should create it by yourself and make sure that it has '757' permissions."; } } $wantedPerms = octdec("0755"); $actualPerms = octdec(substr(sprintf("%o", fileperms(ABSPATH . $folder)), -4)); if ($actualPerms < $wantedPerms) { if ( ! chmod(ABSPATH . $folder, $wantedPerms)) { return "Error: Cannnot extract files to folder: '" . $folder . "'. Please make sure that this folder has '757' permissions"; } } define('UPLOADS', $folder); $overrides = array('test_form' => false); if ($uploads_use_yearmonth_folders = get_option('uploads_use_yearmonth_folders')) { update_option('uploads_use_yearmonth_folders', 0); } define('FS_METHOD', 'direct'); WP_Filesystem(); $file = wp_handle_upload($src, $overrides); if ($uploads_use_yearmonth_folders == 1) { update_option('uploads_use_yearmonth_folders', 1); } if (function_exists(unzip_file)) { $result = unzip_file($file['file'], ABSPATH . $folder); if (is_wp_error($result)) { @unlink($file['file']); if ($actualPerms < $wantedPerms) { @chmod(ABSPATH . $folder, $actualPerms); } return "Error: Unzipping file failed."; } $struct = ""; $gen = "JS"; $revs = "1"; // if the zip contains the "info.txt" then read-in the genre, else set as "JS" if (file_exists(ABSPATH . $folder . "info.txt")) { if ($awm_menuinfofile = fopen(ABSPATH . $folder . "info.txt", 'r')) { while ($tmp = fgets($awm_menuinfofile, filesize(ABSPATH . $folder . "info.txt"))) { if (substr($tmp, 0, 7) == "Genre: ") { $gen = substr($tmp, 7); } if (trim($tmp) == "***Start Structure Code***") { while (trim($tmp = fgets($awm_menuinfofile, filesize(ABSPATH . $folder . "info.txt"))) != "***End Structure Code***") { $struct .= $tmp; } } if (substr($tmp, 0, 12) == "Responsive: ") { $revs = substr($tmp, 12); } } } } $gen = trim($gen); $wpdb->query("UPDATE $awm_table_name SET menu_genre='$gen', menu_structure='$struct', menu_revisions='$revs' WHERE name='$or_name'"); } else { @unlink($file['file']); if ($actualPerms < $wantedPerms) { @chmod(ABSPATH . $folder, $actualPerms); } return "ZIP upload requires WordPress version 2.5 or greater."; } @unlink($file['file']); if ($actualPerms < $wantedPerms) { @chmod(ABSPATH . $folder, $actualPerms); } return "Menu files successfully uploaded."; } } update_option('AWM_selected_tab', (string)$_POST["AWM_selected_tab_c"]); } /* This code corrects the menu name if it has paths or extension */ function awm_fix_menu_name($awm_m) { $awm_name = $awm_m; if (strpos($awm_name, "/") > -1 || strpos($awm_name, ".js") > -1) { $awm_nm = explode("/", $awm_name); $awm_name = $awm_nm[1]; $awm_nm = explode(".", $awm_name); $awm_name = $awm_nm[0]; } return $awm_name; } /* This code checks for updated versions of the AllWebMenus software and informs the user if necessary */ function AWM_check() { global $awm_url, $awm_total_tabs, $wpdb, $awm_table_name; $awm_the_msg = array(); $awm_realpath = ABSPATH . get_option('AWM_menu_path'); $awm_path = site_url() . get_option('AWM_menu_path'); error_reporting(0); $myrows = $wpdb->get_results("SELECT * FROM $awm_table_name ORDER BY id ASC"); for ($awm_t = 0; $awm_t < $awm_total_tabs; $awm_t++) { $awm_the_msg[$awm_t] = ""; if ( ! $myrows[$awm_t]->active) { continue; } $awm_name = trim($myrows[$awm_t]->name) . ".js"; if ( ! ($awm_menufile = fopen($awm_realpath . $awm_name, 'r'))) { $awm_the_msg[$awm_t] = "Menu " . $myrows[$awm_t]->name . " was not found at: " . $awm_path . $awm_name; continue; } elseif ( ! ($awm_mfile = fread($awm_menufile, filesize($awm_realpath . $awm_name)))) { $awm_the_msg[$awm_t] = "Could not read menu at: " . $awm_path . $awm_name; continue; } $awm_bNo = explode('awmLibraryBuild=', $awm_mfile); if ($awm_bNo[1] == null) { $awm_the_msg[$awm_t] = "Could not read menu at: " . $awm_path . $awm_name; continue; } $awm_bNo = explode(';', $awm_bNo[1]); $awm_buildNo = $awm_bNo[0]; $awm_hNo = explode('awmHash=\'', $awm_mfile); if ($awm_hNo[1] == null) { $awm_the_msg[$awm_t] = "Could not read menu at: " . $awm_path . $awm_name; continue; } $awm_hNo = explode('\'', $awm_hNo[1]); $awm_HashNo = $awm_hNo[0]; $awm_params = "plugin=wordpress&build=$awm_buildNo&hash=$awm_HashNo&rand=" . rand(1, 10000) . "&domain=" . site_url(); if (function_exists('curl_init')) { if ( ! ($awm_tmp = awm_geturl($awm_params))) { $awm_the_msg[$awm_t] = "Could not retrieve version information for " . $myrows[$awm_t]->name . ". Please contact Likno for more information."; } else { $awm_the_msg[$awm_t] = $awm_tmp; } continue; } else { $awm_the_msg[$awm_t] = ''; } } $awm_has_msg = false; for ($awm_t = 0; $awm_t < $awm_total_tabs; $awm_t++) { if ($awm_the_msg[$awm_t] != "") { $awm_has_msg = true; break; } } $awm_the_full_msg = ""; if ($awm_has_msg) { $awm_the_full_msg = "
"; for ($awm_t = 0; $awm_t < $awm_total_tabs; $awm_t++) { if ($awm_the_msg[$awm_t] != "") { $awm_the_full_msg .= "
Note about " . $myrows[$awm_t]->name . ":
" . $awm_the_msg[$awm_t] . "
"; } } $awm_the_full_msg .= "

 
"; } update_option('AWM_Checked', true); update_option('AWM_Checked_Date', date(d)); error_reporting(1); return $awm_the_full_msg; } /* Helper code for above function */ global $awm_url; $awm_url = "https://www.likno.com/addins/plugin-check.php"; function awm_geturl($awm_params) { global $awm_url; $awm_ch = curl_init(); curl_setopt($awm_ch, CURLOPT_URL, $awm_url); curl_setopt($awm_ch, CURLOPT_POST, 1); curl_setopt($awm_ch, CURLOPT_POSTFIELDS, $awm_params); curl_setopt($awm_ch, CURLOPT_RETURNTRANSFER, 1); $awm_postResult = curl_exec($awm_ch); return $awm_postResult; } ?>