Beispiel #1
0
  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;
  }
Beispiel #2
0
 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 "";
 }
Beispiel #3
0
  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; 
    
  }
Beispiel #4
0
  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;     
  }
Beispiel #5
0
 public function display_label() {
   
   if (isset($this->labels["name"]) && $this->labels["name"] != "") {
     return $this->labels["name"];
   }
   
   return WOOF_Inflector::titleize($this->name);
 }