public function submit() { global $wpdb, $wf; $action = MasterPress::$action; if ($action == "create") { $role_id = $_POST["name"]; if ($role_id == "") { MPV::err(__("A role name must be provided", MASTERPRESS_DOMAIN) ); return false; } // check that there isn't a role of this name already $role = $wf->role($role_id); if ($role && !is_woof_silent($role)) { MPV::err( sprintf( __("Sorry a role named %s already exists. Please choose another name", MASTERPRESS_DOMAIN), $role_id ) ); return false; } // all okay, save the role if (isset($_POST["display_name"]) && trim($_POST["display_name"]) != "") { $display_name = $_POST["display_name"]; } else { $display_name = WOOF_Inflector::titleize($role_id); } $caps = array_keys($_POST["cap"]); foreach ($_POST["new_caps"] as $cap) { if (trim($cap) != "") { $norm = WOOF_Inflector::underscore($cap); if (!in_array($norm, $_POST["all_caps"])) { $caps[] = $norm; } } } add_role($role_id, $display_name, array_fill_keys($caps, true) ); return true; } else if ($action == "edit") { $role_id = MasterPress::$id; $wf_role = $wf->role($role_id); if (!is_woof_silent($wf_role)) { $role = get_role($wf_role->id()); $all_caps = explode(",", $_POST["all_caps"]); $selected_caps = array_keys($_POST["cap"]); $role_caps = array_keys($role->capabilities); $add_caps = array_diff($selected_caps, $role_caps); $remove_caps = array_diff($all_caps, $selected_caps); foreach ($remove_caps as $cap) { if ($role->has_cap($cap)) { $role->remove_cap($cap); } } foreach ($_POST["new_caps"] as $cap) { if (trim($cap) != "") { $norm = WOOF_Inflector::underscore($cap); if (!in_array($norm, $all_caps)) { $add_caps[] = $norm; } } } foreach ($add_caps as $cap) { if (!$role->has_cap($cap)) { $role->add_cap($cap); } } } return true; } else if ($action == "create-field-set" || $action == "edit-field-set") { $field_set = new MPM_RoleFieldSet(); // consume the post data $field_set->name = $_POST["name"]; $field_set->singular_name = $_POST["singular_name"]; $field_set->disabled = isset($_POST["disabled"]); $field_set->labels = $_POST["labels"]; $field_set->visibility = $_POST["visibility"]; $field_set->capabilities = self::handle_capabilities(); $field_set->allow_multiple = isset($_POST["allow_multiple"]); $field_set->type = "r"; // r = role $field_set->icon = self::handle_icon("icon", "icon_select"); $field_set->position = $_POST["position"]; $field_set->expanded = isset($_POST["expanded"]); $field_set->sidebar = false; $field_set->visibility = $this->get_visibility_val("sites,roles"); if (MPC::is_create()) { $field_set->insert(); } else if (MPC::is_edit()) { $field_set->update(MasterPress::$id); } if ($field_set->is_valid()) { if (MPC::is_edit()) { global $meow_provider; $meow_provider->migrate_field_set_meta($field_set, $_POST["name_original"]); } // we don't attach post types to these. they are implicitly linked to the built-in "page" post type // update other menu positions $op = $_POST["other_position"]; if (isset($op) && is_array($op)) { foreach ($op as $id => $position) { $wpdb->update(MPM::table("field-sets"), array( "position" => $position ), array( "id" => $id ), "%d", "%d" ); } } } return $field_set; } else if ($action == "delete-field-set") { $fg = MPM_FieldSet::find_by_id(MasterPress::$id); if ($fg) { $field_data_action = $_POST["field_data"]; if ($field_data_action == "delete") { $fg->delete_meta(); } } $fg->delete(); return true; } else if ($action == "delete-field") { $f = MPM_Field::find_by_id(MasterPress::$id); if ($f) { $field_data_action = $_POST["field_data"]; if ($field_data_action == "delete") { $f->delete_meta(); } } $f->delete(); return true; } else if ($action == "create-field" || $action == "edit-field") { // FIELD OPERATIONS (NOT FIELD GROUPS!) $field = new MPM_Field(); // consume the post data $field->field_set_id = $_POST["parent"]; $field->name = $_POST["name"]; $field->disabled = isset($_POST["disabled"]); $field->required = isset($_POST["required"]); $field->summary_options = $_POST["summary_options"]; $field->labels = $_POST["labels"]; $field->icon = self::handle_icon("icon", "icon_select"); $field->type = $_POST["type"]; $field->type_options = $_POST["type_options"]; $field->position = $_POST["position"]; $field->visibility = $this->get_visibility_val(); $field->capabilities = self::handle_capabilities(); if (MPC::is_create()) { $field->insert(); } else if (MPC::is_edit()) { $field->update(MasterPress::$id); } if ($field->is_valid()) { if (MPC::is_edit()) { global $meow_provider; $meow_provider->migrate_field_meta($field, $_POST["name_original"]); } // update other menu positions $op = $_POST["other_position"]; if (isset($op) && is_array($op)) { foreach ($op as $id => $position) { $wpdb->update(MPM::table("fields"), array( "position" => $position ), array( "id" => $id ), "%d", "%d" ); } } } return $field; } return false; }
public function plural_label() { $item = $this->item; if ($item) { if (isset($item->labels->name) && $item->labels->name != "" && $item->labels->name != $item->name) { return WOOF_Inflector::titleize($item->labels->name); } else { return WOOF_Inflector::titleize(WOOF_Inflector::pluralize($item->name)); } } return ""; }
public static function icon_select($val, $id, $name, $uploader_id) { global $wf; // check if the value is a library-derived icon $is_lib = false; if (preg_match("/lib-(.+)--(.+)/", $val, $matches)) { $val = $matches[1].WOOF_DIR_SEP.$matches[2]; $is_lib = true; } ?> <style type="text/css"> <?php //if ($is_lib) { // echo '#'.$uploader_id.' { display: none; } '; //} $iterator = new DirectoryIterator(MASTERPRESS_EXTENSIONS_ICONS_DIR); foreach ($iterator as $file) { $file_name = $file->getFileName(); if (substr($file_name, 0, 1) == ".") { continue; } if ($file->isDir()) { $icon_select = true; $sub_iterator = new DirectoryIterator(MASTERPRESS_EXTENSIONS_ICONS_DIR.WOOF_DIR_SEP.$file_name); foreach ($sub_iterator as $sub) { $sub_file_name = $sub->getFileName(); $pi = pathinfo($sub_file_name); $sub_ext = $pi["extension"]; $sub_base_name = $pi["filename"]; if (substr($sub_file_name, 0, 1) == ".") { continue; } $url = $wf->root_relative_url(MASTERPRESS_EXTENSIONS_ICONS_URL."/".$file_name."/".$sub_file_name); echo ".icon-".sanitize_title_with_dashes($file_name."-".$sub_file_name)." { background-image: url(".$url."); }"; } } } ?> </style> <?php if (isset($icon_select)) : ?> <div class="icon-select-wrap"> <select id="<?php echo $id ?>" name="<?php echo $name ?>" data-uploader="<?php echo $uploader_id ?>" data-no_icon="<?php echo MPU::img_url("icon-no-icon.png") ?>" data-base="<?php echo MASTERPRESS_EXTENSIONS_ICONS_URL ?>" data-placeholder="<?php _e("-- OR select an icon --", MASTERPRESS_DOMAIN) ?>" class="select2-source icon-select with-icons"> <option value=""></option> <?php foreach (new DirectoryIterator(MASTERPRESS_EXTENSIONS_ICONS_DIR) as $file) { $file_name = $file->getFileName(); if (substr($file_name, 0, 1) == ".") { continue; } if ($file->isDir()) { ?> <optgroup label="<?php echo WOOF_Inflector::humanize($file_name) ?>"> <?php foreach (new DirectoryIterator(MASTERPRESS_EXTENSIONS_ICONS_DIR.WOOF_DIR_SEP.$file_name) as $sub) { $sub_file_name = $sub->getFileName(); $pi = pathinfo($sub_file_name); $sub_ext = $pi["extension"]; $sub_base_name = $pi["filename"]; $path = $file_name.WOOF_DIR_SEP.$sub_file_name; if (substr($sub_file_name, 0, 1) == ".") { continue; } $selected = WOOF_HTML::selected_attr($val == $path); ?> <option value="<?php echo $path ?>" <?php echo $selected ?> data-icon="mp-icon icon-<?php echo sanitize_title_with_dashes($file_name."-".$sub_file_name) ?>" class=""><?php echo WOOF_Inflector::titleize($sub_base_name) ?></option> <?php } } ?> </optgroup> <?php } ?> </select> </div> <?php endif; }
public static function sanitize_filename($filename, $options) { $options = wp_parse_args( $options, array( "filename_sanitize" => "dashes", "filename_case" => "lowercase" ) ); if ($options["filename_sanitize"] != "none") { $filename = sanitize_title_with_dashes($filename); } if ($options["filename_sanitize"] == "underscores") { $filename = str_replace("-", "_", $filename); } if ($options["filename_case"] == "titlecase") { $filename = WOOF_Inflector::titleize($filename); if ($options["filename_sanitize"] == "underscores") { $filename = str_replace(" ", "_", $filename); } else if ($options["filename_sanitize"] == "dashes") { $filename = str_replace(" ", "-", $filename); } } else if ($options["filename_case"] == "uppercase") { $filename = strtoupper($filename); $v = ".V"; } else if ($options["filename_case"] == "lowercase") { $filename = strtolower($filename); } if ($options["filename_sanitize"] == "underscores") { $filename = str_replace("-", "_", $filename); } else if ($options["filename_sanitize"] == "dashes") { $filename = str_replace("_", "-", $filename); } return $filename; }
public function display_label() { if (isset($this->labels["name"]) && $this->labels["name"] != "") { return $this->labels["name"]; } return WOOF_Inflector::titleize($this->name); }