WordPress.org

Plugin Directory

Changeset 617428


Ignore:
Timestamp:
10/25/12 17:13:00 (18 months ago)
Author:
eskapism
Message:

version 1.0.5

Location:
simple-fields
Files:
5 edited
14 copied

Legend:

Unmodified
Added
Removed
  • simple-fields/tags/1.0.5/functions.php

    r614081 r617428  
    1212if (!function_exists("sf_d")) { 
    1313function sf_d($var) { 
    14  
    1514    echo "<pre class='sf_box_debug'>"; 
    1615    if (is_array($var) || is_object($var)) { 
     
    1817    } else if( is_null($var) ) { 
    1918        echo "Var is NULL"; 
     19    } else if ( is_bool($var)) { 
     20        echo "Var is BOOLEAN "; 
     21        echo $var ? "TRUE" : "FALSE"; 
    2022    } else { 
    2123        echo htmlspecialchars( $var, ENT_QUOTES, 'UTF-8' ); 
     
    183185function simple_fields_get_all_fields_and_values_for_post($post_id, $args = "") { 
    184186 
    185     global $sf; 
    186  
    187     $defaults = array( 
    188         "include_deleted" => TRUE 
    189     ); 
    190     $args = wp_parse_args($args, $defaults); 
    191  
    192     $post                     = get_post($post_id); 
    193     $connector_to_use         = $sf->get_selected_connector_for_post($post); 
    194     $existing_post_connectors = $sf->get_post_connectors(); 
    195     $field_groups             = $sf->get_field_groups(); 
    196     $selected_post_connector  = isset($existing_post_connectors[$connector_to_use]) ? $existing_post_connectors[$connector_to_use] : NULL; 
    197  
    198     if($selected_post_connector == null) { 
    199         return false; 
    200     } 
    201  
    202     // Remove deleted field groups 
    203     if (!$args["include_deleted"]) { 
    204  
    205         $arr_field_groups_to_keep = array(); 
    206         foreach ($selected_post_connector["field_groups"] as $one_field_group_id => $one_field_group) { 
    207  
    208             if ($one_field_group["deleted"]) continue; 
    209  
    210             $arr_field_groups_to_keep[$one_field_group_id] = $one_field_group; 
    211  
    212         } 
    213         $selected_post_connector["field_groups"] = $arr_field_groups_to_keep; 
    214     } 
    215  
    216     // Do stuff 
    217     foreach ($selected_post_connector["field_groups"] as $one_field_group) { // one_field_group = name, deleted, context, priority, id 
    218  
    219         // now get all fields for that fieldgroup and join them together 
    220         $selected_post_connector["field_groups"][$one_field_group["id"]] = array_merge($selected_post_connector["field_groups"][$one_field_group["id"]], $field_groups[$one_field_group["id"]]); 
    221  
    222         // loop through all fields within this field group 
    223         // now find out how many times this field group has been added 
    224         // can be zero, 1 and several (if field group is repeatable) 
    225         $num_added_field_groups = 0; 
    226  
    227         while (get_post_meta($post_id, "_simple_fields_fieldGroupID_{$one_field_group["id"]}_fieldID_added_numInSet_{$num_added_field_groups}", true)) { 
    228             $num_added_field_groups++; 
    229         } 
    230          
    231         // Field groups should only be allowed to be 0 if the group is repeatable 
    232         if ($num_added_field_groups == 0 && (isset($one_field_group['repeatable']) && !$one_field_group['repeatable']) ) { 
    233             $num_added_field_groups++; 
    234         } 
    235  
    236         // now fetch the stored values, one field at a time 
    237         // echo "<br>num_added_field_groups: $num_added_field_groups"; 
    238         // for repeatable field groups num_added_field_groups is the number of added field groups 
    239         for ($num_in_set = 0; $num_in_set < $num_added_field_groups; $num_in_set++) { 
    240  
    241             // fetch value for each field 
    242             foreach ($selected_post_connector["field_groups"][$one_field_group["id"]]["fields"] as $one_field_id => $one_field_value) { 
    243  
    244 #echo "<br>num in set: $num_in_set"; 
    245 #sf_d($one_field_value); 
    246  
    247                 $custom_field_key = "_simple_fields_fieldGroupID_{$one_field_group["id"]}_fieldID_{$one_field_id}_numInSet_{$num_in_set}"; 
    248 #echo "<br>custom field key: $custom_field_key"; 
    249  
    250                 $saved_value = get_post_meta($post_id, $custom_field_key, true); // empty string if does not exist 
    251  
    252                 if ($one_field_value["type"] == "textarea") { 
    253                     $match_count = preg_match_all('/http:\/\/[a-z0-9A-Z\.]+[a-z0-9A-Z\.\/%&=\?\-_#]+/i', $saved_value, $match); 
    254                     if ($match_count) { 
    255                         $links=$match[0]; 
    256                         for ($j=0;$j<$match_count;$j++) { 
    257                             if (strpos($saved_value, 'href="'.$links[$j].'"') === false && strpos($saved_value, "href='".$links[$j]."'") === false) { 
    258                                 $attr['discover'] = (apply_filters('embed_oembed_discover', false)) ? true : false; 
    259                                 $oembed_html = wp_oembed_get($links[$j], $attr); 
    260                                 // If there was a result, oembed the link 
    261                                 if ($oembed_html) { 
    262                                     $saved_value = str_replace($links[$j], apply_filters('embed_oembed_html', $oembed_html, $links[$j], $attr), $saved_value); 
     187    $cache_key = 'simple_fields_get_all_fields_and_values_for_post_' . $post_id . json_encode($args); 
     188    $selected_post_connector = wp_cache_get( $cache_key ); 
     189 
     190    if (FALSE === $selected_post_connector) { 
     191 
     192        $defaults = array( 
     193            "include_deleted" => TRUE 
     194        ); 
     195        $args = wp_parse_args($args, $defaults); 
     196     
     197        global $sf; 
     198        $post                     = get_post($post_id); 
     199        $connector_to_use         = $sf->get_selected_connector_for_post($post); 
     200        $existing_post_connectors = $sf->get_post_connectors(); 
     201        $field_groups             = $sf->get_field_groups(); 
     202        $selected_post_connector  = isset($existing_post_connectors[$connector_to_use]) ? $existing_post_connectors[$connector_to_use] : NULL; 
     203     
     204        if($selected_post_connector == null) { 
     205            return false; 
     206        } 
     207     
     208        // Remove deleted field groups 
     209        if (!$args["include_deleted"]) { 
     210     
     211            $arr_field_groups_to_keep = array(); 
     212            foreach ($selected_post_connector["field_groups"] as $one_field_group_id => $one_field_group) { 
     213     
     214                if ($one_field_group["deleted"]) continue; 
     215     
     216                $arr_field_groups_to_keep[$one_field_group_id] = $one_field_group; 
     217     
     218            } 
     219            $selected_post_connector["field_groups"] = $arr_field_groups_to_keep; 
     220        } 
     221     
     222        // Do stuff 
     223        foreach ($selected_post_connector["field_groups"] as $one_field_group) { // one_field_group = name, deleted, context, priority, id 
     224     
     225            // now get all fields for that fieldgroup and join them together 
     226            $selected_post_connector["field_groups"][$one_field_group["id"]] = array_merge($selected_post_connector["field_groups"][$one_field_group["id"]], $field_groups[$one_field_group["id"]]); 
     227     
     228            // loop through all fields within this field group 
     229            // now find out how many times this field group has been added 
     230            // can be zero, 1 and several (if field group is repeatable) 
     231            $num_added_field_groups = 0; 
     232     
     233            while (get_post_meta($post_id, "_simple_fields_fieldGroupID_{$one_field_group["id"]}_fieldID_added_numInSet_{$num_added_field_groups}", true)) { 
     234                $num_added_field_groups++; 
     235            } 
     236             
     237            // Field groups should only be allowed to be 0 if the group is repeatable 
     238            if ($num_added_field_groups == 0 && (isset($one_field_group['repeatable']) && !$one_field_group['repeatable']) ) { 
     239                $num_added_field_groups++; 
     240            } 
     241     
     242            // now fetch the stored values, one field at a time 
     243            // echo "<br>num_added_field_groups: $num_added_field_groups"; 
     244            // for repeatable field groups num_added_field_groups is the number of added field groups 
     245            for ($num_in_set = 0; $num_in_set < $num_added_field_groups; $num_in_set++) { 
     246     
     247                // fetch value for each field 
     248                foreach ($selected_post_connector["field_groups"][$one_field_group["id"]]["fields"] as $one_field_id => $one_field_value) { 
     249     
     250    #echo "<br>num in set: $num_in_set"; 
     251    #sf_d($one_field_value); 
     252     
     253                    $custom_field_key = "_simple_fields_fieldGroupID_{$one_field_group["id"]}_fieldID_{$one_field_id}_numInSet_{$num_in_set}"; 
     254    #echo "<br>custom field key: $custom_field_key"; 
     255     
     256                    $saved_value = get_post_meta($post_id, $custom_field_key, true); // empty string if does not exist 
     257     
     258                    if ($one_field_value["type"] == "textarea") { 
     259                        $match_count = preg_match_all('/http:\/\/[a-z0-9A-Z\.]+[a-z0-9A-Z\.\/%&=\?\-_#]+/i', $saved_value, $match); 
     260                        if ($match_count) { 
     261                            $links=$match[0]; 
     262                            for ($j=0;$j<$match_count;$j++) { 
     263                                if (strpos($saved_value, 'href="'.$links[$j].'"') === false && strpos($saved_value, "href='".$links[$j]."'") === false) { 
     264                                    $attr['discover'] = (apply_filters('embed_oembed_discover', false)) ? true : false; 
     265                                    $oembed_html = wp_oembed_get($links[$j], $attr); 
     266                                    // If there was a result, oembed the link 
     267                                    if ($oembed_html) { 
     268                                        $saved_value = str_replace($links[$j], apply_filters('embed_oembed_html', $oembed_html, $links[$j], $attr), $saved_value); 
     269                                    } 
    263270                                } 
    264271                            } 
    265272                        } 
    266273                    } 
    267                 } 
    268  
    269                 $selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]["saved_values"][$num_in_set] = $saved_value; 
    270                 $selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]["meta_keys"][$num_in_set] = $custom_field_key; 
    271  
    272 #if (strpos($custom_field_key, "_simple_fields_fieldGroupID_23_fieldID_2_numInSet_") !== FALSE) { // name/string 
    273 #if (strpos($custom_field_key, "_simple_fields_fieldGroupID_23_fieldID_2_numInSet_") !== FALSE) { // file/id 
    274     #sf_d($custom_field_key); 
    275     #echo "<br>saved value for $custom_field_key: ";var_dump($saved_value); 
    276     #sf_d($selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]); 
    277 #} 
    278  
    279  
    280             } 
    281         } 
    282  
    283     } 
    284     #sf_d($selected_post_connector); 
     274     
     275                    $selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]["saved_values"][$num_in_set] = $saved_value; 
     276                    $selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]["meta_keys"][$num_in_set] = $custom_field_key; 
     277 
     278                } 
     279            } 
     280     
     281        } 
     282        wp_cache_set( $cache_key, $selected_post_connector ); 
     283    } 
     284 
    285285    return $selected_post_connector; 
    286286} 
     
    436436    #sf_d($field_groups); 
    437437    $highest_id = 0; 
    438  
     438     
    439439    // First get the id of the field group we are adding. Existing or highest new. 
    440440    // Loop through all existing field groups to see if the field group we are adding already exists 
     
    642642    } // if passed as arg field group has fields 
    643643 
    644 #sf_d($field_groups[$field_group_id]); 
    645 #sf_d($fields); 
     644    #sf_d($field_groups[$field_group_id]); 
     645    #sf_d($fields); 
     646 
     647    wp_cache_delete( "simple_fields_groups" ); 
    646648    update_option("simple_fields_groups", $field_groups); 
    647649 
     
    650652} 
    651653 
     654/** 
     655 * @todo: documentation 
     656 */ 
    652657function simple_fields_register_post_connector($unique_name = "", $new_post_connector = array()) { 
    653658 
     
    752757    } 
    753758 
     759    wp_cache_delete("simple_fields_post_connectors"); 
    754760    update_option("simple_fields_post_connectors", $post_connectors); 
    755761 
     
    806812    } 
    807813 
     814    wp_cache_delete("simple_fields_post_type_defaults"); 
    808815    update_option("simple_fields_post_type_defaults", $post_type_defaults); 
    809816 
     
    829836function simple_fields_set_value($post_id, $field_slug, $new_numInSet = null, $new_post_connector = null, $new_value) { 
    830837 
     838    /* 
     839    echo "<br><br>Setting field with slug " . $field_slug . " for post " . $post_id; 
     840    echo "<br>value to set is: " . $new_value; 
     841    // */ 
     842 
    831843    global $sf; 
    832844 
     
    857869    foreach ($post_connector_info["field_groups"] as $one_field_group) { 
    858870 
     871        // check number of added field groups 
     872        $num_added_field_groups = 0;  
     873        while (get_post_meta($post_id, "_simple_fields_fieldGroupID_{$field_group_id}_fieldID_added_numInSet_{$num_added_field_groups}", true)) { 
     874            $num_added_field_groups++; 
     875        } 
     876 
    859877        // Loop the fields in this field group 
    860878        foreach ($one_field_group["fields"] as $one_field_group_field) {  
     
    870888                $field_id = $one_field_group_field["id"]; 
    871889 
    872                 // check number of added field groups 
    873                 $num_added_field_groups = 0;  
    874                 while (get_post_meta($post_id, "_simple_fields_fieldGroupID_{$field_group_id}_fieldID_added_numInSet_{$num_added_field_groups}", true)) { 
    875                     $num_added_field_groups++; 
    876                 } 
    877  
    878                 if (empty($new_numInSet)) { 
     890                if (!empty($new_numInSet)) { 
    879891                    $num_in_set = $new_numInSet; 
    880892                } else { 
    881893                    $num_in_set = $num_added_field_groups;                   
    882894                } 
    883  
     895                 
    884896                update_post_meta($post_id, "_simple_fields_fieldGroupID_{$field_group_id}_fieldID_{$field_id}_numInSet_{$num_in_set}", $new_value); 
    885897                update_post_meta($post_id, "_simple_fields_fieldGroupID_{$field_group_id}_fieldID_added_numInSet_{$num_in_set}", 1); 
     898                update_post_meta($post_id, "_simple_fields_been_saved", 1); 
    886899 
    887900                // value updated. exit function. 
     
    9931006    } 
    9941007 
     1008    $parsed_options = wp_parse_args($options); 
     1009 
    9951010    // Loop through the field groups that this post connector has and locate the field_slug we are looking for 
    9961011    foreach ($post_connector_info["field_groups"] as $one_field_group) { 
     
    10121027                // extended_output=1&file[extended_output]=1&file[anotherOptions]=yepp indeed 
    10131028                // where the first arg is for all fields, and the one with square-brackets are for specific slugs 
    1014                 $parsed_options = wp_parse_args($options);               
    10151029                $parsed_options_for_this_field = array(); 
    10161030 
     
    11641178} 
    11651179 
     1180/** 
     1181 * Returns allt the values in a field group 
     1182 * It's a shortcut to running simple_fields_value(slugs) with all slugs already entered 
     1183 * Depending if the field group is repeatable or not, simple_field_value or simple_fields_values will be used 
     1184 * @param mixed $field_group_id_or_slug 
     1185 * @return mixed, but probably array, depending on how many field the group has (just one field, and not repeatable = no array for you!) 
     1186 */ 
     1187function simple_fields_fieldgroup($field_group_id_or_slug, $post_id = NULL, $options = array()) { 
     1188 
     1189    if (!is_numeric($post_id)) { 
     1190        global $post; 
     1191        $post_id = $post->ID; 
     1192    } 
     1193 
     1194    $cache_key = "simple_fields_fieldgroup_" . $field_group_id_or_slug . "_" . $post_id . json_encode($options); 
     1195    $values = wp_cache_get( $cache_key ); 
     1196    if (FALSE === $values) { 
     1197     
     1198        global $sf; 
     1199        $field_group = $sf->get_field_group_by_slug($field_group_id_or_slug); 
     1200     
     1201        $arr_fields = array(); 
     1202        foreach ($field_group["fields"] as $one_field) { 
     1203            if ($one_field["deleted"]) continue; 
     1204            $arr_fields[] = trim($one_field["slug"]); 
     1205        } 
     1206         
     1207        $str_field_slugs = join(",", $arr_fields); 
     1208        if ($field_group["repeatable"]) { 
     1209            $values = simple_fields_values($str_field_slugs, $post_id); 
     1210        } else { 
     1211            $values = simple_fields_value($str_field_slugs, $post_id); 
     1212        } 
     1213        wp_cache_set( $cache_key, $values ); 
     1214    } 
     1215    return $values; 
     1216} 
     1217 
     1218 
    11661219/* 
    11671220@todo: add simple_fields_fieldgroup_values() as smart alias to  
  • simple-fields/tags/1.0.5/readme.txt

    r615285 r617428  
    55Requires at least: 3.3.1 
    66Tested up to: 3.4.2 
    7 Stable tag: 1.0.4 
     7Stable tag: 1.0.5 
    88 
    99Add more advanced custom fields types to your edit post page. Field can be of several types, including textarea, checkbox, radio buttons, files and color picker. 
     
    164164 
    165165== Changelog == 
     166 
     167#### Version 1.0.5 
     168- Added: field group slug to field group wrapper css + field wrapper css on edit post screen, so you can style different field groups differently. 
     169- Added: new method: get_field_group(): returns an array with info about a field group by using id or slug 
     170- Added: new function: simple_fields_fieldgroup(). Works like simple_fields_value(s) but for a complete fieldgroup.  
     171Pretty good "shortcut" when you want to get all the field values in a field group. 
     172- Added: new method get_field_by_slug. Returns a field from a fieldgroup using their slugs. 
     173- Fixed: Added wp_cache to some very commonly used functions. Quick tests with Xdebug shows a noticable faster performance. 
     174- Changed: method get_field_groups() adds a key with name field_group with some info about the field group that the field belongs to.  
     175Useful since sometimes when you use for example get_field_by_slug() to get a single field, you want to know some basic info about the  
     176field group it belongs to, like the id or slug. 
     177- Changed: function sf_d also shows if a variable is a boolean. 
    166178 
    167179#### Version 1.0.4 
  • simple-fields/tags/1.0.5/scripts.js

    r615285 r617428  
    302302                 
    303303                // Fire event so plugins can listen to the add-button 
    304                 //simple_fields.trigger("field_group_added"); 
    305                 //simple_fields.dispatchEvent(); 
    306304                $(document.body).trigger("field_group_added", $response); 
    307305            }); 
  • simple-fields/tags/1.0.5/simple_fields.php

    r615285 r617428  
    44Plugin URI: http://simple-fields.com 
    55Description: Add groups of textareas, input-fields, dropdowns, radiobuttons, checkboxes and files to your edit post screen. 
    6 Version: 1.0.4 
     6Version: 1.0.5 
    77Author: Pär Thernström 
    88Author URI: http://eskapism.se/ 
     
    5252        define( "SIMPLE_FIELDS_URL", plugins_url(basename(dirname(__FILE__))). "/"); 
    5353        define( "SIMPLE_FIELDS_NAME", "Simple Fields"); 
    54         define( "SIMPLE_FIELDS_VERSION", "1.0.4"); 
     54        define( "SIMPLE_FIELDS_VERSION", "1.0.5"); 
    5555 
    5656        load_plugin_textdomain( 'simple-fields', null, basename(dirname(__FILE__)).'/languages/'); 
     
    417417        $repeatable = (bool) $current_field_group["repeatable"]; 
    418418        $field_group_css = "simple-fields-fieldgroup-$field_group_id"; 
     419        /* if (isset($current_field_group["slug"]) && !empty($current_field_group["slug"])) { 
     420            $field_group_css .= " simple-fields-fieldgroup-" . $current_field_group["slug"]; 
     421        }*/ 
    419422 
    420423        ?> 
     
    441444                $field_class = "simple-fields-fieldgroups-field-{$field_group_id}-{$field_id} "; 
    442445                $field_class .= "simple-fields-fieldgroups-field-type-" . $field["type"]; 
     446                if (isset($field["slug"]) && !empty($field["slug"])) { 
     447                    $field_class .= " simple-fields-fieldgroups-field-slug-" . $field["slug"]; 
     448                } 
    443449     
    444450                $custom_field_key = "_simple_fields_fieldGroupID_{$field_group_id}_fieldID_{$field_id}_numInSet_{$num_in_set}"; 
     
    562568                        $class = ""; 
    563569                        if ($description) { 
    564                             $class = "simple-fields-metabox-field-with-description"; 
     570                            $class = "simple-fields-metabox-field-file-with-description"; 
    565571                        } 
    566572                        echo "<div class='simple-fields-metabox-field-file $class'>"; 
     
    9971003        // try until returns empty 
    9981004        $num_added_field_groups = 0; 
    999         $num_added_field_groups_css = ""; 
    10001005 
    10011006        while (get_post_meta($post_id, "_simple_fields_fieldGroupID_{$post_connector_field_id}_fieldID_added_numInSet_{$num_added_field_groups}", true)) { 
    10021007            $num_added_field_groups++; 
    1003             $num_added_field_groups_css = "simple-fields-meta-box-field-group-wrapper-has-fields-added"; 
    1004         } 
    1005  
     1008        } 
     1009         
     1010        $num_added_field_groups_css = ""; 
     1011        if ($num_added_field_groups > 0) $num_added_field_groups_css = "simple-fields-meta-box-field-group-wrapper-has-fields-added"; 
     1012 
     1013        $field_group_slug_css = ""; 
     1014        if (isset($current_field_group["slug"]) && !empty($current_field_group["slug"])) { 
     1015            $field_group_slug_css = "simple-fields-meta-box-field-group-wrapper-slug-" . $current_field_group["slug"]; 
     1016        } 
    10061017      
    1007         echo "<div class='simple-fields-meta-box-field-group-wrapper $num_added_field_groups_css'>"; 
     1018        echo "<div class='simple-fields-meta-box-field-group-wrapper $num_added_field_groups_css $field_group_slug_css'>"; 
    10081019        echo "<input type='hidden' name='simple-fields-meta-box-field-group-id' value='$post_connector_field_id' />"; 
    10091020      
     
    10221033                </div> 
    10231034            "; 
     1035 
     1036            // Start of list with adeed field groups 
    10241037            echo "<ul class='simple-fields-metabox-field-group-fields simple-fields-metabox-field-group-fields-repeatable'>"; 
    10251038      
    1026             //var_dump( get_post_meta($post_id, "_simple_fields_fieldGroupID_{$post_connector_field_id}_fieldID_added_numInSet_0", true) ); 
    1027             //echo "num_added_field_groups: $num_added_field_groups"; 
    10281039            // now add them. ooooh my, this is fancy stuff. 
    10291040            $use_defaults = null; 
     
    10321043            } 
    10331044      
     1045            // end list with added field groups 
    10341046            echo "</ul>"; 
    10351047 
     
    10631075     */ 
    10641076    function get_post_connectors() { 
    1065         $connectors = get_option("simple_fields_post_connectors"); 
    1066         if ($connectors === FALSE) $connectors = array(); 
    1067      
    1068         // calculate number of active field groups 
    1069         // @todo: check this a bit more, does not seem to be any deleted groups. i thought i saved the deletes ones to, but with deleted flag set 
    1070         foreach (array_keys($connectors) as $i) { 
    1071                      
    1072                     // Sanity check the connector id 
    1073                     if (empty($connectors[$i]["id"]) && empty($connectors[$i]["deleted"])) { 
    1074                          
    1075                         // Found field group without id, let's try to repair it 
    1076                         $highest_id = 0; 
    1077                         foreach($connectors as $one_connector) { 
    1078                             if ($one_connector["id"] > $highest_id) 
    1079                                 $highest_id = $one_connector["id"]; 
    1080                             if ($one_connector["id"] === $i) 
    1081                                 $id_already_exists = true; 
    1082                         } 
    1083                          
    1084                         if ($i > 0 && !$id_already_exists) { 
    1085                             // If the array key is larger than 0 and 
    1086                             // not used as id by any other connector, 
    1087                             // then it's the perfect id 
    1088                             $connectors[$i]["id"] = $i; 
    1089                         } else { 
    1090                             // The array key is either less than or equal to 0, 
    1091                             // or another connector is using it as id. In any case, 
    1092                             // let's treat it as a new connector and give it a new id. 
    1093                             $new_id = $highest_id + 1; 
    1094                             $connectors[$i]["id"] = $new_id; 
    1095                              
    1096                             // Now make sure the array key matches the new id 
    1097                             $connectors[$new_id] = $connectors[$i]; 
    1098                             unset($connectors[$i]); 
    1099                             $i = $new_id; 
    1100                         } 
    1101                          
    1102                     } 
    1103          
    1104             // compatibility fix key vs slug 
    1105             if (isset($connectors[$i]["slug"]) && $connectors[$i]["slug"]) { 
    1106                 $connectors[$i]["key"] = $connectors[$i]["slug"]; 
    1107             } else if (isset($connectors[$i]["key"]) && $connectors[$i]["key"]) { 
    1108                 $connectors[$i]["slug"] = $connectors[$i]["key"]; 
    1109             } 
    1110          
    1111             $num_fields_in_group = 0; 
    1112             if (isset($connectors[$i]["field_groups"]) && is_array($connectors[$i]["field_groups"])) { 
    1113                 foreach ($connectors[$i]["field_groups"] as $one_group) { 
    1114                     if (isset($one_group["deleted"]) && !$one_group["deleted"]) $num_fields_in_group++; 
    1115                 } 
    1116             } 
    1117             $connectors[$connectors[$i]["id"]]["field_groups_count"] = $num_fields_in_group; 
     1077 
     1078        // use wp_cache 
     1079        $connectors = wp_cache_get( 'simple_fields_post_connectors' ); 
     1080        if (FALSE === $connectors) { 
     1081 
     1082            $connectors = get_option("simple_fields_post_connectors"); 
     1083     
     1084            if ($connectors === FALSE) $connectors = array(); 
     1085         
     1086            // calculate number of active field groups 
     1087            // @todo: check this a bit more, does not seem to be any deleted groups. i thought i saved the deletes ones to, but with deleted flag set 
     1088            foreach (array_keys($connectors) as $i) { 
     1089                         
     1090                        // Sanity check the connector id 
     1091                        if (empty($connectors[$i]["id"]) && empty($connectors[$i]["deleted"])) { 
     1092                             
     1093                            // Found field group without id, let's try to repair it 
     1094                            $highest_id = 0; 
     1095                            foreach($connectors as $one_connector) { 
     1096                                if ($one_connector["id"] > $highest_id) 
     1097                                    $highest_id = $one_connector["id"]; 
     1098                                if ($one_connector["id"] === $i) 
     1099                                    $id_already_exists = true; 
     1100                            } 
     1101                             
     1102                            if ($i > 0 && !$id_already_exists) { 
     1103                                // If the array key is larger than 0 and 
     1104                                // not used as id by any other connector, 
     1105                                // then it's the perfect id 
     1106                                $connectors[$i]["id"] = $i; 
     1107                            } else { 
     1108                                // The array key is either less than or equal to 0, 
     1109                                // or another connector is using it as id. In any case, 
     1110                                // let's treat it as a new connector and give it a new id. 
     1111                                $new_id = $highest_id + 1; 
     1112                                $connectors[$i]["id"] = $new_id; 
     1113                                 
     1114                                // Now make sure the array key matches the new id 
     1115                                $connectors[$new_id] = $connectors[$i]; 
     1116                                unset($connectors[$i]); 
     1117                                $i = $new_id; 
     1118                            } 
     1119                             
     1120                        } 
     1121             
     1122                // compatibility fix key vs slug 
     1123                if (isset($connectors[$i]["slug"]) && $connectors[$i]["slug"]) { 
     1124                    $connectors[$i]["key"] = $connectors[$i]["slug"]; 
     1125                } else if (isset($connectors[$i]["key"]) && $connectors[$i]["key"]) { 
     1126                    $connectors[$i]["slug"] = $connectors[$i]["key"]; 
     1127                } 
     1128             
     1129                $num_fields_in_group = 0; 
     1130                if (isset($connectors[$i]["field_groups"]) && is_array($connectors[$i]["field_groups"])) { 
     1131                    foreach ($connectors[$i]["field_groups"] as $one_group) { 
     1132                        if (isset($one_group["deleted"]) && !$one_group["deleted"]) $num_fields_in_group++; 
     1133                    } 
     1134                } 
     1135                $connectors[$connectors[$i]["id"]]["field_groups_count"] = $num_fields_in_group; 
     1136            } 
     1137             
     1138            wp_cache_set( 'simple_fields_post_connectors', $connectors ); 
     1139             
    11181140        } 
    11191141     
     
    11221144 
    11231145    function get_post_type_defaults() { 
    1124         return (array) get_option("simple_fields_post_type_defaults"); 
     1146 
     1147        $post_type_defaults = wp_cache_get( 'simple_fields_post_type_defaults' ); 
     1148        if (FALSE === $post_type_defaults) { 
     1149            $post_type_defaults = (array) get_option("simple_fields_post_type_defaults"); 
     1150            wp_cache_set( 'simple_fields_post_type_defaults', $post_type_defaults );         
     1151        } 
     1152 
     1153        return $post_type_defaults; 
     1154 
    11251155    } 
    11261156     
     
    11311161     */ 
    11321162    function get_field_groups() { 
    1133  
    1134         $field_groups = get_option("simple_fields_groups"); 
    1135         if ($field_groups === FALSE) $field_groups = array(); 
    1136          
    1137         // Calculate the number of active fields 
    1138         // And some other things 
    1139         foreach (array_keys($field_groups) as $i) { 
     1163         
     1164        $field_groups = wp_cache_get( 'simple_fields_groups' ); 
     1165        if (FALSE === $field_groups) { 
     1166             
     1167            $field_groups = get_option("simple_fields_groups"); 
     1168            if ($field_groups === FALSE) $field_groups = array(); 
     1169             
     1170            // Calculate the number of active fields 
     1171            // And some other things 
     1172            foreach (array_keys($field_groups) as $i) { 
     1173                         
     1174                // Sanity check the field group id 
     1175                if (empty($field_groups[$i]["id"]) && empty($field_groups[$i]["deleted"])) { 
    11401176                     
    1141                     // Sanity check the field group id 
    1142                     if (empty($field_groups[$i]["id"]) && empty($field_groups[$i]["deleted"])) { 
     1177                    // Found field group without id, let's try to repair it 
     1178                    $highest_id = 0; 
     1179                    foreach($field_groups as $one_field_group) { 
     1180                        if ($one_field_group["id"] > $highest_id) 
     1181                            $highest_id = $one_field_group["id"]; 
     1182                        if ($one_field_group["id"] === $i) 
     1183                            $id_already_exists = true; 
     1184                    } 
     1185                     
     1186                    if ($i > 0 && !$id_already_exists) { 
     1187                        // If the array key is larger than 0 and 
     1188                        // not used as id by any other field group, 
     1189                        // then it's the perfect id 
     1190                        $field_groups[$i]["id"] = $i; 
     1191                    } else { 
     1192                        // The array key is either less than or equal to 0, 
     1193                        // or another field group is using it as id. In any case, 
     1194                        // let's treat it as a new field group and give it a new id. 
     1195                        $new_id = $highest_id + 1; 
     1196                        $field_groups[$i]["id"] = $new_id; 
    11431197                         
    1144                         // Found field group without id, let's try to repair it 
    1145                         $highest_id = 0; 
    1146                         foreach($field_groups as $one_field_group) { 
    1147                             if ($one_field_group["id"] > $highest_id) 
    1148                                 $highest_id = $one_field_group["id"]; 
    1149                             if ($one_field_group["id"] === $i) 
    1150                                 $id_already_exists = true; 
    1151                         } 
    1152                          
    1153                         if ($i > 0 && !$id_already_exists) { 
    1154                             // If the array key is larger than 0 and 
    1155                             // not used as id by any other field group, 
    1156                             // then it's the perfect id 
    1157                             $field_groups[$i]["id"] = $i; 
    1158                         } else { 
    1159                             // The array key is either less than or equal to 0, 
    1160                             // or another field group is using it as id. In any case, 
    1161                             // let's treat it as a new field group and give it a new id. 
    1162                             $new_id = $highest_id + 1; 
    1163                             $field_groups[$i]["id"] = $new_id; 
    1164                              
    1165                             // Now make sure the array key matches the new id 
    1166                             $field_groups[$new_id] = $field_groups[$i]; 
    1167                             unset($field_groups[$i]); 
    1168                             $i = $new_id; 
    1169                         } 
    1170                          
     1198                        // Now make sure the array key matches the new id 
     1199                        $field_groups[$new_id] = $field_groups[$i]; 
     1200                        unset($field_groups[$i]); 
     1201                        $i = $new_id; 
    11711202                    } 
    1172  
    1173             // Make sure we have both key and slug set to same. key = old name for slug 
    1174             if (isset($field_groups[$i]["slug"]) && $field_groups[$i]["slug"]) { 
    1175                 $field_groups[$i]["key"] = $field_groups[$i]["slug"]; 
    1176             } else if (isset($field_groups[$i]["key"]) && $field_groups[$i]["key"]) { 
    1177                 $field_groups[$i]["slug"] = $field_groups[$i]["key"]; 
    1178             } 
    1179  
    1180             $num_active_fields = 0; 
    1181             foreach ($field_groups[$i]["fields"] as $one_field) { 
    1182                 if (!$one_field["deleted"]) $num_active_fields++; 
    1183             } 
    1184             $field_groups[$i]["fields_count"] = $num_active_fields; 
    1185         } 
    1186          
     1203                     
     1204                } 
     1205     
     1206                // Make sure we have both key and slug set to same. key = old name for slug 
     1207                if (isset($field_groups[$i]["slug"]) && $field_groups[$i]["slug"]) { 
     1208                    $field_groups[$i]["key"] = $field_groups[$i]["slug"]; 
     1209                } else if (isset($field_groups[$i]["key"]) && $field_groups[$i]["key"]) { 
     1210                    $field_groups[$i]["slug"] = $field_groups[$i]["key"]; 
     1211                } 
     1212     
     1213                $num_active_fields = 0; 
     1214                foreach ($field_groups[$i]["fields"] as $one_field) { 
     1215                    if (!$one_field["deleted"]) $num_active_fields++; 
     1216                } 
     1217                $field_groups[$i]["fields_count"] = $num_active_fields; 
     1218                 
     1219                // Also add some info about the field group is belongs to 
     1220                // This can be useful to have if you're only fetching a single field 
     1221                // but need to do something with that fields field group  
     1222                // (like getting the id to calcualte that custom field meta key to use) 
     1223                foreach ($field_groups[$i]["fields"] as $one_field_id => $one_field) { 
     1224 
     1225                    if (!isset($field_groups[$i]["fields"][$one_field_id]["field_group"])) { 
     1226 
     1227                        $field_groups[$i]["fields"][$one_field_id]["field_group"] = array( 
     1228                            "id"           => $field_groups[$i]["id"], 
     1229                            "name"         => $field_groups[$i]["name"], 
     1230                            "slug"         => $field_groups[$i]["id"], 
     1231                            "description"  => $field_groups[$i]["description"], 
     1232                            "repeatable"   => $field_groups[$i]["repeatable"], 
     1233                            "fields_count" => $field_groups[$i]["fields_count"] 
     1234                        ); 
     1235                         
     1236                    } 
     1237                     
     1238                } 
     1239            } 
     1240 
     1241            wp_cache_set( 'simple_fields_groups', $field_groups ); 
     1242             
     1243        } 
     1244 
    11871245        return $field_groups; 
    11881246         
     
    33183376        return $return_field_value; 
    33193377    } 
     3378 
     3379    /** 
     3380     * Gets a field group using it's id. Deleted field groups are not included 
     3381     * @since 1.0.5 
     3382     * @param string slug of field group (or id, actually) 
     3383     * @return mixed array with field group info if field groups exists, false if does not exist 
     3384     */ 
     3385    function get_field_group_by_slug($field_group_slug) { 
     3386         
     3387        $cache_key = "get_field_group_by_slug_" . $field_group_slug; 
     3388        $return_val = wp_cache_get( $cache_key );        
     3389        if (FALSE === $return_val) { 
     3390         
     3391            $field_groups = $this->get_field_groups(); 
     3392             
     3393            if (!is_numeric($field_group_slug)) { 
     3394     
     3395                // not number so look for field group with this variable as slug 
     3396                foreach ($field_groups as $one_field_group) { 
     3397                    if ($one_field_group["deleted"]) continue; 
     3398                    if ($one_field_group["slug"] == $field_group_slug) { 
     3399                        wp_cache_set( $cache_key, $one_field_group ); 
     3400                        return $one_field_group; 
     3401                    } 
     3402                } 
     3403                 
     3404                wp_cache_set( $cache_key, FALSE ); 
     3405                return FALSE; 
     3406     
     3407            } else { 
     3408     
     3409                // look for group using id 
     3410                if (isset($field_groups[$field_group_slug]) && is_array($field_groups[$field_group_slug]) && !$field_groups[$field_group_slug]["deleted"]) { 
     3411                    wp_cache_set( $cache_key, $field_groups[$field_group_slug] ); 
     3412                    return $field_groups[$field_group_slug]; 
     3413                } else { 
     3414                    wp_cache_set( $cache_key, FALSE ); 
     3415                    return FALSE; 
     3416                } 
     3417                 
     3418            } 
     3419                 
     3420        } 
     3421 
     3422        return $return_val; 
     3423 
     3424    } 
     3425 
     3426 
     3427    /** 
     3428     * Returns a field from a fieldgroup using their slugs 
     3429     * 
     3430     * @since 1.0.5 
     3431     * @param string $field_slug 
     3432     * @param string $fieldgroup_slug 
     3433     * @return mixed Array with field info if field is found, false if not found 
     3434     */ 
     3435    function get_field_by_slug($field_slug = "", $fieldgroup_slug = "") { 
     3436 
     3437        $field_group = $this->get_field_group_by_slug($fieldgroup_slug); 
     3438        if (!$field_group) return FALSE; 
     3439         
     3440        foreach ($field_group["fields"] as $one_field) { 
     3441            if ($field_slug === $one_field["slug"]) { 
     3442                return $one_field; 
     3443            } 
     3444        } 
     3445         
     3446        // No field with that slug found 
     3447        return FALSE; 
     3448    } 
     3449 
    33203450     
    33213451} // end class 
  • simple-fields/tags/1.0.5/styles.css

    r615285 r617428  
    410410    margin-right: 0; 
    411411} 
    412 #side-sortables .simple-fields-metabox-field-with-description { 
     412#side-sortables .simple-fields-metabox-field-file-with-description { 
    413413    height: 83px; 
    414414} 
     
    476476    height: 50px; 
    477477} 
    478 .simple-fields-metabox-field-with-description { 
     478.simple-fields-metabox-field-file-with-description { 
    479479    height: 70px; 
    480480} 
    481 .simple-fields-metabox-field-with-description .simple-fields-metabox-field-description { 
     481.simple-fields-metabox-field-file-with-description .simple-fields-metabox-field-description { 
    482482    position: absolute; 
    483483    left: 0; 
  • simple-fields/trunk/functions.php

    r614081 r617428  
    1212if (!function_exists("sf_d")) { 
    1313function sf_d($var) { 
    14  
    1514    echo "<pre class='sf_box_debug'>"; 
    1615    if (is_array($var) || is_object($var)) { 
     
    1817    } else if( is_null($var) ) { 
    1918        echo "Var is NULL"; 
     19    } else if ( is_bool($var)) { 
     20        echo "Var is BOOLEAN "; 
     21        echo $var ? "TRUE" : "FALSE"; 
    2022    } else { 
    2123        echo htmlspecialchars( $var, ENT_QUOTES, 'UTF-8' ); 
     
    183185function simple_fields_get_all_fields_and_values_for_post($post_id, $args = "") { 
    184186 
    185     global $sf; 
    186  
    187     $defaults = array( 
    188         "include_deleted" => TRUE 
    189     ); 
    190     $args = wp_parse_args($args, $defaults); 
    191  
    192     $post                     = get_post($post_id); 
    193     $connector_to_use         = $sf->get_selected_connector_for_post($post); 
    194     $existing_post_connectors = $sf->get_post_connectors(); 
    195     $field_groups             = $sf->get_field_groups(); 
    196     $selected_post_connector  = isset($existing_post_connectors[$connector_to_use]) ? $existing_post_connectors[$connector_to_use] : NULL; 
    197  
    198     if($selected_post_connector == null) { 
    199         return false; 
    200     } 
    201  
    202     // Remove deleted field groups 
    203     if (!$args["include_deleted"]) { 
    204  
    205         $arr_field_groups_to_keep = array(); 
    206         foreach ($selected_post_connector["field_groups"] as $one_field_group_id => $one_field_group) { 
    207  
    208             if ($one_field_group["deleted"]) continue; 
    209  
    210             $arr_field_groups_to_keep[$one_field_group_id] = $one_field_group; 
    211  
    212         } 
    213         $selected_post_connector["field_groups"] = $arr_field_groups_to_keep; 
    214     } 
    215  
    216     // Do stuff 
    217     foreach ($selected_post_connector["field_groups"] as $one_field_group) { // one_field_group = name, deleted, context, priority, id 
    218  
    219         // now get all fields for that fieldgroup and join them together 
    220         $selected_post_connector["field_groups"][$one_field_group["id"]] = array_merge($selected_post_connector["field_groups"][$one_field_group["id"]], $field_groups[$one_field_group["id"]]); 
    221  
    222         // loop through all fields within this field group 
    223         // now find out how many times this field group has been added 
    224         // can be zero, 1 and several (if field group is repeatable) 
    225         $num_added_field_groups = 0; 
    226  
    227         while (get_post_meta($post_id, "_simple_fields_fieldGroupID_{$one_field_group["id"]}_fieldID_added_numInSet_{$num_added_field_groups}", true)) { 
    228             $num_added_field_groups++; 
    229         } 
    230          
    231         // Field groups should only be allowed to be 0 if the group is repeatable 
    232         if ($num_added_field_groups == 0 && (isset($one_field_group['repeatable']) && !$one_field_group['repeatable']) ) { 
    233             $num_added_field_groups++; 
    234         } 
    235  
    236         // now fetch the stored values, one field at a time 
    237         // echo "<br>num_added_field_groups: $num_added_field_groups"; 
    238         // for repeatable field groups num_added_field_groups is the number of added field groups 
    239         for ($num_in_set = 0; $num_in_set < $num_added_field_groups; $num_in_set++) { 
    240  
    241             // fetch value for each field 
    242             foreach ($selected_post_connector["field_groups"][$one_field_group["id"]]["fields"] as $one_field_id => $one_field_value) { 
    243  
    244 #echo "<br>num in set: $num_in_set"; 
    245 #sf_d($one_field_value); 
    246  
    247                 $custom_field_key = "_simple_fields_fieldGroupID_{$one_field_group["id"]}_fieldID_{$one_field_id}_numInSet_{$num_in_set}"; 
    248 #echo "<br>custom field key: $custom_field_key"; 
    249  
    250                 $saved_value = get_post_meta($post_id, $custom_field_key, true); // empty string if does not exist 
    251  
    252                 if ($one_field_value["type"] == "textarea") { 
    253                     $match_count = preg_match_all('/http:\/\/[a-z0-9A-Z\.]+[a-z0-9A-Z\.\/%&=\?\-_#]+/i', $saved_value, $match); 
    254                     if ($match_count) { 
    255                         $links=$match[0]; 
    256                         for ($j=0;$j<$match_count;$j++) { 
    257                             if (strpos($saved_value, 'href="'.$links[$j].'"') === false && strpos($saved_value, "href='".$links[$j]."'") === false) { 
    258                                 $attr['discover'] = (apply_filters('embed_oembed_discover', false)) ? true : false; 
    259                                 $oembed_html = wp_oembed_get($links[$j], $attr); 
    260                                 // If there was a result, oembed the link 
    261                                 if ($oembed_html) { 
    262                                     $saved_value = str_replace($links[$j], apply_filters('embed_oembed_html', $oembed_html, $links[$j], $attr), $saved_value); 
     187    $cache_key = 'simple_fields_get_all_fields_and_values_for_post_' . $post_id . json_encode($args); 
     188    $selected_post_connector = wp_cache_get( $cache_key ); 
     189 
     190    if (FALSE === $selected_post_connector) { 
     191 
     192        $defaults = array( 
     193            "include_deleted" => TRUE 
     194        ); 
     195        $args = wp_parse_args($args, $defaults); 
     196     
     197        global $sf; 
     198        $post                     = get_post($post_id); 
     199        $connector_to_use         = $sf->get_selected_connector_for_post($post); 
     200        $existing_post_connectors = $sf->get_post_connectors(); 
     201        $field_groups             = $sf->get_field_groups(); 
     202        $selected_post_connector  = isset($existing_post_connectors[$connector_to_use]) ? $existing_post_connectors[$connector_to_use] : NULL; 
     203     
     204        if($selected_post_connector == null) { 
     205            return false; 
     206        } 
     207     
     208        // Remove deleted field groups 
     209        if (!$args["include_deleted"]) { 
     210     
     211            $arr_field_groups_to_keep = array(); 
     212            foreach ($selected_post_connector["field_groups"] as $one_field_group_id => $one_field_group) { 
     213     
     214                if ($one_field_group["deleted"]) continue; 
     215     
     216                $arr_field_groups_to_keep[$one_field_group_id] = $one_field_group; 
     217     
     218            } 
     219            $selected_post_connector["field_groups"] = $arr_field_groups_to_keep; 
     220        } 
     221     
     222        // Do stuff 
     223        foreach ($selected_post_connector["field_groups"] as $one_field_group) { // one_field_group = name, deleted, context, priority, id 
     224     
     225            // now get all fields for that fieldgroup and join them together 
     226            $selected_post_connector["field_groups"][$one_field_group["id"]] = array_merge($selected_post_connector["field_groups"][$one_field_group["id"]], $field_groups[$one_field_group["id"]]); 
     227     
     228            // loop through all fields within this field group 
     229            // now find out how many times this field group has been added 
     230            // can be zero, 1 and several (if field group is repeatable) 
     231            $num_added_field_groups = 0; 
     232     
     233            while (get_post_meta($post_id, "_simple_fields_fieldGroupID_{$one_field_group["id"]}_fieldID_added_numInSet_{$num_added_field_groups}", true)) { 
     234                $num_added_field_groups++; 
     235            } 
     236             
     237            // Field groups should only be allowed to be 0 if the group is repeatable 
     238            if ($num_added_field_groups == 0 && (isset($one_field_group['repeatable']) && !$one_field_group['repeatable']) ) { 
     239                $num_added_field_groups++; 
     240            } 
     241     
     242            // now fetch the stored values, one field at a time 
     243            // echo "<br>num_added_field_groups: $num_added_field_groups"; 
     244            // for repeatable field groups num_added_field_groups is the number of added field groups 
     245            for ($num_in_set = 0; $num_in_set < $num_added_field_groups; $num_in_set++) { 
     246     
     247                // fetch value for each field 
     248                foreach ($selected_post_connector["field_groups"][$one_field_group["id"]]["fields"] as $one_field_id => $one_field_value) { 
     249     
     250    #echo "<br>num in set: $num_in_set"; 
     251    #sf_d($one_field_value); 
     252     
     253                    $custom_field_key = "_simple_fields_fieldGroupID_{$one_field_group["id"]}_fieldID_{$one_field_id}_numInSet_{$num_in_set}"; 
     254    #echo "<br>custom field key: $custom_field_key"; 
     255     
     256                    $saved_value = get_post_meta($post_id, $custom_field_key, true); // empty string if does not exist 
     257     
     258                    if ($one_field_value["type"] == "textarea") { 
     259                        $match_count = preg_match_all('/http:\/\/[a-z0-9A-Z\.]+[a-z0-9A-Z\.\/%&=\?\-_#]+/i', $saved_value, $match); 
     260                        if ($match_count) { 
     261                            $links=$match[0]; 
     262                            for ($j=0;$j<$match_count;$j++) { 
     263                                if (strpos($saved_value, 'href="'.$links[$j].'"') === false && strpos($saved_value, "href='".$links[$j]."'") === false) { 
     264                                    $attr['discover'] = (apply_filters('embed_oembed_discover', false)) ? true : false; 
     265                                    $oembed_html = wp_oembed_get($links[$j], $attr); 
     266                                    // If there was a result, oembed the link 
     267                                    if ($oembed_html) { 
     268                                        $saved_value = str_replace($links[$j], apply_filters('embed_oembed_html', $oembed_html, $links[$j], $attr), $saved_value); 
     269                                    } 
    263270                                } 
    264271                            } 
    265272                        } 
    266273                    } 
    267                 } 
    268  
    269                 $selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]["saved_values"][$num_in_set] = $saved_value; 
    270                 $selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]["meta_keys"][$num_in_set] = $custom_field_key; 
    271  
    272 #if (strpos($custom_field_key, "_simple_fields_fieldGroupID_23_fieldID_2_numInSet_") !== FALSE) { // name/string 
    273 #if (strpos($custom_field_key, "_simple_fields_fieldGroupID_23_fieldID_2_numInSet_") !== FALSE) { // file/id 
    274     #sf_d($custom_field_key); 
    275     #echo "<br>saved value for $custom_field_key: ";var_dump($saved_value); 
    276     #sf_d($selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]); 
    277 #} 
    278  
    279  
    280             } 
    281         } 
    282  
    283     } 
    284     #sf_d($selected_post_connector); 
     274     
     275                    $selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]["saved_values"][$num_in_set] = $saved_value; 
     276                    $selected_post_connector["field_groups"][$one_field_group["id"]]["fields"][$one_field_id]["meta_keys"][$num_in_set] = $custom_field_key; 
     277 
     278                } 
     279            } 
     280     
     281        } 
     282        wp_cache_set( $cache_key, $selected_post_connector ); 
     283    } 
     284 
    285285    return $selected_post_connector; 
    286286} 
     
    436436    #sf_d($field_groups); 
    437437    $highest_id = 0; 
    438  
     438     
    439439    // First get the id of the field group we are adding. Existing or highest new. 
    440440    // Loop through all existing field groups to see if the field group we are adding already exists 
     
    642642    } // if passed as arg field group has fields 
    643643 
    644 #sf_d($field_groups[$field_group_id]); 
    645 #sf_d($fields); 
     644    #sf_d($field_groups[$field_group_id]); 
     645    #sf_d($fields); 
     646 
     647    wp_cache_delete( "simple_fields_groups" ); 
    646648    update_option("simple_fields_groups", $field_groups); 
    647649 
     
    650652} 
    651653 
     654/** 
     655 * @todo: documentation 
     656 */ 
    652657function simple_fields_register_post_connector($unique_name = "", $new_post_connector = array()) { 
    653658 
     
    752757    } 
    753758 
     759    wp_cache_delete("simple_fields_post_connectors"); 
    754760    update_option("simple_fields_post_connectors", $post_connectors); 
    755761 
     
    806812    } 
    807813 
     814    wp_cache_delete("simple_fields_post_type_defaults"); 
    808815    update_option("simple_fields_post_type_defaults", $post_type_defaults); 
    809816 
     
    829836function simple_fields_set_value($post_id, $field_slug, $new_numInSet = null, $new_post_connector = null, $new_value) { 
    830837 
     838    /* 
     839    echo "<br><br>Setting field with slug " . $field_slug . " for post " . $post_id; 
     840    echo "<br>value to set is: " . $new_value; 
     841    // */ 
     842 
    831843    global $sf; 
    832844 
     
    857869    foreach ($post_connector_info["field_groups"] as $one_field_group) { 
    858870 
     871        // check number of added field groups 
     872        $num_added_field_groups = 0;  
     873        while (get_post_meta($post_id, "_simple_fields_fieldGroupID_{$field_group_id}_fieldID_added_numInSet_{$num_added_field_groups}", true)) { 
     874            $num_added_field_groups++; 
     875        } 
     876 
    859877        // Loop the fields in this field group 
    860878        foreach ($one_field_group["fields"] as $one_field_group_field) {  
     
    870888                $field_id = $one_field_group_field["id"]; 
    871889 
    872                 // check number of added field groups 
    873                 $num_added_field_groups = 0;  
    874                 while (get_post_meta($post_id, "_simple_fields_fieldGroupID_{$field_group_id}_fieldID_added_numInSet_{$num_added_field_groups}", true)) { 
    875                     $num_added_field_groups++; 
    876                 } 
    877  
    878                 if (empty($new_numInSet)) { 
     890                if (!empty($new_numInSet)) { 
    879891                    $num_in_set = $new_numInSet; 
    880892                } else { 
    881893                    $num_in_set = $num_added_field_groups;                   
    882894                } 
    883  
     895                 
    884896                update_post_meta($post_id, "_simple_fields_fieldGroupID_{$field_group_id}_fieldID_{$field_id}_numInSet_{$num_in_set}", $new_value); 
    885897                update_post_meta($post_id, "_simple_fields_fieldGroupID_{$field_group_id}_fieldID_added_numInSet_{$num_in_set}", 1); 
     898                update_post_meta($post_id, "_simple_fields_been_saved", 1); 
    886899 
    887900                // value updated. exit function. 
     
    9931006    } 
    9941007 
     1008    $parsed_options = wp_parse_args($options); 
     1009 
    9951010    // Loop through the field groups that this post connector has and locate the field_slug we are looking for 
    9961011    foreach ($post_connector_info["field_groups"] as $one_field_group) { 
     
    10121027                // extended_output=1&file[extended_output]=1&file[anotherOptions]=yepp indeed 
    10131028                // where the first arg is for all fields, and the one with square-brackets are for specific slugs 
    1014                 $parsed_options = wp_parse_args($options);               
    10151029                $parsed_options_for_this_field = array(); 
    10161030 
     
    11641178} 
    11651179 
     1180/** 
     1181 * Returns allt the values in a field group 
     1182 * It's a shortcut to running simple_fields_value(slugs) with all slugs already entered 
     1183 * Depending if the field group is repeatable or not, simple_field_value or simple_fields_values will be used 
     1184 * @param mixed $field_group_id_or_slug 
     1185 * @return mixed, but probably array, depending on how many field the group has (just one field, and not repeatable = no array for you!) 
     1186 */ 
     1187function simple_fields_fieldgroup($field_group_id_or_slug, $post_id = NULL, $options = array()) { 
     1188 
     1189    if (!is_numeric($post_id)) { 
     1190        global $post; 
     1191        $post_id = $post->ID; 
     1192    } 
     1193 
     1194    $cache_key = "simple_fields_fieldgroup_" . $field_group_id_or_slug . "_" . $post_id . json_encode($options); 
     1195    $values = wp_cache_get( $cache_key ); 
     1196    if (FALSE === $values) { 
     1197     
     1198        global $sf; 
     1199        $field_group = $sf->get_field_group_by_slug($field_group_id_or_slug); 
     1200     
     1201        $arr_fields = array(); 
     1202        foreach ($field_group["fields"] as $one_field) { 
     1203            if ($one_field["deleted"]) continue; 
     1204            $arr_fields[] = trim($one_field["slug"]); 
     1205        } 
     1206         
     1207        $str_field_slugs = join(",", $arr_fields); 
     1208        if ($field_group["repeatable"]) { 
     1209            $values = simple_fields_values($str_field_slugs, $post_id); 
     1210        } else { 
     1211            $values = simple_fields_value($str_field_slugs, $post_id); 
     1212        } 
     1213        wp_cache_set( $cache_key, $values ); 
     1214    } 
     1215    return $values; 
     1216} 
     1217 
     1218 
    11661219/* 
    11671220@todo: add simple_fields_fieldgroup_values() as smart alias to  
  • simple-fields/trunk/readme.txt

    r615285 r617428  
    55Requires at least: 3.3.1 
    66Tested up to: 3.4.2 
    7 Stable tag: 1.0.4 
     7Stable tag: 1.0.5 
    88 
    99Add more advanced custom fields types to your edit post page. Field can be of several types, including textarea, checkbox, radio buttons, files and color picker. 
     
    164164 
    165165== Changelog == 
     166 
     167#### Version 1.0.5 
     168- Added: field group slug to field group wrapper css + field wrapper css on edit post screen, so you can style different field groups differently. 
     169- Added: new method: get_field_group(): returns an array with info about a field group by using id or slug 
     170- Added: new function: simple_fields_fieldgroup(). Works like simple_fields_value(s) but for a complete fieldgroup.  
     171Pretty good "shortcut" when you want to get all the field values in a field group. 
     172- Added: new method get_field_by_slug. Returns a field from a fieldgroup using their slugs. 
     173- Fixed: Added wp_cache to some very commonly used functions. Quick tests with Xdebug shows a noticable faster performance. 
     174- Changed: method get_field_groups() adds a key with name field_group with some info about the field group that the field belongs to.  
     175Useful since sometimes when you use for example get_field_by_slug() to get a single field, you want to know some basic info about the  
     176field group it belongs to, like the id or slug. 
     177- Changed: function sf_d also shows if a variable is a boolean. 
    166178 
    167179#### Version 1.0.4 
  • simple-fields/trunk/scripts.js

    r615285 r617428  
    302302                 
    303303                // Fire event so plugins can listen to the add-button 
    304                 //simple_fields.trigger("field_group_added"); 
    305                 //simple_fields.dispatchEvent(); 
    306304                $(document.body).trigger("field_group_added", $response); 
    307305            }); 
  • simple-fields/trunk/simple_fields.php

    r615285 r617428  
    44Plugin URI: http://simple-fields.com 
    55Description: Add groups of textareas, input-fields, dropdowns, radiobuttons, checkboxes and files to your edit post screen. 
    6 Version: 1.0.4 
     6Version: 1.0.5 
    77Author: Pär Thernström 
    88Author URI: http://eskapism.se/ 
     
    5252        define( "SIMPLE_FIELDS_URL", plugins_url(basename(dirname(__FILE__))). "/"); 
    5353        define( "SIMPLE_FIELDS_NAME", "Simple Fields"); 
    54         define( "SIMPLE_FIELDS_VERSION", "1.0.4"); 
     54        define( "SIMPLE_FIELDS_VERSION", "1.0.5"); 
    5555 
    5656        load_plugin_textdomain( 'simple-fields', null, basename(dirname(__FILE__)).'/languages/'); 
     
    417417        $repeatable = (bool) $current_field_group["repeatable"]; 
    418418        $field_group_css = "simple-fields-fieldgroup-$field_group_id"; 
     419        /* if (isset($current_field_group["slug"]) && !empty($current_field_group["slug"])) { 
     420            $field_group_css .= " simple-fields-fieldgroup-" . $current_field_group["slug"]; 
     421        }*/ 
    419422 
    420423        ?> 
     
    441444                $field_class = "simple-fields-fieldgroups-field-{$field_group_id}-{$field_id} "; 
    442445                $field_class .= "simple-fields-fieldgroups-field-type-" . $field["type"]; 
     446                if (isset($field["slug"]) && !empty($field["slug"])) { 
     447                    $field_class .= " simple-fields-fieldgroups-field-slug-" . $field["slug"]; 
     448                } 
    443449     
    444450                $custom_field_key = "_simple_fields_fieldGroupID_{$field_group_id}_fieldID_{$field_id}_numInSet_{$num_in_set}"; 
     
    562568                        $class = ""; 
    563569                        if ($description) { 
    564                             $class = "simple-fields-metabox-field-with-description"; 
     570                            $class = "simple-fields-metabox-field-file-with-description"; 
    565571                        } 
    566572                        echo "<div class='simple-fields-metabox-field-file $class'>"; 
     
    9971003        // try until returns empty 
    9981004        $num_added_field_groups = 0; 
    999         $num_added_field_groups_css = ""; 
    10001005 
    10011006        while (get_post_meta($post_id, "_simple_fields_fieldGroupID_{$post_connector_field_id}_fieldID_added_numInSet_{$num_added_field_groups}", true)) { 
    10021007            $num_added_field_groups++; 
    1003             $num_added_field_groups_css = "simple-fields-meta-box-field-group-wrapper-has-fields-added"; 
    1004         } 
    1005  
     1008        } 
     1009         
     1010        $num_added_field_groups_css = ""; 
     1011        if ($num_added_field_groups > 0) $num_added_field_groups_css = "simple-fields-meta-box-field-group-wrapper-has-fields-added"; 
     1012 
     1013        $field_group_slug_css = ""; 
     1014        if (isset($current_field_group["slug"]) && !empty($current_field_group["slug"])) { 
     1015            $field_group_slug_css = "simple-fields-meta-box-field-group-wrapper-slug-" . $current_field_group["slug"]; 
     1016        } 
    10061017      
    1007         echo "<div class='simple-fields-meta-box-field-group-wrapper $num_added_field_groups_css'>"; 
     1018        echo "<div class='simple-fields-meta-box-field-group-wrapper $num_added_field_groups_css $field_group_slug_css'>"; 
    10081019        echo "<input type='hidden' name='simple-fields-meta-box-field-group-id' value='$post_connector_field_id' />"; 
    10091020      
     
    10221033                </div> 
    10231034            "; 
     1035 
     1036            // Start of list with adeed field groups 
    10241037            echo "<ul class='simple-fields-metabox-field-group-fields simple-fields-metabox-field-group-fields-repeatable'>"; 
    10251038      
    1026             //var_dump( get_post_meta($post_id, "_simple_fields_fieldGroupID_{$post_connector_field_id}_fieldID_added_numInSet_0", true) ); 
    1027             //echo "num_added_field_groups: $num_added_field_groups"; 
    10281039            // now add them. ooooh my, this is fancy stuff. 
    10291040            $use_defaults = null; 
     
    10321043            } 
    10331044      
     1045            // end list with added field groups 
    10341046            echo "</ul>"; 
    10351047 
     
    10631075     */ 
    10641076    function get_post_connectors() { 
    1065         $connectors = get_option("simple_fields_post_connectors"); 
    1066         if ($connectors === FALSE) $connectors = array(); 
    1067      
    1068         // calculate number of active field groups 
    1069         // @todo: check this a bit more, does not seem to be any deleted groups. i thought i saved the deletes ones to, but with deleted flag set 
    1070         foreach (array_keys($connectors) as $i) { 
    1071                      
    1072                     // Sanity check the connector id 
    1073                     if (empty($connectors[$i]["id"]) && empty($connectors[$i]["deleted"])) { 
    1074                          
    1075                         // Found field group without id, let's try to repair it 
    1076                         $highest_id = 0; 
    1077                         foreach($connectors as $one_connector) { 
    1078                             if ($one_connector["id"] > $highest_id) 
    1079                                 $highest_id = $one_connector["id"]; 
    1080                             if ($one_connector["id"] === $i) 
    1081                                 $id_already_exists = true; 
    1082                         } 
    1083                          
    1084                         if ($i > 0 && !$id_already_exists) { 
    1085                             // If the array key is larger than 0 and 
    1086                             // not used as id by any other connector, 
    1087                             // then it's the perfect id 
    1088                             $connectors[$i]["id"] = $i; 
    1089                         } else { 
    1090                             // The array key is either less than or equal to 0, 
    1091                             // or another connector is using it as id. In any case, 
    1092                             // let's treat it as a new connector and give it a new id. 
    1093                             $new_id = $highest_id + 1; 
    1094                             $connectors[$i]["id"] = $new_id; 
    1095                              
    1096                             // Now make sure the array key matches the new id 
    1097                             $connectors[$new_id] = $connectors[$i]; 
    1098                             unset($connectors[$i]); 
    1099                             $i = $new_id; 
    1100                         } 
    1101                          
    1102                     } 
    1103          
    1104             // compatibility fix key vs slug 
    1105             if (isset($connectors[$i]["slug"]) && $connectors[$i]["slug"]) { 
    1106                 $connectors[$i]["key"] = $connectors[$i]["slug"]; 
    1107             } else if (isset($connectors[$i]["key"]) && $connectors[$i]["key"]) { 
    1108                 $connectors[$i]["slug"] = $connectors[$i]["key"]; 
    1109             } 
    1110          
    1111             $num_fields_in_group = 0; 
    1112             if (isset($connectors[$i]["field_groups"]) && is_array($connectors[$i]["field_groups"])) { 
    1113                 foreach ($connectors[$i]["field_groups"] as $one_group) { 
    1114                     if (isset($one_group["deleted"]) && !$one_group["deleted"]) $num_fields_in_group++; 
    1115                 } 
    1116             } 
    1117             $connectors[$connectors[$i]["id"]]["field_groups_count"] = $num_fields_in_group; 
     1077 
     1078        // use wp_cache 
     1079        $connectors = wp_cache_get( 'simple_fields_post_connectors' ); 
     1080        if (FALSE === $connectors) { 
     1081 
     1082            $connectors = get_option("simple_fields_post_connectors"); 
     1083     
     1084            if ($connectors === FALSE) $connectors = array(); 
     1085         
     1086            // calculate number of active field groups 
     1087            // @todo: check this a bit more, does not seem to be any deleted groups. i thought i saved the deletes ones to, but with deleted flag set 
     1088            foreach (array_keys($connectors) as $i) { 
     1089                         
     1090                        // Sanity check the connector id 
     1091                        if (empty($connectors[$i]["id"]) && empty($connectors[$i]["deleted"])) { 
     1092                             
     1093                            // Found field group without id, let's try to repair it 
     1094                            $highest_id = 0; 
     1095                            foreach($connectors as $one_connector) { 
     1096                                if ($one_connector["id"] > $highest_id) 
     1097                                    $highest_id = $one_connector["id"]; 
     1098                                if ($one_connector["id"] === $i) 
     1099                                    $id_already_exists = true; 
     1100                            } 
     1101                             
     1102                            if ($i > 0 && !$id_already_exists) { 
     1103                                // If the array key is larger than 0 and 
     1104                                // not used as id by any other connector, 
     1105                                // then it's the perfect id 
     1106                                $connectors[$i]["id"] = $i; 
     1107                            } else { 
     1108                                // The array key is either less than or equal to 0, 
     1109                                // or another connector is using it as id. In any case, 
     1110                                // let's treat it as a new connector and give it a new id. 
     1111                                $new_id = $highest_id + 1; 
     1112                                $connectors[$i]["id"] = $new_id; 
     1113                                 
     1114                                // Now make sure the array key matches the new id 
     1115                                $connectors[$new_id] = $connectors[$i]; 
     1116                                unset($connectors[$i]); 
     1117                                $i = $new_id; 
     1118                            } 
     1119                             
     1120                        } 
     1121             
     1122                // compatibility fix key vs slug 
     1123                if (isset($connectors[$i]["slug"]) && $connectors[$i]["slug"]) { 
     1124                    $connectors[$i]["key"] = $connectors[$i]["slug"]; 
     1125                } else if (isset($connectors[$i]["key"]) && $connectors[$i]["key"]) { 
     1126                    $connectors[$i]["slug"] = $connectors[$i]["key"]; 
     1127                } 
     1128             
     1129                $num_fields_in_group = 0; 
     1130                if (isset($connectors[$i]["field_groups"]) && is_array($connectors[$i]["field_groups"])) { 
     1131                    foreach ($connectors[$i]["field_groups"] as $one_group) { 
     1132                        if (isset($one_group["deleted"]) && !$one_group["deleted"]) $num_fields_in_group++; 
     1133                    } 
     1134                } 
     1135                $connectors[$connectors[$i]["id"]]["field_groups_count"] = $num_fields_in_group; 
     1136            } 
     1137             
     1138            wp_cache_set( 'simple_fields_post_connectors', $connectors ); 
     1139             
    11181140        } 
    11191141     
     
    11221144 
    11231145    function get_post_type_defaults() { 
    1124         return (array) get_option("simple_fields_post_type_defaults"); 
     1146 
     1147        $post_type_defaults = wp_cache_get( 'simple_fields_post_type_defaults' ); 
     1148        if (FALSE === $post_type_defaults) { 
     1149            $post_type_defaults = (array) get_option("simple_fields_post_type_defaults"); 
     1150            wp_cache_set( 'simple_fields_post_type_defaults', $post_type_defaults );         
     1151        } 
     1152 
     1153        return $post_type_defaults; 
     1154 
    11251155    } 
    11261156     
     
    11311161     */ 
    11321162    function get_field_groups() { 
    1133  
    1134         $field_groups = get_option("simple_fields_groups"); 
    1135         if ($field_groups === FALSE) $field_groups = array(); 
    1136          
    1137         // Calculate the number of active fields 
    1138         // And some other things 
    1139         foreach (array_keys($field_groups) as $i) { 
     1163         
     1164        $field_groups = wp_cache_get( 'simple_fields_groups' ); 
     1165        if (FALSE === $field_groups) { 
     1166             
     1167            $field_groups = get_option("simple_fields_groups"); 
     1168            if ($field_groups === FALSE) $field_groups = array(); 
     1169             
     1170            // Calculate the number of active fields 
     1171            // And some other things 
     1172            foreach (array_keys($field_groups) as $i) { 
     1173                         
     1174                // Sanity check the field group id 
     1175                if (empty($field_groups[$i]["id"]) && empty($field_groups[$i]["deleted"])) { 
    11401176                     
    1141                     // Sanity check the field group id 
    1142                     if (empty($field_groups[$i]["id"]) && empty($field_groups[$i]["deleted"])) { 
     1177                    // Found field group without id, let's try to repair it 
     1178                    $highest_id = 0; 
     1179                    foreach($field_groups as $one_field_group) { 
     1180                        if ($one_field_group["id"] > $highest_id) 
     1181                            $highest_id = $one_field_group["id"]; 
     1182                        if ($one_field_group["id"] === $i) 
     1183                            $id_already_exists = true; 
     1184                    } 
     1185                     
     1186                    if ($i > 0 && !$id_already_exists) { 
     1187                        // If the array key is larger than 0 and 
     1188                        // not used as id by any other field group, 
     1189                        // then it's the perfect id 
     1190                        $field_groups[$i]["id"] = $i; 
     1191                    } else { 
     1192                        // The array key is either less than or equal to 0, 
     1193                        // or another field group is using it as id. In any case, 
     1194                        // let's treat it as a new field group and give it a new id. 
     1195                        $new_id = $highest_id + 1; 
     1196                        $field_groups[$i]["id"] = $new_id; 
    11431197                         
    1144                         // Found field group without id, let's try to repair it 
    1145                         $highest_id = 0; 
    1146                         foreach($field_groups as $one_field_group) { 
    1147                             if ($one_field_group["id"] > $highest_id) 
    1148                                 $highest_id = $one_field_group["id"]; 
    1149                             if ($one_field_group["id"] === $i) 
    1150                                 $id_already_exists = true; 
    1151                         } 
    1152                          
    1153                         if ($i > 0 && !$id_already_exists) { 
    1154                             // If the array key is larger than 0 and 
    1155                             // not used as id by any other field group, 
    1156                             // then it's the perfect id 
    1157                             $field_groups[$i]["id"] = $i; 
    1158                         } else { 
    1159                             // The array key is either less than or equal to 0, 
    1160                             // or another field group is using it as id. In any case, 
    1161                             // let's treat it as a new field group and give it a new id. 
    1162                             $new_id = $highest_id + 1; 
    1163                             $field_groups[$i]["id"] = $new_id; 
    1164                              
    1165                             // Now make sure the array key matches the new id 
    1166                             $field_groups[$new_id] = $field_groups[$i]; 
    1167                             unset($field_groups[$i]); 
    1168                             $i = $new_id; 
    1169                         } 
    1170                          
     1198                        // Now make sure the array key matches the new id 
     1199                        $field_groups[$new_id] = $field_groups[$i]; 
     1200                        unset($field_groups[$i]); 
     1201                        $i = $new_id; 
    11711202                    } 
    1172  
    1173             // Make sure we have both key and slug set to same. key = old name for slug 
    1174             if (isset($field_groups[$i]["slug"]) && $field_groups[$i]["slug"]) { 
    1175                 $field_groups[$i]["key"] = $field_groups[$i]["slug"]; 
    1176             } else if (isset($field_groups[$i]["key"]) && $field_groups[$i]["key"]) { 
    1177                 $field_groups[$i]["slug"] = $field_groups[$i]["key"]; 
    1178             } 
    1179  
    1180             $num_active_fields = 0; 
    1181             foreach ($field_groups[$i]["fields"] as $one_field) { 
    1182                 if (!$one_field["deleted"]) $num_active_fields++; 
    1183             } 
    1184             $field_groups[$i]["fields_count"] = $num_active_fields; 
    1185         } 
    1186          
     1203                     
     1204                } 
     1205     
     1206                // Make sure we have both key and slug set to same. key = old name for slug 
     1207                if (isset($field_groups[$i]["slug"]) && $field_groups[$i]["slug"]) { 
     1208                    $field_groups[$i]["key"] = $field_groups[$i]["slug"]; 
     1209                } else if (isset($field_groups[$i]["key"]) && $field_groups[$i]["key"]) { 
     1210                    $field_groups[$i]["slug"] = $field_groups[$i]["key"]; 
     1211                } 
     1212     
     1213                $num_active_fields = 0; 
     1214                foreach ($field_groups[$i]["fields"] as $one_field) { 
     1215                    if (!$one_field["deleted"]) $num_active_fields++; 
     1216                } 
     1217                $field_groups[$i]["fields_count"] = $num_active_fields; 
     1218                 
     1219                // Also add some info about the field group is belongs to 
     1220                // This can be useful to have if you're only fetching a single field 
     1221                // but need to do something with that fields field group  
     1222                // (like getting the id to calcualte that custom field meta key to use) 
     1223                foreach ($field_groups[$i]["fields"] as $one_field_id => $one_field) { 
     1224 
     1225                    if (!isset($field_groups[$i]["fields"][$one_field_id]["field_group"])) { 
     1226 
     1227                        $field_groups[$i]["fields"][$one_field_id]["field_group"] = array( 
     1228                            "id"           => $field_groups[$i]["id"], 
     1229                            "name"         => $field_groups[$i]["name"], 
     1230                            "slug"         => $field_groups[$i]["id"], 
     1231                            "description"  => $field_groups[$i]["description"], 
     1232                            "repeatable"   => $field_groups[$i]["repeatable"], 
     1233                            "fields_count" => $field_groups[$i]["fields_count"] 
     1234                        ); 
     1235                         
     1236                    } 
     1237                     
     1238                } 
     1239            } 
     1240 
     1241            wp_cache_set( 'simple_fields_groups', $field_groups ); 
     1242             
     1243        } 
     1244 
    11871245        return $field_groups; 
    11881246         
     
    33183376        return $return_field_value; 
    33193377    } 
     3378 
     3379    /** 
     3380     * Gets a field group using it's id. Deleted field groups are not included 
     3381     * @since 1.0.5 
     3382     * @param string slug of field group (or id, actually) 
     3383     * @return mixed array with field group info if field groups exists, false if does not exist 
     3384     */ 
     3385    function get_field_group_by_slug($field_group_slug) { 
     3386         
     3387        $cache_key = "get_field_group_by_slug_" . $field_group_slug; 
     3388        $return_val = wp_cache_get( $cache_key );        
     3389        if (FALSE === $return_val) { 
     3390         
     3391            $field_groups = $this->get_field_groups(); 
     3392             
     3393            if (!is_numeric($field_group_slug)) { 
     3394     
     3395                // not number so look for field group with this variable as slug 
     3396                foreach ($field_groups as $one_field_group) { 
     3397                    if ($one_field_group["deleted"]) continue; 
     3398                    if ($one_field_group["slug"] == $field_group_slug) { 
     3399                        wp_cache_set( $cache_key, $one_field_group ); 
     3400                        return $one_field_group; 
     3401                    } 
     3402                } 
     3403                 
     3404                wp_cache_set( $cache_key, FALSE ); 
     3405                return FALSE; 
     3406     
     3407            } else { 
     3408     
     3409                // look for group using id 
     3410                if (isset($field_groups[$field_group_slug]) && is_array($field_groups[$field_group_slug]) && !$field_groups[$field_group_slug]["deleted"]) { 
     3411                    wp_cache_set( $cache_key, $field_groups[$field_group_slug] ); 
     3412                    return $field_groups[$field_group_slug]; 
     3413                } else { 
     3414                    wp_cache_set( $cache_key, FALSE ); 
     3415                    return FALSE; 
     3416                } 
     3417                 
     3418            } 
     3419                 
     3420        } 
     3421 
     3422        return $return_val; 
     3423 
     3424    } 
     3425 
     3426 
     3427    /** 
     3428     * Returns a field from a fieldgroup using their slugs 
     3429     * 
     3430     * @since 1.0.5 
     3431     * @param string $field_slug 
     3432     * @param string $fieldgroup_slug 
     3433     * @return mixed Array with field info if field is found, false if not found 
     3434     */ 
     3435    function get_field_by_slug($field_slug = "", $fieldgroup_slug = "") { 
     3436 
     3437        $field_group = $this->get_field_group_by_slug($fieldgroup_slug); 
     3438        if (!$field_group) return FALSE; 
     3439         
     3440        foreach ($field_group["fields"] as $one_field) { 
     3441            if ($field_slug === $one_field["slug"]) { 
     3442                return $one_field; 
     3443            } 
     3444        } 
     3445         
     3446        // No field with that slug found 
     3447        return FALSE; 
     3448    } 
     3449 
    33203450     
    33213451} // end class 
  • simple-fields/trunk/styles.css

    r615285 r617428  
    410410    margin-right: 0; 
    411411} 
    412 #side-sortables .simple-fields-metabox-field-with-description { 
     412#side-sortables .simple-fields-metabox-field-file-with-description { 
    413413    height: 83px; 
    414414} 
     
    476476    height: 50px; 
    477477} 
    478 .simple-fields-metabox-field-with-description { 
     478.simple-fields-metabox-field-file-with-description { 
    479479    height: 70px; 
    480480} 
    481 .simple-fields-metabox-field-with-description .simple-fields-metabox-field-description { 
     481.simple-fields-metabox-field-file-with-description .simple-fields-metabox-field-description { 
    482482    position: absolute; 
    483483    left: 0; 
Note: See TracChangeset for help on using the changeset viewer.