WordPress.org

Plugin Directory

Changeset 612995


Ignore:
Timestamp:
10/16/12 01:37:15 (18 months ago)
Author:
sc0ttkclark
Message:

Pods 2.0.4

Location:
pods/trunk
Files:
1 deleted
45 edited

Legend:

Unmodified
Added
Removed
  • pods/trunk/classes/Pods.php

    r608119 r612995  
    108108     * @var 
    109109     */ 
    110     public $ui; 
     110    public $ui = array(); 
    111111 
    112112    /** 
     
    186186        // Sync Settings 
    187187        $this->data->page =& $this->page; 
     188        $this->data->limit =& $this->limit; 
    188189        $this->data->pagination =& $this->pagination; 
    189190        $this->data->search =& $this->search; 
     
    225226 
    226227    /** 
     228     * Whether a Pod item exists or not when using fetch() or construct with an ID or slug 
     229     * 
     230     * @return bool 
     231     * 
     232     * @since 2.0.0 
     233     */ 
     234    public function exists () { 
     235        if ( empty( $this->row ) ) 
     236            return false; 
     237 
     238        return true; 
     239    } 
     240 
     241    /** 
    227242     * Return an array of all rows returned from a find() call. 
    228243     * 
     
    288303     * @link http://podsframework.org/docs/display/ 
    289304     */ 
    290     public function display ( $name, $single = false ) { 
     305    public function display ( $name, $single = null ) { 
    291306        $defaults = array( 
    292307            'name' => $name, 
     
    301316            $params = (object) $defaults; 
    302317 
    303         $value = $this->field( $params, $single ); 
     318        $value = $this->field( $params ); 
    304319 
    305320        if ( false === $params->in_form && isset( $this->fields[ $params->name ] ) ) { 
     321            if ( 'pick' == $this->fields[ $params->name ][ 'type' ] && 'custom-simple' == $this->fields[ $params->name ][ 'pick_object' ] ) 
     322                $value = PodsForm::field_method( 'pick', 'simple_value', $value, $this->fields[ $params->name ] ); 
     323 
    306324            $value = PodsForm::display( 
    307325                $this->fields[ $params->name ][ 'type' ], 
     
    321339 
    322340    /** 
    323      * Return the value for a field. 
    324      * 
    325      * If you are getting a field for output in a theme, most of the time you will want to use display() instead. 
    326      * 
    327      * This function will return arrays for relationship and file fields. 
     341     * Return the raw output for a field If you want the raw value for use in PHP for custom manipulation, 
     342     * you will want to use field() instead. This function will automatically convert arrays into a 
     343     * list of text such as "Rick, John, and Gary" 
    328344     * 
    329345     * @param string|array $name The field name, or an associative array of parameters 
    330      * @param boolean $single (optional) For tableless fields, to return the whole array or the just the first item 
    331      * 
    332      * @return mixed|null Value returned depends on the field type, null if the field doesn't exist, false if no value returned for tableless fields 
    333      * @since 2.0.0 
    334      * @link http://podsframework.org/docs/field/ 
    335      */ 
    336     public function field ( $name, $single = false ) { 
     346     * @param boolean $single (optional) For tableless fields, to return an array or the first 
     347     * 
     348     * @return string|null|false The output from the field, null if the field doesn't exist, false if no value returned for tableless fields 
     349     * @since 2.0.0 
     350     * @link http://podsframework.org/docs/display/ 
     351     */ 
     352    public function raw ( $name, $single = null ) { 
    337353        $defaults = array( 
    338354            'name' => $name, 
    339355            'orderby' => null, 
    340356            'single' => $single, 
    341             'in_form' => false 
     357            'in_form' => false, 
     358            'raw' => true 
    342359        ); 
    343360 
     
    347364            $params = (object) $defaults; 
    348365 
     366        $value = $this->field( $params ); 
     367 
     368        return $value; 
     369    } 
     370 
     371    /** 
     372     * Return the value for a field. 
     373     * 
     374     * If you are getting a field for output in a theme, most of the time you will want to use display() instead. 
     375     * 
     376     * This function will return arrays for relationship and file fields. 
     377     * 
     378     * @param string|array $name The field name, or an associative array of parameters 
     379     * @param boolean $single (optional) For tableless fields, to return the whole array or the just the first item 
     380     * @param boolean $raw (optional) Whether to return the raw value, or to run through the field type's display method 
     381     * 
     382     * @return mixed|null Value returned depends on the field type, null if the field doesn't exist, false if no value returned for tableless fields 
     383     * @since 2.0.0 
     384     * @link http://podsframework.org/docs/field/ 
     385     */ 
     386    public function field ( $name, $single = null, $raw = false ) { 
     387        $defaults = array( 
     388            'name' => $name, 
     389            'orderby' => null, 
     390            'single' => $single, 
     391            'in_form' => false, 
     392            'raw' => $raw, 
     393            'deprecated' => false 
     394        ); 
     395 
     396        if ( is_array( $name ) || is_object( $name ) ) 
     397            $params = (object) array_merge( $defaults, (array) $name ); 
     398        else 
     399            $params = (object) $defaults; 
     400 
    349401        // Support old $orderby variable 
    350         if ( !is_bool( $params->single ) && empty( $params->orderby ) ) { 
     402        if ( null !== $params->single && !is_bool( $params->single ) && empty( $params->orderby ) ) { 
    351403            pods_deprecated( 'Pods::field', '2.0.0', 'Use $params[ \'orderby\' ] instead' ); 
    352404 
     
    355407        } 
    356408 
    357         $params->single = (boolean) $params->single; 
     409        if ( null !== $params->single ) 
     410            $params->single = (boolean) $params->single; 
     411 
     412        $single = $params->single; 
    358413 
    359414        if ( is_array( $params->name ) || strlen( $params->name ) < 1 ) 
     
    386441                $value = get_permalink( $this->id() ); 
    387442        } 
    388         elseif ( isset( $this->row[ $params->name ] ) ) 
     443        elseif ( isset( $this->row[ $params->name ] ) ) { 
     444            if ( !isset( $this->fields[ $params->name ] ) || 'boolean' == $this->fields[ $params->name ][ 'type' ] || in_array( $this->fields[ $params->name ][ 'type' ], $tableless_field_types ) ) 
     445                $params->raw = true; 
     446 
    389447            $value = $this->row[ $params->name ]; 
     448 
     449            if ( !is_array( $value ) && isset( $this->fields[ $params->name ] ) && 'pick' == $this->fields[ $params->name ][ 'type' ] && 'custom-simple' == $this->fields[ $params->name ][ 'pick_object' ] ) 
     450                $value = PodsForm::field_method( 'pick', 'simple_value', $value, $this->fields[ $params->name ], true ); 
     451        } 
    390452        else { 
    391453            $object_field_found = false; 
     
    420482 
    421483                $simple = false; 
     484                $simple_data = array(); 
    422485 
    423486                if ( isset( $this->fields[ $params->name ] ) ) { 
     
    428491 
    429492                    if ( in_array( $this->fields[ $params->name ][ 'type' ], $tableless_field_types ) ) { 
    430                         if ( 'custom-simple' == $this->fields[ $params->name ][ 'pick_object' ] ) 
     493                        $params->raw = true; 
     494 
     495                        if ( 'custom-simple' == $this->fields[ $params->name ][ 'pick_object' ] ) { 
    431496                            $simple = true; 
     497                            $params->single = true; 
     498                        } 
    432499                    } 
     500                    elseif ( 'boolean' == $this->fields[ $params->name ][ 'type' ] ) 
     501                        $params->raw = true; 
    433502                } 
    434503 
    435504                if ( !isset( $this->fields[ $params->name ] ) || !in_array( $this->fields[ $params->name ][ 'type' ], $tableless_field_types ) || $simple ) { 
     505                    if ( null === $params->single ) { 
     506                        if ( isset( $this->fields[ $params->name ] ) && !in_array( $this->fields[ $params->name ][ 'type' ], $tableless_field_types ) ) 
     507                            $params->single = true; 
     508                        else 
     509                            $params->single = false; 
     510                    } 
     511 
    436512                    pods_no_conflict_on( $this->pod_data[ 'type' ] ); 
    437513 
     
    452528                    elseif ( 'comment' == $this->pod_data[ 'type' ] ) 
    453529                        $value = get_comment_meta( $this->id(), $params->name, $params->single ); 
     530 
     531                    // Handle Simple Relationships 
     532                    if ( $simple ) { 
     533                        if ( null === $single ) 
     534                            $params->single = false; 
     535 
     536                        $value = PodsForm::field_method( 'pick', 'simple_value', $value, $this->fields[ $params->name ], true ); 
     537                    } 
    454538 
    455539                    pods_no_conflict_off( $this->pod_data[ 'type' ] ); 
     
    507591                        $field_exists = isset( $all_fields[ $pod ][ $field ] ); 
    508592 
     593                        $simple = false; 
     594                        $simple_options = array(); 
     595 
     596                        if ( $field_exists && 'pick' == $all_fields[ $pod ][ $field ][ 'type' ] && 'custom-simple' == $all_fields[ $pod ][ $field ][ 'pick_object' ] ) { 
     597                            $simple = true; 
     598                            $simple_options = $all_fields[ $pod ][ $field ]; 
     599                        } 
     600 
    509601                        // Tableless handler 
    510                         if ( $field_exists ) { 
     602                        if ( $field_exists && ( 'pick' != $all_fields[ $pod ][ $field ][ 'type' ] || !$simple ) ) { 
    511603                            $type = $all_fields[ $pod ][ $field ][ 'type' ]; 
    512604                            $pick_object = $all_fields[ $pod ][ $field ][ 'pick_object' ]; 
    513605                            $pick_val = $all_fields[ $pod ][ $field ][ 'pick_val' ]; 
     606 
     607                            $last_limit = 0; 
    514608 
    515609                            if ( in_array( $type, $tableless_field_types ) ) { 
     
    525619                            $last_object = $pick_object; 
    526620                            $last_pick_val = $pick_val; 
     621                            $last_options = $all_fields[ $pod ][ $field ]; 
    527622 
    528623                            // Get related IDs 
     
    530625                                $all_fields[ $pod ][ $field ][ 'id' ], 
    531626                                $all_fields[ $pod ][ $field ][ 'pod_id' ], 
    532                                 $ids 
     627                                $ids, 
     628                                $all_fields[ $pod ][ $field ] 
    533629                            ); 
    534630 
     
    536632                            if ( empty( $ids ) ) 
    537633                                return false; 
     634                            elseif ( 0 < $last_limit ) 
     635                                $ids = array_slice( $ids, 0, $last_limit ); 
    538636 
    539637                            // Get $pod if related to a Pod 
     
    559657                            } 
    560658 
     659                            $data = array(); 
     660 
    561661                            $table = $this->api->get_table_info( $object_type, $object ); 
    562662 
     
    573673 
    574674                                foreach ( $ids as $id ) { 
    575                                     $where[] = '`t`.`' . $table[ 'field_id' ] . '` = ' . (int) $id; 
     675                                    $where[ $id ] = '`t`.`' . $table[ 'field_id' ] . '` = ' . (int) $id; 
    576676                                } 
    577677 
     
    579679                                    $where = array( '( ' . implode( ' OR ', $where ) . ' )' ); 
    580680 
    581                                 if ( !isset( $table[ 'where' ] ) ) 
     681                                if ( !empty( $table[ 'where' ] ) ) 
    582682                                    $where = array_merge( $where, (array) $table[ 'where' ] ); 
    583683 
    584                                 $where = implode( ' AND ', $where ); 
    585  
    586                                 $where = "WHERE {$where}"; 
     684                                $where = trim( implode( ' AND ', $where ) ); 
     685 
     686                                if ( !empty( $where ) ) 
     687                                    $where = "WHERE {$where}"; 
    587688                            } 
    588689 
    589                             $sql = " 
    590                                 SELECT * 
    591                                 FROM `" . $table[ 'table' ] . "` AS `t` 
    592                                 {$join} 
    593                                 {$where} 
    594                             "; 
    595  
    596                             $data = pods_query( $sql ); 
     690                            if ( !empty( $table[ 'table' ] ) ) { 
     691                                $sql = " 
     692                                    SELECT *, `t`.`" . $table[ 'field_id' ] . "` AS `pod_item_id` 
     693                                    FROM `" . $table[ 'table' ] . "` AS `t` 
     694                                    {$join} 
     695                                    {$where} 
     696                                "; 
     697 
     698                                $item_data = pods_query( $sql ); 
     699                                $items = array(); 
     700 
     701                                foreach ( $item_data as $item ) { 
     702                                    if ( empty( $item->pod_item_id ) ) 
     703                                        continue; 
     704 
     705                                    // Get Item ID 
     706                                    $item_id = $item->pod_item_id; 
     707 
     708                                    // Cleanup 
     709                                    unset( $item->pod_item_id ); 
     710 
     711                                    // Pass item data into $data 
     712                                    $items[ $item_id ] = $item; 
     713                                } 
     714 
     715                                // Cleanup 
     716                                unset( $item_data ); 
     717 
     718                                // Return all of the data in the order expected 
     719                                foreach ( $ids as $id ) { 
     720                                    if ( isset( $items[ $id ] ) ) 
     721                                        $data[] = $items[ $id ]; 
     722                                } 
     723                            } 
     724 
     725                            if ( in_array( $last_type, $tableless_field_types ) || 'boolean' == $last_type ) 
     726                                $params->raw = true; 
    597727 
    598728                            if ( empty( $data ) ) 
     
    618748                                } 
    619749 
     750                                // Handle Simple Relationships 
     751                                if ( $simple ) { 
     752                                    if ( null === $single ) 
     753                                        $params->single = false; 
     754 
     755                                    $value = PodsForm::field_method( 'pick', 'simple_value', $value, $simple_options, true ); 
     756                                } 
     757 
    620758                                // Return a single column value 
    621759                                if ( false === $params->in_form && 1 == $limit && !empty( $value ) && is_array( $value ) && isset( $value[ 0 ] ) ) 
     
    635773            $this->row[ $field_names ] = $value; 
    636774        } 
    637         else { 
    638             if ( isset( $this->fields[ $params->name ] ) && in_array( $this->fields[ $params->name ][ 'type' ], $tableless_field_types ) ) { 
    639                 if ( 'custom-simple' == $this->fields[ $params->name ][ 'pick_object' ] ) { 
    640                     if ( empty( $value ) ) 
    641                         $value = array(); 
    642                     else 
    643                         $value = @json_decode( $value, true ); 
    644  
    645                     $single_multi = pods_var( $this->fields[ $params->name ][ 'type' ] . '_format_type', $this->fields[ $params->name ][ 'options' ], 'single' ); 
    646  
    647                     if ( 'single' == $single_multi ) { 
    648                         if ( empty( $value ) ) 
    649                             $value = ''; 
    650                         else 
    651                             $value = current( $value ); 
    652                     } 
    653                 } 
    654             } 
    655  
     775        else 
    656776            $this->row[ $params->name ] = $value; 
    657         } 
    658777 
    659778        if ( true === $params->single && is_array( $value ) && isset( $value[ 0 ] ) ) 
    660779            $value = $value[ 0 ]; 
     780 
     781        // @todo Expand this into traversed fields too 
     782        if ( false === $params->raw && false === $params->in_form && isset( $this->fields[ $params->name ] ) ) { 
     783            $value = PodsForm::display( 
     784                $this->fields[ $params->name ][ 'type' ], 
     785                $value, 
     786                $params->name, 
     787                array_merge( $this->fields[ $params->name ][ 'options' ], $this->fields[ $params->name ] ), 
     788                $this->pod_data, 
     789                $this->id() 
     790            ); 
     791        } 
    661792 
    662793        $value = $this->do_hook( 'field', $value, $this->row, $params ); 
     
    687818            $id = $this->field( 'id' ); 
    688819 
     820        $id = (int) $id; 
     821 
    689822        $params = array( 
    690             'select' => $this->data->field_id, 
    691             'where' => $id . ' < ' . $this->data->field_id, 
    692             'orderby' => 't.' . $this->data->field_id . ' ASC', 
     823            'select' => "`t`.{$this->data->field_id}`", 
     824            'where' => "{$id} < `t`.{$this->data->field_id}`", 
     825            'orderby' => "`t`.{$this->data->field_id}` ASC", 
    693826            'limit' => 1 
    694827        ); 
     
    714847            $id = $this->field( 'id' ); 
    715848 
     849        $id = (int) $id; 
     850 
    716851        $params = array( 
    717             'select' => $this->data->field_id, 
    718             'where' => $this->data->field_id . ' < ' . $id, 
    719             'orderby' => 't.' . $this->data->field_id . ' DESC', 
     852            'select' => "`t`.{$this->data->field_id}`", 
     853            'where' => "`t`.{$this->data->field_id}` < {$id}", 
     854            'orderby' => "`t`.{$this->data->field_id}` DESC", 
    720855            'limit' => 1 
    721856        ); 
     
    800935        if ( is_object( $params ) ) 
    801936            $params = (object) array_merge( $defaults, get_object_vars( $params ) ); 
    802         else 
     937        else { 
     938            $defaults[ 'orderby' ] = $params; 
    803939            $params = (object) $defaults; 
     940        } 
    804941 
    805942        $params = $this->do_hook( 'find', $params ); 
    806943 
    807         $this->limit = (int) $params->limit; 
     944        $params->limit = (int) $params->limit; 
     945 
     946        if ( 0 == $params->limit ) 
     947            $params->limit = -1; 
     948 
     949        $this->limit = $params->limit; 
    808950        $this->page = (int) $params->page; 
    809951        $this->page_var = $params->page_var; 
     
    820962            $params->where = pods_sanitize( $params->where ); 
    821963 
    822             foreach ( $params->where as $k => &$where ) { 
     964            foreach ( $params->where as $k => $where ) { 
    823965                if ( empty( $where ) ) { 
    824966                    unset( $params->where[ $k ] ); 
     
    827969                } 
    828970 
     971                // @todo Implement meta_query like arguments for $where 
     972                if ( !is_numeric( $k ) ) { 
     973                    $where_args = array( 
     974                        'key' => $k, 
     975                        'value' => '', 
     976                        'compare' => '=', 
     977                        'type' => 'CHAR' 
     978                    ); 
     979 
     980                    if ( !is_array( $where ) ) { 
     981                        $where_args[ 'value' ] = $where; 
     982 
     983                        $where = $where_args; 
     984                    } 
     985                    else 
     986                        $where = array_merge( $where_args, $where ); 
     987 
     988                    $where[ 'key' ] = trim( $where[ 'key' ] ); 
     989                    $where[ 'compare' ] = trim( $where[ 'compare' ] ); 
     990                    $where[ 'type' ] = trim( $where[ 'type' ] ); 
     991 
     992                    if ( strlen( $where[ 'key' ] ) < 1 ) { 
     993                        unset( $params->where[ $k ] ); 
     994 
     995                        continue; 
     996                    } 
     997 
     998                    $where[ 'compare' ] = strtotime( $where[ 'compare' ] ); 
     999 
     1000                    if ( !in_array( $where[ 'compare' ], array( '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) ) 
     1001                        $where[ 'compare' ] = '='; 
     1002 
     1003                    $where[ 'type' ] = strtotime( $where[ 'type' ] ); 
     1004 
     1005                    if ( !in_array( $where[ 'type' ], array( 'NUMERIC', 'BINARY', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', 'UNSIGNED' ) ) ) 
     1006                        $where[ 'type' ] = 'CHAR'; 
     1007 
     1008                    if ( is_array( $where[ 'value' ] ) && !in_array( $where[ 'compare' ], array( 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) ) { 
     1009                        if ( in_array( $where[ 'compare' ], array( '!=', 'NOT LIKE' ) ) ) 
     1010                            $where[ 'compare' ] = 'NOT IN'; 
     1011                        else 
     1012                            $where[ 'compare' ] = 'IN'; 
     1013                    } 
     1014 
     1015                    $key = ''; 
     1016 
     1017                    if ( false === strpos( $k, '`' ) && false === strpos( $k, ' ' ) ) { 
     1018                        if ( isset( $this->fields[ $k ] ) && in_array( $this->fields[ $k ][ 'type' ], $tableless_field_types ) ) { 
     1019                            if ( 'custom-simple' == $this->fields[ $k ][ 'pick_object' ] ) { 
     1020                                if ( 'table' == $this->pod_data[ 'storage' ] ) 
     1021                                    $key = "`t`.`{$k}`"; 
     1022                                else 
     1023                                    $key = "`{$k}`.`meta_value`"; 
     1024                            } 
     1025                            else { 
     1026                                $table = $this->api->get_table_info( $this->fields[ $k ][ 'pick_object' ], $this->fields[ $k ][ 'pick_val' ] ); 
     1027 
     1028                                if ( !empty( $table ) ) 
     1029                                    $key = "`{$k}`.`" . $table[ 'field_index' ] . '`'; 
     1030                            } 
     1031                        } 
     1032 
     1033                        if ( empty( $key ) ) { 
     1034                            if ( !in_array( $this->pod_data[ 'type' ], array( 'pod', 'table' ) ) ) { 
     1035                                if ( isset( $this->pod_data[ 'object_fields' ][ $k ] ) ) 
     1036                                    $key = "`t`.`{$k}`"; 
     1037                                elseif ( isset( $this->fields[ $k ] ) ) { 
     1038                                    if ( 'table' == $this->pod_data[ 'storage' ] ) 
     1039                                        $key = "`d`.`{$k}`"; 
     1040                                    else 
     1041                                        $key = "`{$k}`.`meta_value`"; 
     1042                                } 
     1043                                else { 
     1044                                    foreach ( $this->pod_data[ 'object_fields' ] as $object_field => $object_field_opt ) { 
     1045                                        if ( $object_field == $k || in_array( $k, $object_field_opt[ 'alias' ] ) ) 
     1046                                            $key = "`t`.`{$object_field}`"; 
     1047                                    } 
     1048                                } 
     1049                            } 
     1050                            elseif ( isset( $this->fields[ $k ] ) ) { 
     1051                                if ( 'table' == $this->pod_data[ 'storage' ] ) 
     1052                                    $key = "`t`.`{$k}`"; 
     1053                                else 
     1054                                    $key = "`{$k}`.`meta_value`"; 
     1055                            } 
     1056 
     1057                            if ( empty( $key ) ) 
     1058                                $key = "`{$k}`"; 
     1059                        } 
     1060                    } 
     1061 
     1062                    if ( !empty( $key ) ) 
     1063                        $where[ 'key' ] = $key; 
     1064 
     1065                    $where_args = $where; 
     1066 
     1067                    if ( is_array( $where[ 'value' ] ) ) 
     1068                        $where = $where[ 'key' ] . ' ' . $where[ 'compare' ] . ' ( "' . implode( '", "', $where[ 'value' ] ) . '" )'; 
     1069                    else 
     1070                        $where = $where[ 'key' ] . ' "' . (string) $where[ 'value' ] . '"'; 
     1071 
     1072                    $params->where[ $k ] = apply_filters( 'pods_find_where_query', $where, $where_args ); 
     1073                } 
     1074            } 
     1075        } 
     1076 
     1077        // Allow orderby array ( 'field' => 'asc|desc' ) 
     1078        if ( !empty( $params->orderby ) && is_array( $params->orderby ) ) { 
     1079            foreach ( $params->orderby as $k => &$orderby ) { 
    8291080                if ( !is_numeric( $k ) ) { 
    8301081                    $key = ''; 
     1082 
     1083                    $order = 'ASC'; 
     1084 
     1085                    if ( 'DESC' == strtoupper( $orderby ) ) 
     1086                        $order = 'DESC'; 
     1087 
     1088                    if ( isset( $this->fields[ $k ] ) && in_array( $this->fields[ $k ][ 'type' ], $tableless_field_types ) ) { 
     1089                        if ( 'custom-simple' == $this->fields[ $k ][ 'pick_object' ] ) { 
     1090                            if ( 'table' == $this->pod_data[ 'storage' ] ) 
     1091                                $key = "`t`.`{$k}`"; 
     1092                            else 
     1093                                $key = "`{$k}`.`meta_value`"; 
     1094                        } 
     1095                        else { 
     1096                            $table = $this->api->get_table_info( $this->fields[ $k ][ 'pick_object' ], $this->fields[ $k ][ 'pick_val' ] ); 
     1097 
     1098                            if ( !empty( $table ) ) 
     1099                                $key = "`{$k}`.`" . $table[ 'field_index' ] . '`'; 
     1100                        } 
     1101                    } 
     1102 
     1103                    if ( empty( $key ) ) { 
     1104                        if ( !in_array( $this->pod_data[ 'type' ], array( 'pod', 'table' ) ) ) { 
     1105                            if ( isset( $this->pod_data[ 'object_fields' ][ $k ] ) ) 
     1106                                $key = "`t`.`{$k}`"; 
     1107                            elseif ( isset( $this->fields[ $k ] ) ) { 
     1108                                if ( 'table' == $this->pod_data[ 'storage' ] ) 
     1109                                    $key = "`d`.`{$k}`"; 
     1110                                else 
     1111                                    $key = "`{$k}`.`meta_value`"; 
     1112                            } 
     1113                            else { 
     1114                                foreach ( $this->pod_data[ 'object_fields' ] as $object_field => $object_field_opt ) { 
     1115                                    if ( $object_field == $k || in_array( $k, $object_field_opt[ 'alias' ] ) ) 
     1116                                        $key = "`t`.`{$object_field}`"; 
     1117                                } 
     1118                            } 
     1119                        } 
     1120                        elseif ( isset( $this->fields[ $k ] ) ) { 
     1121                            if ( 'table' == $this->pod_data[ 'storage' ] ) 
     1122                                $key = "`t`.`{$k}`"; 
     1123                            else 
     1124                                $key = "`{$k}`.`meta_value`"; 
     1125                        } 
     1126 
     1127                        if ( empty( $key ) ) { 
     1128                            $key = $k; 
     1129 
     1130                            if ( false === strpos( $key, ' ' ) && false === strpos( $key, '`' ) ) 
     1131                                $key = '`' . str_replace( '.', '`.`', $key ) . '`'; 
     1132                        } 
     1133                    } 
     1134 
     1135                    $orderby = $key; 
     1136 
     1137                    if ( false === strpos( $orderby, ' ' ) ) 
     1138                        $orderby .= ' ' . $order; 
     1139                } 
     1140            } 
     1141        } 
     1142 
     1143        // Add prefix to $params->orderby if needed 
     1144        if ( !empty( $params->orderby ) ) { 
     1145            if ( !is_array( $params->orderby ) ) 
     1146                $params->orderby = array( $params->orderby ); 
     1147 
     1148            foreach ( $params->orderby as &$prefix_orderby ) { 
     1149                if ( false === strpos( $prefix_orderby, ',' ) && false === strpos( $prefix_orderby, '(' ) && false === stripos( $prefix_orderby, ' AS ' ) && false === strpos( $prefix_orderby, '`' ) && false === strpos( $prefix_orderby, '.' ) ) { 
     1150                    if ( false !== stripos( $prefix_orderby, ' ASC' ) ) { 
     1151                        $k = trim( str_ireplace( array( '`', ' ASC' ), '', $prefix_orderby ) ); 
     1152                        $dir = 'ASC'; 
     1153                    } 
     1154                    else { 
     1155                        $k = trim( str_ireplace( array( '`', ' DESC' ), '', $prefix_orderby ) ); 
     1156                        $dir = 'DESC'; 
     1157                    } 
     1158 
     1159                    $key = $k; 
    8311160 
    8321161                    if ( !in_array( $this->pod_data[ 'type' ], array( 'pod', 'table' ) ) ) { 
    8331162                        if ( isset( $this->pod_data[ 'object_fields' ][ $k ] ) ) 
    8341163                            $key = "`t`.`{$k}`"; 
    835                         elseif ( 'table' == $this->pod_data[ 'storage' ] && isset( $this->fields[ $k ] ) ) 
    836                             $key = "`d`.`{$k}`"; 
     1164                        elseif ( isset( $this->fields[ $k ] ) ) { 
     1165                            if ( 'table' == $this->pod_data[ 'storage' ] ) 
     1166                                $key = "`d`.`{$k}`"; 
     1167                            else 
     1168                                $key = "`{$k}`.`meta_value`"; 
     1169                        } 
    8371170                        else { 
    8381171                            foreach ( $this->pod_data[ 'object_fields' ] as $object_field => $object_field_opt ) { 
     
    8421175                        } 
    8431176                    } 
    844                     elseif ( 'table' == $this->pod_data[ 'storage' ] && isset( $this->fields[ $k ] ) ) 
    845                         $key = "`t`.`{$k}`"; 
    846  
    847                     if ( empty( $key ) ) 
    848                         $key = "`{$k}`"; 
    849  
    850                     if ( is_array( $where ) ) 
    851                         $where = "$key IN ( '" . implode( "', '", $where ) . "' )"; 
    852                     else 
    853                         $where = "$key = '" . (string) $where . "'"; 
    854                 } 
    855             } 
    856         } 
    857  
    858         // Allow orderby array ( 'field' => 'asc|desc' ) 
    859         if ( !empty( $params->orderby ) && is_array( $params->orderby ) ) { 
    860             foreach ( $params->orderby as $k => &$orderby ) { 
    861                 if ( !is_numeric( $k ) ) { 
    862                     $key = ''; 
    863  
    864                     $order = 'ASC'; 
    865  
    866                     if ( 'DESC' == strtoupper( $orderby ) ) 
    867                         $order = 'DESC'; 
    868  
    869                     if ( isset( $this->fields[ $k ] ) && in_array( $this->fields[ $k ][ 'type' ], $tableless_field_types ) ) { 
    870                         $table = $this->api->get_table_info( $this->fields[ $k ][ 'pick_object' ], $this->fields[ $k ][ 'pick_val' ] ); 
    871  
    872                         if ( !empty( $table ) ) 
    873                             $key = "`{$k}`.`" . $table[ 'field_index' ] . '`'; 
     1177                    elseif ( isset( $this->fields[ $k ] ) ) { 
     1178                        if ( 'table' == $this->pod_data[ 'storage' ] ) 
     1179                            $key = "`t`.`{$k}`"; 
     1180                        else 
     1181                            $key = "`{$k}`.`meta_value`"; 
    8741182                    } 
    8751183 
    876                     if ( empty( $key ) ) { 
    877                         if ( !in_array( $this->pod_data[ 'type' ], array( 'pod', 'table' ) ) ) { 
    878                             if ( isset( $this->pod_data[ 'object_fields' ][ $k ] ) ) 
    879                                 $key = "`t`.`{$k}`"; 
    880                             elseif ( 'table' == $this->pod_data[ 'storage' ] && isset( $this->fields[ $k ] ) ) 
    881                                 $key = "`d`.`{$k}`"; 
    882                             else { 
    883                                 foreach ( $this->pod_data[ 'object_fields' ] as $object_field => $object_field_opt ) { 
    884                                     if ( $object_field == $k || in_array( $k, $object_field_opt[ 'alias' ] ) ) 
    885                                         $key = "`t`.`{$object_field}`"; 
    886                                 } 
    887                             } 
    888                         } 
    889                         elseif ( 'table' == $this->pod_data[ 'storage' ] && isset( $this->fields[ $k ] ) ) 
    890                             $key = "`t`.`{$k}`"; 
    891  
    892                         if ( empty( $key ) ) { 
    893                             $key = $k; 
    894  
    895                             if ( false === strpos( $key, ' ' ) ) 
    896                                 $key = "`{$key}`"; 
    897                         } 
    898                     } 
    899  
    900                     $orderby = $key; 
    901  
    902                     if ( false === strpos( $orderby, ' ' ) ) 
    903                         $orderby .= ' ' . $order; 
    904                 } 
    905             } 
    906         } 
    907  
    908         // Add prefix to $params->orderby if needed 
    909         if ( !empty( $params->orderby ) ) { 
    910             if ( is_array( $params->orderby ) ) { 
    911                 foreach ( $params->orderby as &$prefix_orderby ) { 
    912                     if ( false === strpos( $prefix_orderby, ',' ) && false === strpos( $prefix_orderby, '(' ) && false === strpos( $prefix_orderby, '.' ) ) { 
    913                         if ( false !== stripos( $prefix_orderby, ' ASC' ) ) { 
    914                             $o = trim( str_ireplace( array( '`', ' ASC' ), '', $prefix_orderby ) ); 
    915                             $prefix_orderby = "`{$pod_table_prefix}`.`" . $o . '` ASC'; 
    916                         } 
    917                         else { 
    918                             $o = trim( str_ireplace( array( '`', ' DESC' ), '', $prefix_orderby ) ); 
    919                             $prefix_orderby = "`{$pod_table_prefix}`.`" . $o . '` DESC'; 
    920                         } 
    921                     } 
    922                 } 
    923             } 
    924             elseif ( false === strpos( $params->orderby, ',' ) && false === strpos( $params->orderby, '(' ) && false === strpos( $params->orderby, '.' ) ) { 
    925                 if ( false !== stripos( $params->orderby, ' ASC' ) ) { 
    926                     $o = trim( str_ireplace( array( '`', ' ASC' ), '', $params->orderby ) ); 
    927                     $params->orderby = "`{$pod_table_prefix}`.`" . $o . '` ASC'; 
    928                 } 
    929                 else { 
    930                     $o = trim( str_ireplace( array( '`', ' DESC' ), '', $params->orderby ) ); 
    931                     $params->orderby = "`{$pod_table_prefix}`.`" . $o . '` DESC'; 
     1184                    $prefix_orderby = "{$key} {$dir}"; 
    9321185                } 
    9331186            } 
     
    12551508     */ 
    12561509    public function filters ( $params = null ) { 
    1257         // handle $params deprecated 
     1510        $defaults = array( 
     1511            'fields' => $params, 
     1512            'label' => '', 
     1513            'action' => '', 
     1514            'search' => '' 
     1515        ); 
     1516 
     1517        if ( is_array( $params ) ) 
     1518            $params = array_merge( $defaults, $params ); 
     1519        else 
     1520            $params = $defaults; 
     1521 
     1522        $pod =& $this; 
     1523 
     1524        $params = apply_filters( 'pods_filters_params', $params, $pod ); 
     1525 
     1526        $fields = $params[ 'fields' ]; 
     1527 
     1528        if ( null !== $fields && !is_array( $fields ) && 0 < strlen( $fields ) ) 
     1529            $fields = explode( ',', $fields ); 
     1530 
     1531        $object_fields = (array) pods_var_raw( 'object_fields', $this->pod_data, array(), null, true ); 
     1532 
     1533        // Force array 
     1534        if ( empty( $fields ) ) 
     1535            $fields = array(); 
     1536        else { 
     1537            $filter_fields = $fields; // Temporary 
     1538 
     1539            $fields = array(); 
     1540 
     1541            foreach ( $filter_fields as $k => $field ) { 
     1542                $name = $k; 
     1543 
     1544                $defaults = array( 
     1545                    'name' => $name 
     1546                ); 
     1547 
     1548                if ( !is_array( $field ) ) { 
     1549                    $name = $field; 
     1550 
     1551                    $field = array( 
     1552                        'name' => $name 
     1553                    ); 
     1554                } 
     1555 
     1556                $field = array_merge( $defaults, $field ); 
     1557 
     1558                $field[ 'name' ] = trim( $field[ 'name' ] ); 
     1559 
     1560                if ( pods_var_raw( 'hidden', $field, false, null, true ) ) 
     1561                    continue; 
     1562                elseif ( isset( $object_fields[ $field[ 'name' ] ] ) ) 
     1563                    $fields[ $field[ 'name' ] ] = array_merge( $object_fields[ $field[ 'name' ] ], $field ); 
     1564                elseif ( isset( $this->fields[ $field[ 'name' ] ] ) ) 
     1565                    $fields[ $field[ 'name' ] ] = array_merge( $this->fields[ $field[ 'name' ] ], $field ); 
     1566            } 
     1567 
     1568            unset( $filter_fields ); // Cleanup 
     1569        } 
     1570 
     1571        $label = $params[ 'label' ]; 
     1572 
     1573        if ( strlen( $label ) < 1 ) 
     1574            $label = __( 'Search', 'pods' ); 
     1575 
     1576        $action = $params[ 'action' ]; 
     1577 
     1578        $search = trim( $params[ 'search' ] ); 
     1579 
     1580        if ( strlen( $search ) < 1 ) 
     1581            $search = pods_var_raw( $pod->search_var, 'get', '' ); 
    12581582 
    12591583        ob_start(); 
     
    13091633     */ 
    13101634    public function template ( $template, $code = null, $deprecated = false ) { 
    1311         if ( class_exists( 'Pods_Templates' ) ) 
     1635        if ( !empty( $code ) ) { 
     1636            $code = apply_filters( 'pods_templates_pre_template', $code, $template, $this ); 
     1637            $code = apply_filters( "pods_templates_pre_template_{$template}", $code, $template, $this ); 
     1638 
     1639            ob_start(); 
     1640 
     1641            if ( !empty( $code ) ) { 
     1642                // Only detail templates need $this->id 
     1643                if ( empty( $this->id ) ) { 
     1644                    while ( $this->fetch() ) { 
     1645                        echo $this->do_magic_tags( $code ); 
     1646                    } 
     1647                } 
     1648                else 
     1649                    echo $this->do_magic_tags( $code, $this ); 
     1650            } 
     1651 
     1652            $out = ob_get_clean(); 
     1653 
     1654            $out = apply_filters( 'pods_templates_post_template', $out, $code, $template, $this ); 
     1655            $out = apply_filters( "pods_templates_post_template_{$template}", $out, $code, $template, $this ); 
     1656 
     1657            return $out; 
     1658        } 
     1659        elseif ( class_exists( 'Pods_Templates' ) ) 
    13121660            return Pods_Templates::template( $template, $code, $this, $deprecated ); 
    13131661    } 
     
    13331681        ); 
    13341682 
    1335         if ( isset( $params[ 'fields' ] ) ) 
     1683        if ( is_array( $params ) ) 
    13361684            $params = array_merge( $defaults, $params ); 
    13371685        else 
     
    13441692        $fields = $params[ 'fields' ]; 
    13451693 
     1694        if ( null !== $fields && !is_array( $fields ) && 0 < strlen( $fields ) ) 
     1695            $fields = explode( ',', $fields ); 
     1696 
    13461697        $object_fields = (array) pods_var_raw( 'object_fields', $this->pod_data, array(), null, true ); 
    13471698 
     
    13581709                $name = $k; 
    13591710 
     1711                $defaults = array( 
     1712                    'name' => $name 
     1713                ); 
     1714 
    13601715                if ( !is_array( $field ) ) { 
    13611716                    $name = $field; 
    1362                     $field = array(); 
     1717 
     1718                    $field = array( 
     1719                        'name' => $name 
     1720                    ); 
    13631721                } 
    1364                 elseif ( isset( $field[ 'name' ] ) ) 
    1365                     $name = $field[ 'name' ]; 
     1722 
     1723                $field = array_merge( $defaults, $field ); 
     1724 
     1725                $field[ 'name' ] = trim( $field[ 'name' ] ); 
    13661726 
    13671727                if ( pods_var_raw( 'hidden', $field, false, null, true ) ) 
    13681728                    continue; 
    1369                 elseif ( isset( $object_fields[ $name ] ) ) 
    1370                     $fields[ $name ] = array_merge( $object_fields[ $name ], $field ); 
    1371                 elseif ( isset( $this->fields[ $name ] ) ) 
    1372                     $fields[ $name ] = array_merge( $this->fields[ $name ], $field ); 
     1729                elseif ( isset( $object_fields[ $field[ 'name' ] ] ) ) 
     1730                    $fields[ $field[ 'name' ] ] = array_merge( $object_fields[ $field[ 'name' ] ], $field ); 
     1731                elseif ( isset( $this->fields[ $field[ 'name' ] ] ) ) 
     1732                    $fields[ $field[ 'name' ] ] = array_merge( $this->fields[ $field[ 'name' ] ], $field ); 
    13731733            } 
    13741734 
     
    13831743        $thank_you = $params[ 'thank_you' ]; 
    13841744 
     1745        PodsForm::$form_counter++; 
     1746 
    13851747        ob_start(); 
    13861748 
    13871749        if ( empty( $thank_you ) ) { 
    1388             $thank_you = pods_var_update( array( 'success' => true ) ); 
    1389  
    1390             if ( 1 == pods_var( 'success', 'get', 0 ) ) { 
     1750            $success = 'success'; 
     1751 
     1752            if ( 1 < PodsForm::$form_counter ) 
     1753                $success .= PodsForm::$form_counter; 
     1754 
     1755            $thank_you = pods_var_update( array( 'success*' => null, $success => 1 ) ); 
     1756 
     1757            if ( 1 == pods_var( $success, 'get', 0 ) ) { 
    13911758                echo '<div id="message" class="pods-form-front-success">' 
    13921759                     . __( 'Form submitted successfully', 'pods' ) . '</div>'; 
     
    14091776     * @since 2.0.0 
    14101777     */ 
    1411     public function do_magic_tags( $code ) { 
     1778    public function do_magic_tags ( $code ) { 
    14121779        return preg_replace_callback( '/({@(.*?)})/m', array( $this, 'process_magic_tags' ), $code ); 
    14131780    } 
  • pods/trunk/classes/PodsAPI.php

    r608540 r612995  
    17181718                    if ( in_array( $field[ 'type' ], $tableless_field_types ) && !$simple && ( !in_array( $old_type, $tableless_field_types ) || $old_simple ) ) 
    17191719                        pods_query( "ALTER TABLE `@wp_pods_{$params->pod}` DROP COLUMN `{$old_name}`", false ); 
    1720                     elseif ( ( in_array( $old_type, $tableless_field_types ) && !$old_simple ) || $simple ) 
     1720                    elseif ( ( in_array( $old_type, $tableless_field_types ) && !$old_simple ) || ( in_array( $old_type, $tableless_field_types ) && $simple ) ) 
    17211721                        pods_query( "ALTER TABLE `@wp_pods_{$params->pod}` ADD COLUMN {$definition}", __( 'Cannot create new field', 'pods' ) ); 
    17221722                    elseif ( false !== $definition ) 
     
    17941794    } 
    17951795 
    1796     public function save_field_slug_fix ( $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug ) { 
     1796    public function save_field_slug_fix ( $slug, $post_ID, $post_status, $post_type, $post_parent = 0, $original_slug = null ) { 
    17971797        if ( in_array( $post_type, array( '_pods_field', '_pods_pod' ) ) && false !== strpos( $slug, '-' ) ) { 
    17981798            $slug = explode( '-', $slug ); 
     
    21482148 
    21492149        if ( false === $bypass_helpers ) { 
    2150             $pieces = array( 'fields', 'params', 'pod' ); 
     2150            $pieces = array( 'fields', 'params', 'pod', 'fields_active' ); 
    21512151 
    21522152            // Plugin hooks 
    21532153            $hooked = $this->do_hook( 'pre_save_pod_item', compact( $pieces ), $is_new_item ); 
    2154             extract( $hooked ); 
     2154 
     2155            if ( is_array( $hooked ) && !empty( $hooked ) ) 
     2156                extract( $hooked ); 
    21552157 
    21562158            $hooked = $this->do_hook( "pre_save_pod_item_{$params->pod}", compact( $pieces ), $is_new_item ); 
    2157             extract( $hooked ); 
     2159 
     2160            if ( is_array( $hooked ) && !empty( $hooked ) ) 
     2161                extract( $hooked ); 
    21582162 
    21592163            if ( false !== $is_new_item ) { 
    21602164                $hooked = $this->do_hook( 'pre_create_pod_item', compact( $pieces ) ); 
    2161                 extract( $hooked ); 
     2165 
     2166                if ( is_array( $hooked ) && !empty( $hooked ) ) 
     2167                    extract( $hooked ); 
    21622168 
    21632169                $hooked = $this->do_hook( "pre_create_pod_item_{$params->pod}", compact( $pieces ) ); 
    2164                 extract( $hooked ); 
     2170 
     2171                if ( is_array( $hooked ) && !empty( $hooked ) ) 
     2172                    extract( $hooked ); 
    21652173            } 
    21662174            else { 
    21672175                $hooked = $this->do_hook( 'pre_edit_pod_item', compact( $pieces ) ); 
    2168                 extract( $hooked ); 
     2176 
     2177                if ( is_array( $hooked ) && !empty( $hooked ) ) 
     2178                    extract( $hooked ); 
    21692179 
    21702180                $hooked = $this->do_hook( "pre_edit_pod_item_{$params->pod}", compact( $pieces ) ); 
    2171                 extract( $hooked ); 
     2181 
     2182                if ( is_array( $hooked ) && !empty( $hooked ) ) 
     2183                    extract( $hooked ); 
    21722184            } 
    21732185 
     
    22102222            $object_data[ $object_ID ] = $params->id; 
    22112223 
     2224        $fields_active = array_unique( $fields_active ); 
     2225 
    22122226        // Loop through each active field, validating and preparing the table data 
    22132227        foreach ( $fields_active as $field ) { 
    22142228            if ( isset( $object_fields[ $field ] ) ) 
    2215                 $options = $object_fields[ $field ]; 
     2229                $field_data = $object_fields[ $field ]; 
    22162230            elseif ( isset( $fields[ $field ] ) ) 
    2217                 $options = $fields[ $field ]; 
     2231                $field_data = $fields[ $field ]; 
    22182232            else 
    22192233                continue; 
    22202234 
    2221             $value = $options[ 'value' ]; 
    2222             $type = $options[ 'type' ]; 
     2235            $value = $field_data[ 'value' ]; 
     2236            $type = $field_data[ 'type' ]; 
     2237            $options = pods_var( 'options', $field_data, array() ); 
    22232238 
    22242239            // Validate value 
     
    22262241 
    22272242            if ( false === $validate ) 
    2228                 $validate = sprintf( __( 'There was an issue validating the field %s', 'pods' ), $options[ 'label' ] ); 
     2243                $validate = sprintf( __( 'There was an issue validating the field %s', 'pods' ), $field_data[ 'label' ] ); 
    22292244 
    22302245            if ( !is_bool( $validate ) && !empty( $validate ) ) 
    22312246                return pods_error( $validate, $this ); 
    22322247 
    2233             $value = PodsForm::pre_save( $options[ 'type' ], $value, $params->id, $field, array_merge( pods_var( 'options', $options, array() ), $options ), array_merge( $fields, $object_fields ), $pod, $params ); 
    2234  
    2235             $options[ 'value' ] = $value; 
     2248            $value = PodsForm::pre_save( $field_data[ 'type' ], $value, $params->id, $field, array_merge( $options, $field_data ), array_merge( $fields, $object_fields ), $pod, $params ); 
     2249 
     2250            $field_data[ 'value' ] = $value; 
    22362251 
    22372252            if ( isset( $object_fields[ $field ] ) ) 
    22382253                $object_data[ $field ] = $value; 
    22392254            else { 
    2240                 $simple = ( 'pick' == $type && 'custom-simple' == pods_var( 'pick_object', $options ) ); 
    2241                 $simple = (boolean) $this->do_hook( 'tableless_custom', $simple, $options, $field, $fields, $pod, $params ); 
     2255                $simple = ( 'pick' == $type && 'custom-simple' == pods_var( 'pick_object', $field_data ) ); 
     2256                $simple = (boolean) $this->do_hook( 'tableless_custom', $simple, $field_data, $field, $fields, $pod, $params ); 
     2257 
     2258                // Handle Simple Relationships 
     2259                if ( $simple ) { 
     2260                    $value = (array) $value; 
     2261 
     2262                    $custom = pods_var_raw( 'pick_custom', $options, '' ); 
     2263                    $pick_limit = (int) pods_var_raw( 'pick_limit', $options, 0 ); 
     2264 
     2265                    if ( empty( $value ) || empty( $custom ) ) 
     2266                        $value = ''; 
     2267                    elseif ( !empty( $custom ) ) { 
     2268                        if ( !is_array( $custom ) ) 
     2269                            $custom = explode( "\n", $custom ); 
     2270 
     2271                        $custom_values = array(); 
     2272 
     2273                        foreach ( $custom as $c => $cv ) { 
     2274                            if ( 0 < strlen( $cv ) ) { 
     2275                                $custom_label = explode( '|', $cv ); 
     2276 
     2277                                if ( !isset( $custom_label[ 1 ] ) ) 
     2278                                    $custom_label[ 1 ] = $custom_label[ 0 ]; 
     2279 
     2280                                $custom_values[ $custom_label[ 0 ] ] = $custom_label[ 1 ]; 
     2281                            } 
     2282                        } 
     2283 
     2284                        $values = array(); 
     2285 
     2286                        foreach ( $value as $k => $v ) { 
     2287                            if ( isset( $custom_values[ $v ] ) ) 
     2288                                $values[ $k ] = $v; 
     2289                        } 
     2290 
     2291                        $value = $values; 
     2292 
     2293                        if ( 0 < $pick_limit && !empty( $value ) ) 
     2294                            $value = array_slice( $value, 0, $pick_limit ); 
     2295                    } 
     2296 
     2297                    // Don't save an empty array, just make it an empty string 
     2298                    if ( empty( $value ) ) 
     2299                        $value = ''; 
     2300                    elseif ( is_array( $value ) ) { 
     2301                        // If there's just one item, don't save as an array, save the string 
     2302                        if ( 1 == $pick_limit ) 
     2303                            $value = implode( '', $value ); 
     2304                        // If storage is set to table, json encode, otherwise WP will serialize automatically 
     2305                        elseif ( 'table' == pods_var( 'storage', $pod ) ) 
     2306                            $value = json_encode( $value ); 
     2307                    } 
     2308                } 
    22422309 
    22432310                // Prepare all table (non-relational) data 
    22442311                if ( !in_array( $type, $tableless_field_types ) || $simple ) { 
    2245                     if ( $simple ) { 
    2246                         $value = (array) $value; 
    2247  
    2248                         if ( empty( $value ) ) 
    2249                             $value = ''; 
    2250                         else 
    2251                             $value = json_encode( $value ); 
    2252                     } 
    2253  
    22542312                    $table_data[ $field ] = $value; 
    2255                     $table_formats[] = PodsForm::prepare( $type, pods_var( 'options', $options, array() ) ); 
     2313                    $table_formats[] = PodsForm::prepare( $type, $options ); 
    22562314 
    22572315                    $object_meta[ $field ] = $value; 
     
    22602318                else { 
    22612319                    $rel_fields[ $type ][ $field ] = $value; 
    2262                     $rel_field_ids[] = $options[ 'id' ]; 
    2263                 } 
    2264             } 
     2320                    $rel_field_ids[] = $field_data[ 'id' ]; 
     2321                } 
     2322            } 
     2323        } 
     2324 
     2325        if ( 'post_type' == $pod[ 'type' ] ) { 
     2326            $post_type = $pod[ 'name' ]; 
     2327 
     2328            if ( !empty( $pod[ 'object' ] ) ) 
     2329                $post_type = $pod[ 'object' ]; 
     2330 
     2331            $object_data[ 'post_type' ] = $post_type; 
    22652332        } 
    22662333 
     
    22862353 
    22872354            if ( 'table' == $pod[ 'storage' ] ) { 
    2288                 if ( !empty( $params->id ) ) { 
    2289                     $table_data = array( 'id' => $params->id ) + $table_data; 
    2290                     array_unshift( $table_formats, '%d' ); 
    2291                 } 
     2355                // Every row should have an id set here, otherwise Pods with nothing 
     2356                // but relationship fields won't get properly ID'd 
     2357                if ( empty( $params->id ) ) 
     2358                    $params->id = 0; 
     2359 
     2360                $table_data = array( 'id' => $params->id ) + $table_data; 
     2361                array_unshift( $table_formats, '%d' ); 
    22922362 
    22932363                if ( !empty( $table_data ) ) { 
     
    25032573 
    25042574        if ( false === $bypass_helpers ) { 
    2505             $pieces = array( 'fields', 'params', 'pod' ); 
     2575            $pieces = array( 'fields', 'params', 'pod', 'fields_active' ); 
     2576 
     2577            $pieces = compact( $pieces ); 
    25062578 
    25072579            // Plugin hooks 
    2508             $hooked = $this->do_hook( 'post_save_pod_item', compact( $pieces ), $is_new_item ); 
    2509             extract( $hooked ); 
    2510  
    2511             $hooked = $this->do_hook( "post_save_pod_item_{$params->pod}", compact( $pieces ) ); 
    2512             extract( $hooked ); 
     2580            $this->do_hook( 'post_save_pod_item', $pieces, $is_new_item ); 
     2581            $this->do_hook( "post_save_pod_item_{$params->pod}", $pieces, $is_new_item ); 
    25132582 
    25142583            if ( false !== $is_new_item ) { 
    2515                 $hooked = $this->do_hook( 'post_create_pod_item', compact( $pieces ) ); 
    2516                 extract( $hooked ); 
    2517  
    2518                 $hooked = $this->do_hook( "post_create_pod_item_{$params->pod}", compact( $pieces ) ); 
    2519                 extract( $hooked ); 
    2520  
     2584                $this->do_hook( 'post_create_pod_item', $pieces ); 
     2585                $this->do_hook( "post_create_pod_item_{$params->pod}", $pieces ); 
    25212586            } 
    25222587            else { 
    2523                 $hooked = $this->do_hook( 'post_edit_pod_item', compact( $pieces ) ); 
    2524                 extract( $hooked ); 
    2525  
    2526                 $hooked = $this->do_hook( "post_edit_pod_item_{$params->pod}", compact( $pieces ) ); 
    2527                 extract( $hooked ); 
     2588                $this->do_hook( 'post_edit_pod_item', $pieces ); 
     2589                $this->do_hook( "post_edit_pod_item_{$params->pod}", $pieces ); 
    25282590            } 
    25292591 
     
    27872849        $params->name = $pod[ 'name' ]; 
    27882850 
    2789         if ( 'storage' == $pod[ 'type' ] ) { 
     2851        if ( 'table' == $pod[ 'storage' ] ) { 
    27902852            pods_query( "TRUNCATE `@wp_pods_{$params->name}`" ); 
    27912853        } 
     
    30843146 
    30853147        // @deprecated 2.0.0 
    3086         if ( isset( $params->datatype_id ) || isset( $params->datatype ) ) { 
     3148        if ( isset( $params->datatype_id ) || isset( $params->datatype ) || isset( $params->tbl_row_id ) ) { 
    30873149            if ( isset( $params->tbl_row_id ) ) { 
    30883150                pods_deprecated( __( '$params->id instead of $params->tbl_row_id', 'pods' ), '2.0.0' ); 
     
    31093171            } 
    31103172        } 
     3173 
     3174        if ( !isset( $params->id ) ) 
     3175            return pods_error( __( 'Pod Item not found', 'pods' ), $this ); 
    31113176 
    31123177        $params->id = pods_absint( $params->id ); 
     
    43574422     * @param int $pod_id The Pod ID 
    43584423     * @param mixed $ids A comma-separated string (or array) of item IDs 
     4424     * @param array $field Field data array 
    43594425     * 
    43604426     * @return array|bool 
     
    43644430     * @uses pods_query() 
    43654431     */ 
    4366     function lookup_related_items ( $field_id, $pod_id, $ids ) { 
     4432    function lookup_related_items ( $field_id, $pod_id, $ids, $field = null ) { 
    43674433        if ( empty( $ids ) ) 
    43684434            $ids = '0'; 
     
    43794445 
    43804446        $field_id = (int) $field_id; 
    4381  
    4382         $sql = " 
    4383             SELECT * 
    4384             FROM `@wp_podsrel` 
    4385             WHERE 
     4447        $sister_id = (int) pods_var_raw( 'sister_id', $field, 0 ); 
     4448 
     4449        $related_where = " 
     4450            `field_id` = %d 
     4451            AND `item_id` IN ( %s ) 
     4452        "; 
     4453 
     4454        if ( 0 < $sister_id ) { 
     4455            $related_where = " 
    43864456                ( 
    43874457                    `field_id` = %d 
     
    43934463                    AND `related_item_id` IN ( %s ) 
    43944464                ) 
     4465            "; 
     4466        } 
     4467 
     4468        $sql = " 
     4469            SELECT * 
     4470            FROM `@wp_podsrel` 
     4471            WHERE 
     4472                {$related_where} 
    43954473            ORDER BY `weight` 
    43964474        "; 
     
    44044482                if ( $field_id == $relation->field_id && !in_array( $relation->related_item_id, $related_ids ) ) 
    44054483                    $related_ids[] = (int) $relation->related_item_id; 
    4406                 elseif ( $field_id == $relation->related_field_id && !in_array( $relation->item_id, $related_ids ) ) 
     4484                elseif ( 0 < $sister_id && $field_id == $relation->related_field_id && !in_array( $relation->item_id, $related_ids ) ) 
    44074485                    $related_ids[] = (int) $relation->item_id; 
    44084486            } 
     
    45374615 
    45384616                $info[ 'where' ] = array( 
    4539                     'post_status' => '`t`.`post_status` = "publish"', 
     4617                    //'post_status' => '`t`.`post_status` IN ( "inherit", "publish" )', // @todo Figure out what statuses Attachments can be 
    45404618                    'post_type' => '`t`.`post_type` = "' . ( empty( $object ) ? $name : $object ) . '"' 
    45414619                ); 
     
    52515329     * @since 1.7.1 
    52525330     */ 
    5253     public function csv_to_php ( $data ) { 
    5254         $delimiter = ","; 
     5331    public function csv_to_php ( $data, $delimiter = ',' ) { 
    52555332        $expr = "/{$delimiter}(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/"; 
     5333 
    52565334        $data = str_replace( "\r\n", "\n", $data ); 
    52575335        $data = str_replace( "\r", "\n", $data ); 
     5336 
    52585337        $lines = explode( "\n", $data ); 
    5259         $field_names = explode( $delimiter, array_shift( $lines ) ); 
    5260         $field_names = preg_replace( "/^\"(.*)\"$/s", "$1", $field_names ); 
     5338 
     5339        $field_names = array_shift( $lines ); 
     5340 
     5341        if ( function_exists( 'str_getcsv' ) ) 
     5342            $field_names = str_getcsv( $field_names, $delimiter ); 
     5343        else { 
     5344            $field_names = explode( $delimiter, $field_names ); 
     5345            $field_names = preg_replace( "/^\"(.*)\"$/s", "$1", $field_names ); 
     5346        } 
     5347 
    52615348        $out = array(); 
     5349 
    52625350        foreach ( $lines as $line ) { 
    52635351            // Skip the empty line 
    5264             if ( empty( $line ) ) 
     5352            if ( strlen ( $line ) < 1 ) 
    52655353                continue; 
     5354 
    52665355            $row = array(); 
    5267             $fields = preg_split( $expr, trim( $line ) ); 
    5268             $fields = preg_replace( "/^\"(.*)\"$/s", "$1", $fields ); 
     5356 
     5357            if ( function_exists( 'str_getcsv' ) ) 
     5358                $fields = str_getcsv( $line, $delimiter ); 
     5359            else { 
     5360                $fields = preg_split( $expr, trim( $line ) ); 
     5361                $fields = preg_replace( "/^\"(.*)\"$/s", "$1", $fields ); 
     5362            } 
     5363 
    52695364            foreach ( $field_names as $key => $field ) { 
    52705365                $row[ $field ] = $fields[ $key ]; 
    52715366            } 
     5367 
    52725368            $out[] = $row; 
    52735369        } 
  • pods/trunk/classes/PodsAdmin.php

    r608507 r612995  
    163163 
    164164            foreach ( (array) $results as $item ) { 
    165                 if ( !is_super_admin() && !current_user_can( 'pods' ) && !current_user_can( 'pods_add_' . $item[ 'name' ] ) && !current_user_can( 'pods_edit_' . $item[ 'name' ] ) && !current_user_can( 'pods_delete_' . $item[ 'name' ] ) ) 
     165                if ( !is_super_admin() && !current_user_can( 'delete_users' ) && !current_user_can( 'pods' ) && !current_user_can( 'pods_content' ) && !current_user_can( 'pods_add_' . $item[ 'name' ] ) && !current_user_can( 'pods_edit_' . $item[ 'name' ] ) && !current_user_can( 'pods_delete_' . $item[ 'name' ] ) ) 
    166166                    continue; 
    167167 
     
    177177                    $parent_page = null; 
    178178 
    179                     if ( is_super_admin() || current_user_can( 'pods' ) || current_user_can( 'pods_edit_' . $item[ 'name' ] ) || current_user_can( 'pods_delete_' . $item[ 'name' ] ) ) { 
     179                    if ( is_super_admin() || current_user_can( 'delete_users' ) || current_user_can( 'pods' ) || current_user_can( 'pods_content' ) || current_user_can( 'pods_edit_' . $item[ 'name' ] ) || current_user_can( 'pods_delete_' . $item[ 'name' ] ) ) { 
    180180                        $parent_page = $page = 'pods-manage-' . $item[ 'name' ]; 
    181181 
     
    195195                    } 
    196196 
    197                     if ( is_super_admin() || current_user_can( 'pods' ) || current_user_can( 'pods_add_' . $item[ 'name' ] ) ) { 
     197                    if ( is_super_admin() || current_user_can( 'delete_users' ) || current_user_can( 'pods' ) || current_user_can( 'pods_content' ) || current_user_can( 'pods_add_' . $item[ 'name' ] ) ) { 
    198198                        $page = 'pods-add-new-' . $item[ 'name' ]; 
    199199 
     
    213213                    $submenu[] = $item; 
    214214            } 
     215 
     216            $submenu = apply_filters( 'pods_admin_menu_secondary_content', $submenu ); 
    215217 
    216218            if ( !empty( $submenu ) ) { 
     
    221223                    $plural_label = pods_var_raw( 'label', $item, ucwords( str_replace( '_', ' ', $item[ 'name' ] ) ), null, true ); 
    222224 
    223                     if ( is_super_admin() || current_user_can( 'pods' ) || current_user_can( 'pods_edit_' . $item[ 'name' ] ) || current_user_can( 'pods_delete_' . $item[ 'name' ] ) ) { 
     225                    if ( is_super_admin() || current_user_can( 'delete_users' ) || current_user_can( 'pods' ) || current_user_can( 'pods_content' ) || current_user_can( 'pods_edit_' . $item[ 'name' ] ) || current_user_can( 'pods_delete_' . $item[ 'name' ] ) ) { 
    224226                        $page = 'pods-manage-' . $item[ 'name' ]; 
    225227 
     
    331333 
    332334        foreach ( $admin_menus as $page => $menu_item ) { 
    333             if ( !is_super_admin() && isset( $menu_item[ 'access' ] ) ) { 
     335            if ( !is_super_admin() && !current_user_can( 'delete_users' ) && isset( $menu_item[ 'access' ] ) ) { 
    334336                $access = (array) $menu_item[ 'access' ]; 
    335337 
     
    392394            $default = 'add'; 
    393395 
    394         $actions_disabled = array( 'duplicate', 'view', 'export' ); 
    395  
    396         if ( !is_super_admin() && !current_user_can( 'pods' ) ) { 
     396        $actions_disabled = array( 
     397            'duplicate' => 'duplicate', 
     398            'view' => 'view', 
     399            'export' => 'export' 
     400        ); 
     401 
     402        if ( !is_super_admin() && !current_user_can( 'delete_users' ) && !current_user_can( 'pods' ) && !current_user_can( 'pods_content' ) ) { 
    397403            if ( !current_user_can( 'pods_add_' . $pod ) ) { 
    398                 $actions_disabled[] = 'add'; 
     404                $actions_disabled[ 'add' ] = 'add'; 
    399405                $default = 'manage'; 
    400406            } 
    401407 
    402408            if ( !current_user_can( 'pods_edit_' . $pod ) ) 
    403                 $actions_disabled[] = 'edit'; 
     409                $actions_disabled[ 'edit' ] = 'edit'; 
    404410 
    405411            if ( !current_user_can( 'pods_delete_' . $pod ) ) 
    406                 $actions_disabled[] = 'delete'; 
     412                $actions_disabled[ 'delete' ] = 'delete'; 
    407413        } 
    408414 
     
    411417        $pod = pods( $pod, pods_var( 'id', 'get', null, null, true ) ); 
    412418 
    413         $index = $pod->pod_data[ 'field_index' ]; 
    414         $label = __( 'Name', 'pods' ); 
    415  
    416         if ( isset( $pod->pod_data[ 'fields' ][ $pod->pod_data[ 'field_index' ] ] ) ) 
     419        $index = $pod->pod_data[ 'field_id' ]; 
     420        $label = __( 'ID', 'pods' ); 
     421 
     422        if ( isset( $pod->pod_data[ 'fields' ][ $pod->pod_data[ 'field_index' ] ] ) ) { 
     423            $index = $pod->pod_data[ 'field_index' ]; 
    417424            $label = $pod->pod_data[ 'fields' ][ $pod->pod_data[ 'field_index' ] ]; 
    418         else { 
    419             $index = $pod->pod_data[ 'field_id' ]; 
    420             $label = __( 'ID', 'pods' ); 
    421425        } 
    422426 
     
    436440                'duplicate' => $pod->pod_data[ 'fields' ] 
    437441            ), 
    438             'item' => pods_var_raw( 'label_singular', $pod->pod_data[ 'options' ], pods_var_raw( 'label', $pod->pod_data, ucwords( str_replace( '_', ' ', $pod->pod ) ), null, true ), null, true ), 
    439             'items' => pods_var_raw( 'label', $pod->pod_data, ucwords( str_replace( '_', ' ', $pod->pod ) ), null, true ), 
    440442            'actions_disabled' => $actions_disabled 
    441443        ); 
     
    457459    public function media_button ( $context ) { 
    458460        $current_page = basename( $_SERVER[ 'PHP_SELF' ] ); 
    459  
    460         if ( $current_page == 'index.php' ) 
     461        $current_page = explode( '?', $current_page ); 
     462        $current_page = explode( '#', $current_page[ 0 ] ); 
     463        $current_page = $current_page[ 0 ]; 
     464 
     465        // Only show the button on post type pages 
     466        if ( !in_array( $current_page, array( 'post-new.php', 'post.php' ) ) ) 
    461467            return $context; 
    462468 
     
    465471        $button = '<a href="#TB_inline?width=640&inlineId=pods_shortcode_form" class="thickbox" id="add_pod_button" title="Pods Shortcode"><img src="' . PODS_URL . 'ui/images/icon16.png" alt="Pods Shortcode" /></a>'; 
    466472        $context .= $button; 
     473 
    467474        return $context; 
    468475    } 
     
    794801 
    795802        $capabilities[] = 'pods'; 
    796         $capabilities[] = 'pods_templates'; 
    797         $capabilities[] = 'pods_pages'; 
    798         $capabilities[] = 'pods_helpers'; 
     803        $capabilities[] = 'pods_content'; 
    799804        $capabilities[] = 'pods_settings'; 
    800         $capabilities[] = 'pods_packages'; 
    801805        $capabilities[] = 'pods_components'; 
    802806 
     
    870874 
    871875        // Check permissions (convert to array to support multiple) 
    872         if ( !empty( $method->priv ) && !is_super_admin() && !current_user_can( 'pods' ) ) { 
     876        if ( !empty( $method->priv ) && !is_super_admin() && !current_user_can( 'delete_users' ) && !current_user_can( 'pods' ) ) { 
    873877            if ( true !== $method->priv ) { 
    874878                foreach ( (array) $method->priv as $priv_val ) { 
     
    915919 
    916920        // Output in json format 
    917         if ( 'upgrade' == $method->name ) 
    918             echo $output; 
    919         elseif ( false !== $output ) 
    920             echo json_encode( $output ); 
     921        if ( false !== $output ) { 
     922            if ( is_array( $output ) || is_object( $output ) ) 
     923                echo json_encode( $output ); 
     924            else 
     925                echo $output; 
     926        } 
    921927        else 
    922928            pods_error( 'There was a problem with your request.' ); 
     
    11911197        ); 
    11921198 
     1199        $extra = ''; 
     1200 
     1201        // @todo Hook into WPML for each table 
    11931202        if ( $wpdb->users == $data->table ) { 
    11941203            $lookup_where[] = "`t`.`display_name` LIKE '%" . like_escape( $params->query ) . "%'"; 
     
    12001209            $lookup_where[] = "`t`.`post_content` LIKE '%" . like_escape( $params->query ) . "%'"; 
    12011210            $lookup_where[] = "`t`.`post_excerpt` LIKE '%" . like_escape( $params->query ) . "%'"; 
     1211            $extra = ', `t`.`post_type`'; 
    12021212        } 
    12031213        elseif ( $wpdb->terms == $data->table ) 
     
    12231233 
    12241234        $params = array( 
    1225             'select' => "`t`.`{$data->field_id}`, `t`.`{$data->field_index}`", 
     1235            'select' => "`t`.`{$data->field_id}`, `t`.`{$data->field_index}`" . $extra, 
    12261236            'table' => $data->table, 
    12271237            'where' => $where, 
     
    12341244 
    12351245        $items = array(); 
     1246        $ids = array(); 
    12361247 
    12371248        if ( !empty( $results ) ) { 
     
    12391250                $result = get_object_vars( $result ); 
    12401251 
    1241                 $items[] = array( 
    1242                     'id' => $result[ $data->field_id ], 
    1243                     'text' => $result[ $data->field_index ] 
    1244                 ); 
     1252                // WPML integration for Post Types 
     1253                if ( $wpdb->posts == $data->table && function_exists( 'icl_object_id' ) ) { 
     1254                    $id = icl_object_id( $result[ $data->field_id ], $result[ 'post_type' ] ); 
     1255 
     1256                    if ( 0 < $id && !in_array( $id, $ids ) ) { 
     1257                        $text = get_the_title( $id ); 
     1258 
     1259                        $items[] = array( 
     1260                            'id' => $id, 
     1261                            'text' => $text 
     1262                        ); 
     1263 
     1264                        $ids[] = $id; 
     1265                    } 
     1266                } 
     1267                elseif( !in_array( $result[ $data->field_id ], $ids ) ) { 
     1268                    $items[] = array( 
     1269                        'id' => $result[ $data->field_id ], 
     1270                        'text' => $result[ $data->field_index ] 
     1271                    ); 
     1272 
     1273                    $ids[] = $result[ $data->field_id ]; 
     1274                } 
    12451275            } 
    12461276        } 
  • pods/trunk/classes/PodsComponents.php

    r608119 r612995  
    4141     */ 
    4242    public function __construct () { 
    43         $this->components_dir = apply_filters( 'pods_components_dir', PODS_DIR . 'components/' ); 
     43        $this->components_dir = realpath( apply_filters( 'pods_components_dir', PODS_DIR . 'components' ) ) . '/'; 
    4444 
    4545        $settings = get_option( 'pods_component_settings', '' ); 
     
    6161            add_action( 'wp_ajax_pods_admin_components', array( $this, 'admin_ajax' ) ); 
    6262            add_action( 'wp_ajax_nopriv_pods_admin_components', array( $this, 'admin_ajax' ) ); 
     63 
     64            // Add the Pods Components capabilities 
     65            add_filter( 'members_get_capabilities', array( $this, 'admin_capabilities' ) ); 
    6366        } 
    6467    } 
     
    9194                continue; 
    9295 
    93             $component_data[ 'File' ] = realpath( PODS_DIR . $component_data[ 'File' ] ); 
     96            $component_data[ 'File' ] = realpath( $this->components_dir . $component_data[ 'File' ] ); 
    9497 
    9598            if ( !file_exists( $component_data[ 'File' ] ) ) { 
     
    100103                continue; 
    101104            } 
     105 
     106            $capability = 'pods_component_' . str_replace( '-', '_', sanitize_title( str_replace( ' and ', ' ', strip_tags( $component_data[ 'Name' ] ) ) ) ); 
     107 
     108            if ( 0 < strlen( $component_data[ 'Capability' ] ) ) 
     109                $capability = $component_data[ 'Capability' ]; 
     110 
     111            if ( !is_super_admin() && !current_user_can( 'delete_users' ) && !current_user_can( 'pods' ) && !current_user_can( 'pods_components' ) && !current_user_can( $capability ) ) 
     112                continue; 
    102113 
    103114            $menu_page = 'pods-component-' . $component_data[ 'ID' ]; 
     
    126137                            $menu_page = $component_data[ 'MenuPage' ]; 
    127138 
    128                             if ( !empty( $component_data[ 'MenuAddPage' ] ) ) { 
     139                            /*if ( !empty( $component_data[ 'MenuAddPage' ] ) ) { 
    129140                                if ( false !== strpos( $_SERVER[ 'REQUEST_URI' ], $component_data[ 'MenuAddPage' ] ) ) 
    130141                                    $menu_page = $component_data[ 'MenuAddPage' ]; 
    131                             } 
     142                            }*/ 
    132143 
    133144                            $menu[ 2 ] = $menu_page; 
     
    165176            $component_data = $this->components[ $component ]; 
    166177 
    167             $component_data[ 'File' ] = realpath( PODS_DIR . $component_data[ 'File' ] ); 
     178            $component_data[ 'File' ] = realpath( $this->components_dir . $component_data[ 'File' ] ); 
    168179 
    169180            if ( empty( $component_data[ 'File' ] ) ) { 
     
    222233                                    continue; 
    223234                                elseif ( '.php' == substr( $subfile, -4 ) ) 
    224                                     $component_files[] = realpath( $this->components_dir . $file . '/' . $subfile ); 
     235                                    $component_files[] = str_replace( '\\', '/', $file . '/' . $subfile ); 
    225236                            } 
    226237 
     
    229240                    } 
    230241                    elseif ( '.php' == substr( $file, -4 ) ) 
    231                         $component_files[] = $this->components_dir . $file; 
     242                        $component_files[] = $file; 
    232243                } 
    233244 
     
    249260                'Hide' => 'Hide', 
    250261                'PluginDependency' => 'Plugin Dependency', 
    251                 'DeveloperMode' => 'Developer Mode' 
     262                'DeveloperMode' => 'Developer Mode', 
     263                'Capability' => 'Capability' 
    252264            ); 
    253265 
     
    255267 
    256268            foreach ( $component_files as $component_file ) { 
    257                 if ( !is_readable( $component_file ) ) 
     269                if ( !is_readable( $this->components_dir . $component_file ) ) 
    258270                    continue; 
    259271 
    260                 $component_data = get_file_data( $component_file, $default_headers, 'pods_component' ); 
     272                $component_data = get_file_data( $this->components_dir . $component_file, $default_headers, 'pods_component' ); 
    261273 
    262274                if ( empty( $component_data[ 'Name' ] ) || 'yes' == $component_data[ 'Hide' ] ) 
     
    267279 
    268280                if ( empty( $component_data[ 'Class' ] ) ) 
    269                     $component_data[ 'Class' ] = 'Pods_' . pods_clean_name( basename( $component_file, '.php' ), false ); 
     281                    $component_data[ 'Class' ] = 'Pods_' . pods_clean_name( basename( $this->components_dir . $component_file, '.php' ), false ); 
    270282 
    271283                if ( empty( $component_data[ 'ID' ] ) ) 
     
    277289                    $component_data[ 'DeveloperMode' ] = false; 
    278290 
    279                 $component_data[ 'File' ] = str_replace( PODS_DIR, '', $component_file ); 
     291                $component_data[ 'File' ] = $component_file; 
    280292 
    281293                $components[ $component_data[ 'ID' ] ] = $component_data; 
     
    288300            pods_transient_set( 'pods_components', $components ); 
    289301        } 
     302 
     303        if ( 1 == pods_var( 'pods_debug_components', 'get', 0 ) ) 
     304            pods_debug( $components ); 
    290305 
    291306        $this->components = $components; 
     
    352367 
    353368        return $toggle; 
     369    } 
     370 
     371    /** 
     372     * Add pods specific capabilities. 
     373     * 
     374     * @param $capabilities List of extra capabilities to add 
     375     * 
     376     * @return array 
     377     */ 
     378    public function admin_capabilities ( $capabilities ) { 
     379        foreach ( $this->components as $component => $component_data ) { 
     380            if ( !empty( $component_data[ 'Hide' ] ) ) 
     381                continue; 
     382 
     383            if ( true === (boolean) pods_var( 'DeveloperMode', $component_data, false ) && ( !defined( 'PODS_DEVELOPER' ) || !PODS_DEVELOPER ) ) 
     384                continue; 
     385 
     386            if ( empty( $component_data[ 'MenuPage' ] ) && ( !isset( $component_data[ 'object' ] ) || !method_exists( $component_data[ 'object' ], 'admin' ) ) ) 
     387                continue; 
     388 
     389            $capability = 'pods_component_' . str_replace( '-', '_', sanitize_title( str_replace( ' and ', ' ', strip_tags( $component_data[ 'Name' ] ) ) ) ); 
     390 
     391            if ( 0 < strlen ( $component_data[ 'Capability' ] ) ) 
     392                $capability = $component_data[ 'Capability' ]; 
     393 
     394            if ( !in_array( $capability, $capabilities ) ) 
     395                $capabilities[] = $capability; 
     396        } 
     397 
     398        return $capabilities; 
    354399    } 
    355400 
  • pods/trunk/classes/PodsData.php

    r608119 r612995  
    132132     */ 
    133133    public $page = 1; 
     134 
     135    /** 
     136     * @var int 
     137     */ 
     138    public $limit = 15; 
    134139 
    135140    /** 
     
    490495        $cache_key = $results = false; 
    491496 
     497        // Debug purposes 
     498        if ( 1 == pods_var( 'pods_debug_params', 'get', 0 ) && is_user_logged_in() && ( is_super_admin() || current_user_can( 'delete_users' ) || current_user_can( 'pods' ) ) ) 
     499            pods_debug( $params ); 
     500 
    492501        // Get from cache if enabled 
    493502        if ( null !== pods_var( 'expires', $params, null, null, true ) ) { 
     
    503512            // Build 
    504513            $this->sql = $this->build( $params ); 
     514 
     515            // Debug purposes 
     516            if ( ( 1 == pods_var( 'pods_debug_sql', 'get', 0 ) || 1 == pods_var( 'pods_debug_sql_all', 'get', 0 ) )&& is_user_logged_in() && ( is_super_admin() || current_user_can( 'delete_users' ) || current_user_can( 'pods' ) ) ) 
     517                echo "<textarea cols='100' rows='24'>{$this->sql}</textarea>"; 
    505518 
    506519            if ( empty( $this->sql ) ) 
     
    558571        $defaults = array( 
    559572            'select' => '*', 
     573            'distinct' => true, 
    560574            'table' => null, 
    561575            'join' => null, 
     
    589603        $params = (object) array_merge( $defaults, (array) $params ); 
    590604 
     605        if ( 0 < strlen( $params->sql ) ) 
     606            return $params->sql; 
     607 
    591608        // Validate 
    592609        $params->page = pods_absint( $params->page ); 
     
    599616        if ( 0 == $params->limit ) 
    600617            $params->limit = -1; 
     618 
     619        $this->limit = $params->limit; 
    601620 
    602621        $offset = ( $params->limit * ( $params->page - 1 ) ); 
     
    980999            $sql = " 
    9811000                SELECT SQL_CALC_FOUND_ROWS 
     1001                " . ( $params->distinct ? 'DISTINCT' : '' ) . " 
    9821002                " . ( !empty( $params->select ) ? ( is_array( $params->select ) ? implode( ', ', $params->select ) : $params->select ) : '*' ) . " 
    9831003                FROM {$params->table} AS `t` 
     
    11201140            $sql = str_replace( array( '``', '`' ), array( '  ', ' ' ), $sql ); 
    11211141        } 
    1122  
    1123         // Debug purposes 
    1124         if ( 1 == pods_var( 'debug_sql', 'get', 0 ) && is_user_logged_in() && is_super_admin() ) 
    1125             echo "<textarea cols='130' rows='30'>{$sql}</textarea>"; 
    11261142 
    11271143        return $sql; 
     
    18701886 
    18711887        $rel_alias = 'rel_' . $field_joined; 
    1872         $the_join = " 
    1873             LEFT JOIN `@wp_podsrel` AS `{$rel_alias}` ON 
     1888        $sister_id = (int) pods_var_raw( 'sister_id', $this->traversal[ $pod ][ $field ], 0 ); 
     1889 
     1890        $related_on = " 
     1891            `{$rel_alias}`.`field_id` = {$this->traversal[$pod][$field]['id']} 
     1892            AND `{$rel_alias}`.`item_id` = `{$joined}`.`id` 
     1893        "; 
     1894 
     1895        $table_related_on = " 
     1896            `{$rel_alias}`.`field_id` = {$this->traversal[$pod][$field]['id']} 
     1897            AND `{$field_joined}`.`{$this->traversal[$pod][$field]['on']}` = `{$rel_alias}`.`related_item_id` 
     1898        "; 
     1899 
     1900        if ( 0 < $sister_id ) { 
     1901            $related_on = " 
    18741902                ( 
    18751903                    `{$rel_alias}`.`field_id` = {$this->traversal[$pod][$field]['id']} 
     
    18801908                    AND `{$rel_alias}`.`related_item_id` = `{$joined}`.`id` 
    18811909                ) 
    1882             LEFT JOIN `{$this->traversal[$pod][$field]['table']}` AS `{$field_joined}` ON `{$field_joined}`.`{$this->traversal[$pod][$field]['on']}` = `{$rel_alias}`.`related_item_id` 
     1910            "; 
     1911 
     1912            $table_related_on = " 
     1913                ( 
     1914                    `{$rel_alias}`.`field_id` = {$this->traversal[$pod][$field]['id']} 
     1915                    AND `{$field_joined}`.`{$this->traversal[$pod][$field]['on']}` = `{$rel_alias}`.`related_item_id` 
     1916                ) 
     1917                OR ( 
     1918                    `{$rel_alias}`.`related_field_id` = {$this->traversal[$pod][$field]['id']} 
     1919                    AND `{$field_joined}`.`{$this->traversal[$pod][$field]['on']}` = `{$rel_alias}`.`item_id` 
     1920                ) 
     1921            "; 
     1922        } 
     1923 
     1924        $the_join = " 
     1925            LEFT JOIN `@wp_podsrel` AS `{$rel_alias}` ON 
     1926                {$related_on} 
     1927            LEFT JOIN `{$this->traversal[$pod][$field]['table']}` AS `{$field_joined}` ON 
     1928                {$table_related_on} 
    18831929        "; 
    18841930 
  • pods/trunk/classes/PodsForm.php

    r608119 r612995  
    2424     */ 
    2525    static $loaded = array(); 
     26 
     27    /** 
     28     * @var int 
     29     */ 
     30    static $form_counter = 0; 
    2631 
    2732    /** 
     
    273278        if ( 1 == pods_var( 'required', $options, 0 ) ) 
    274279            $attributes[ 'class' ] .= ' pods-validate pods-validate-required'; 
     280 
     281        if ( isset( $options[ 'maxlength' ] ) && !empty( $options[ 'maxlength' ] ) ) 
     282            $attributes[ 'maxlength' ] = (int) $options[ 'maxlength' ]; 
     283        elseif ( isset( $options[ $type . '_max_length' ] ) && !empty( $options[ $type . '_max_length' ] ) ) 
     284            $attributes[ 'maxlength' ] = (int) $options[ $type . '_max_length' ]; 
    275285 
    276286        $attributes = (array) apply_filters( 'pods_form_ui_field_' . $type . '_merge_attributes', $attributes, $name, $options ); 
     
    565575        self::field_loader( $type ); 
    566576 
    567         if ( method_exists( self::$loaded[ $type ], 'display' ) ) 
    568             $value = call_user_func_array( array( self::$loaded[ $type ], 'display' ), array( $value, $name, $options, $pod, $id, $traverse ) ); 
     577        $tableless_field_types = apply_filters( 'pods_tableless_field_types', array( 'pick', 'file' ) ); 
     578 
     579        if ( method_exists( self::$loaded[ $type ], 'display' ) ) { 
     580            if ( is_array( $value ) && in_array( $type, $tableless_field_types ) ) { 
     581                foreach ( $value as &$display_value ) { 
     582                    $display_value = call_user_func_array( array( self::$loaded[ $type ], 'display' ), array( $display_value, $name, $options, $pod, $id, $traverse ) ); 
     583                } 
     584            } 
     585            else 
     586                $value = call_user_func_array( array( self::$loaded[ $type ], 'display' ), array( $value, $name, $options, $pod, $id, $traverse ) ); 
     587        } 
    569588 
    570589        return $value; 
     
    692711        if ( 1 == pods_var( 'restrict_capability', $options, 0 ) ) { 
    693712            if ( is_user_logged_in() ) { 
    694                 if ( is_super_admin() || current_user_can( 'manage_options' ) ) 
     713                if ( is_super_admin() || current_user_can( 'delete_users' ) || current_user_can( 'manage_options' ) ) 
    695714                    $permission = true; 
    696715 
     
    708727        } 
    709728        elseif ( 1 == pods_var( 'admin_only', $options, 0 ) ) { 
    710             if ( is_user_logged_in() && ( is_super_admin() || current_user_can( 'manage_options' ) ) ) 
     729            if ( is_user_logged_in() && ( is_super_admin() || current_user_can( 'delete_users' ) || current_user_can( 'manage_options' ) ) ) 
    711730                $permission = true; 
    712731        } 
     
    729748        $default = pods_var_raw( 'default', $options, $default_value_parameter, null, true ); 
    730749 
    731         $default = trim( $default, ' {@}' ); 
    732  
    733         if ( $default != $value ) { 
     750        $default_value = trim( $default, ' {@}' ); 
     751 
     752        if ( $default != $default_value ) { 
    734753            $value = $default; 
    735754 
     
    741760                $value = pods_var_raw( $default[ 1 ], $default[ 0 ], '', null, true ); 
    742761        } 
     762        elseif ( $default != $value ) 
     763            $value = $default; 
    743764 
    744765        if ( is_array( $value ) ) 
  • pods/trunk/classes/PodsInit.php

    r608119 r612995  
    7171     */ 
    7272    function load_textdomain () { 
    73         load_plugin_textdomain( 'pods', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); 
     73        load_plugin_textdomain( 'pods', false, dirname( PODS_DIR . 'init.php' ) . '/languages/' ); 
    7474    } 
    7575 
     
    664664        $pods_version = self::$version; 
    665665 
     666        // Update Pods and run any necessary DB updates 
    666667        if ( 0 < strlen( $pods_version ) ) { 
    667             if ( PODS_VERSION != $pods_version ) { 
    668                 // Update alpha / beta sites 
    669                 if ( version_compare( '2.0.0-a-1', $pods_version, '<=' ) && version_compare( $pods_version, '2.0.0-b-15', '<=' ) ) { 
    670                     do_action( 'pods_update', PODS_VERSION, $pods_version, $_blog_id ); 
    671  
    672                     if ( false !== apply_filters( 'pods_update_run', null, PODS_VERSION, $pods_version, $_blog_id ) && !isset( $_GET[ 'pods_bypass_update' ] ) ) { 
    673                         include( PODS_DIR . 'sql/update-2.0-beta.php' ); 
    674                         include( PODS_DIR . 'sql/update.php' ); 
    675                     } 
    676  
    677                     do_action( 'pods_update_post', PODS_VERSION, $pods_version, $_blog_id ); 
    678                 } 
    679                 else { 
    680                     do_action( 'pods_update', PODS_VERSION, $pods_version, $_blog_id ); 
    681  
    682                     if ( false !== apply_filters( 'pods_update_run', null, PODS_VERSION, $pods_version, $_blog_id ) && !isset( $_GET[ 'pods_bypass_update' ] ) ) 
    683                         include( PODS_DIR . 'sql/update.php' ); 
    684  
    685                     do_action( 'pods_update_post', PODS_VERSION, $pods_version, $_blog_id ); 
    686                 } 
    687  
    688                 update_option( 'pods_framework_version', PODS_VERSION ); 
    689  
    690                 pods_api()->cache_flush_pods(); 
    691             } 
    692         } 
     668            if ( PODS_VERSION != $pods_version && false !== apply_filters( 'pods_update_run', null, PODS_VERSION, $pods_version, $_blog_id ) && !isset( $_GET[ 'pods_bypass_update' ] )) { 
     669                do_action( 'pods_update', PODS_VERSION, $pods_version, $_blog_id ); 
     670 
     671                // Update 2.0 alpha / beta sites 
     672                if ( version_compare( '2.0.0-a-1', $pods_version, '<=' ) && version_compare( $pods_version, '2.0.0-b-15', '<=' ) ) 
     673                    include( PODS_DIR . 'sql/update-2.0-beta.php' ); 
     674 
     675                include( PODS_DIR . 'sql/update.php' ); 
     676 
     677                do_action( 'pods_update_post', PODS_VERSION, $pods_version, $_blog_id ); 
     678            } 
     679        } 
     680        // Install Pods 
    693681        else { 
    694682            do_action( 'pods_install', PODS_VERSION, $pods_version, $_blog_id ); 
     
    722710 
    723711            do_action( 'pods_install_post', PODS_VERSION, $pods_version, $_blog_id ); 
    724  
    725             update_option( 'pods_framework_version', PODS_VERSION ); 
    726  
    727             pods_api()->cache_flush_pods(); 
    728         } 
     712        } 
     713 
     714        update_option( 'pods_framework_version', PODS_VERSION ); 
     715 
     716        pods_api()->cache_flush_pods(); 
    729717 
    730718        // Restore DB table prefix (if switched) 
     
    818806            'PodsWidgetSingle', 
    819807            'PodsWidgetList', 
    820             'PodsWidgetField' 
     808            'PodsWidgetField', 
     809            'PodsWidgetForm' 
    821810        ); 
    822  
    823         if ( defined( 'PODS_DEVELOPER' ) && PODS_DEVELOPER ) 
    824             $widgets[] = 'PodsWidgetForm'; 
    825811 
    826812        foreach ( $widgets as $widget ) { 
     
    850836                continue; 
    851837 
    852             if ( !is_super_admin() && !current_user_can( 'pods' ) && !current_user_can( 'pods_add_' . $pod[ 'name' ] ) ) 
     838            if ( !is_super_admin() && !current_user_can( 'delete_users' ) && !current_user_can( 'pods' ) && !current_user_can( 'pods_content' ) && !current_user_can( 'pods_add_' . $pod[ 'name' ] ) ) 
    853839                continue; 
    854840 
     
    867853            $pod = $pods->pod_data; 
    868854 
    869             if ( is_super_admin() || current_user_can( 'pods' ) || current_user_can( 'pods_edit_' . $pod[ 'name' ] ) ) { 
     855            if ( is_super_admin() || current_user_can( 'delete_users' ) || current_user_can( 'pods' ) || current_user_can( 'pods_content' ) || current_user_can( 'pods_edit_' . $pod[ 'name' ] ) ) { 
    870856                $singular_label = pods_var_raw( 'label_singular', $pod[ 'options' ], pods_var_raw( 'label', $pod, ucwords( str_replace( '_', ' ', $pod[ 'name' ] ) ), null, true ), null, true ); 
    871857 
  • pods/trunk/classes/PodsMeta.php

    r608119 r612995  
    228228 
    229229        foreach ( $fields as $k => $field ) { 
     230            $name = $k; 
     231 
     232            $defaults = array( 
     233                'name' => $name, 
     234                'label' => $name, 
     235                'type' => 'text' 
     236            ); 
     237 
    230238            if ( !is_array( $field ) ) { 
    231                 if ( is_numeric( $k ) ) 
    232                     $k = $field; 
    233  
    234                 if ( !is_array( $k ) && isset( $pod[ 'fields' ] ) && isset( $pod[ 'fields' ][ $k ] ) ) { 
    235                     if ( is_array( $field ) ) 
    236                         $field = array_merge( $pod[ 'fields' ][ $k ], $field ); 
    237                     else 
    238                         $field = $pod[ 'fields' ][ $k ]; 
    239                 } 
    240                 elseif ( is_array( $field ) ) { 
    241                     $defaults = array( 
    242                         'name' => '', 
    243                         'label' => '', 
    244                         'type' => 'text' 
    245                     ); 
    246  
    247                     $field = array_merge( $defaults, $field ); 
    248                 } 
    249                 else { 
    250                     $field = array( 
    251                         'name' => $k, 
    252                         'label' => $field, 
    253                         'type' => 'text' 
    254                     ); 
    255                 } 
    256             } 
     239                $name = trim( $field ); 
     240 
     241                $field = array( 
     242                    'name' => $name, 
     243                    'label' => $name 
     244                ); 
     245            } 
     246 
     247            $field = array_merge( $defaults, $field ); 
     248 
     249            $field[ 'name' ] = trim( $field[ 'name' ] ); 
     250 
     251            if ( isset( $pod[ 'fields' ] ) && isset( $pod[ 'fields' ][ $field[ 'name' ] ] ) ) 
     252                $field = array_merge( $field, $pod[ 'fields' ][ $field[ 'name' ] ] ); 
    257253 
    258254            $_fields[ $k ] = $field; 
  • pods/trunk/classes/PodsUI.php

    r608119 r612995  
    743743        $options->orderby = $orderby; 
    744744 
    745         $options->validate( 'item', __( 'Item', 'pods' ) ); 
    746         $options->validate( 'items', __( 'Items', 'pods' ) ); 
     745        $item = __( 'Item', 'pods' ); 
     746        $items = __( 'Items', 'pods' ); 
     747 
     748        if ( is_object( $this->pod ) ) { 
     749            $item = pods_var_raw( 'label_singular', $this->pod->pod_data[ 'options' ], pods_var_raw( 'label', $this->pod->pod_data, $item, null, true ), null, true ); 
     750            $items = pods_var_raw( 'label', $this->pod->pod_data, $items, null, true ); 
     751        } 
     752 
     753        $options->validate( 'item', $item ); 
     754        $options->validate( 'items', $items ); 
    747755 
    748756        $options->validate( 'heading', array( 
     
    11991207     */ 
    12001208    public function edit ( $duplicate = false ) { 
    1201         if ( !in_array( 'duplicate', $this->actions_disabled ) ) 
     1209        if ( in_array( 'duplicate', $this->actions_disabled ) ) 
    12021210            $duplicate = false; 
    12031211        if ( empty( $this->row ) ) 
     
    12401248     */ 
    12411249    public function form ( $create = false, $duplicate = false ) { 
     1250        if ( in_array( 'duplicate', $this->actions_disabled ) ) 
     1251            $duplicate = false; 
     1252 
    12421253        $this->do_hook( 'form' ); 
    12431254 
     
    12761287            unset( $alt_vars[ 'id' ] ); 
    12771288 
    1278             if ( 1 == $duplicate ) { 
     1289            if ( $duplicate ) { 
    12791290                $label = $this->label[ 'duplicate' ]; 
    12801291                $id = null; 
     
    18961907            .dragme { 
    18971908                background: url(<?php echo PODS_URL; ?>/ui/images/handle.gif) no-repeat; 
    1898                 background-position: 8px 5px; 
     1909                background-position: 8px 8px; 
    18991910                cursor: pointer; 
    19001911            } 
  • pods/trunk/classes/fields/number.php

    r602158 r612995  
    167167            $value = implode( '', $value ); 
    168168 
    169         $value = $this->pre_save( $value, $id, $name, $options, null, $pod ); 
    170  
    171169        pods_view( PODS_DIR . 'ui/fields/number.php', compact( array_keys( get_defined_vars() ) ) ); 
    172170    } 
     
    199197        } 
    200198 
    201         return '[0-9\\' . implode( '\\', array_filter( array( $dot, $thousands ) ) ) . ']+'; 
     199        return '\-*[0-9\\' . implode( '\\', array_filter( array( $dot, $thousands ) ) ) . ']+'; 
    202200    } 
    203201 
     
    233231        $check = str_replace( array( $thousands, $dot ), array( '', '.' ), $value ); 
    234232 
    235         $check = preg_replace( '/[^0-9\.]/', '', $check ); 
     233        $check = preg_replace( '/[^0-9\.\-]/', '', $check ); 
    236234 
    237235        if ( !is_numeric( $check ) ) 
     
    270268        $value = str_replace( array( $thousands, $dot ), array( '', '.' ), $value ); 
    271269 
    272         $value = preg_replace( '/[^0-9\.]/', '', $value ); 
     270        $value = preg_replace( '/[^0-9\.\-]/', '', $value ); 
    273271 
    274272        $decimals = pods_absint( (int) pods_var( 'number_decimals', $options, 0, null, true ) ); 
  • pods/trunk/classes/fields/paragraph.php

    r602158 r612995  
    7878                        'type' => 'boolean', 
    7979                        'help' => array( 
    80                             __( 'Transforms less-beautfiul text characters into stylized equivilents.', 'pods' ), 
     80                            __( 'Transforms less-beautfiul text characters into stylized equivalents.', 'pods' ), 
    8181                            'http://codex.wordpress.org/Function_Reference/wptexturize' 
    8282                        ) 
     
    167167        $value = $this->strip_html( $value, $options ); 
    168168 
    169         if ( 1 == pods_var( 'wysiwyg_oembed', $options, 0 ) ) { 
     169        if ( 1 == pods_var( 'paragraph_oembed', $options, 0 ) ) { 
    170170            $embed = $GLOBALS[ 'wp_embed' ]; 
    171171            $value = $embed->run_shortcode( $value ); 
     
    173173        } 
    174174 
    175         if ( 1 == pods_var( 'wysiwyg_wptexturize', $options, 1 ) ) 
     175        if ( 1 == pods_var( 'paragraph_wptexturize', $options, 1 ) ) 
    176176            $value = wptexturize( $value ); 
    177177 
    178         if ( 1 == pods_var( 'wysiwyg_convert_chars', $options, 1 ) ) 
     178        if ( 1 == pods_var( 'paragraph_convert_chars', $options, 1 ) ) 
    179179            $value = convert_chars( $value ); 
    180180 
    181         if ( 1 == pods_var( 'wysiwyg_wpautop', $options, 1 ) ) 
     181        if ( 1 == pods_var( 'paragraph_wpautop', $options, 1 ) ) 
    182182            $value = wpautop( $value ); 
    183183 
    184         if ( 1 == pods_var( 'wysiwyg_allow_shortcode', $options, 0 ) ) { 
    185             if ( 1 == pods_var( 'wysiwyg_wpautop', $options, 1 ) ) 
     184        if ( 1 == pods_var( 'paragraph_allow_shortcode', $options, 0 ) ) { 
     185            if ( 1 == pods_var( 'paragraph_wpautop', $options, 1 ) ) 
    186186                $value = shortcode_unautop( $value ); 
    187187 
  • pods/trunk/classes/fields/phone.php

    r602158 r612995  
    198198        else { 
    199199            // Clean input 
    200             $number = preg_replace( '/([^0-9ext])/', ' ', $value ); 
     200            $number = preg_replace( '/([^0-9ext])/', '', $value ); 
    201201 
    202202            $number = str_replace( 
     
    209209            $extension = explode( '|', $number ); 
    210210            if ( 1 < count( $extension ) ) { 
    211                 $number = preg_replace( '/([^0-9])/', ' ', $extension[ 0 ] ); 
    212                 $extension = preg_replace( '/([^0-9])/', ' ', $extension[ 1 ] ); 
     211                $number = preg_replace( '/([^0-9])/', '', $extension[ 0 ] ); 
     212                $extension = preg_replace( '/([^0-9])/', '', $extension[ 1 ] ); 
    213213            } 
    214214            else 
     
    238238 
    239239            // Add extension 
    240             if ( 1 == pods_var( 'phone_enable_phone_extension', $options ) && false !== $extension ) 
     240            if ( 1 == pods_var( 'phone_enable_phone_extension', $options ) && 0 < strlen( $extension ) ) 
    241241                $value .= ' x' . $extension; 
    242242        } 
  • pods/trunk/classes/fields/pick.php

    r608119 r612995  
    194194        $ajax = false; 
    195195 
    196         if ( 'custom-simple' == pods_var( 'pick_object', $options ) && !empty( $custom ) ) { 
    197             if ( !empty( $value ) && !is_array( $value ) ) { 
    198                 $json = json_decode( $value, true ); 
    199  
    200                 if ( is_array( $json ) ) 
    201                     $value = $json; 
    202                 else 
    203                     $value = explode( ',', $value ); 
    204             } 
    205         } 
    206         elseif ( '' != pods_var( 'pick_object', $options, '', null, true ) ) { 
     196        if ( ( 'custom-simple' != pods_var( 'pick_object', $options ) || empty( $custom ) ) && '' != pods_var( 'pick_object', $options, '', null, true ) ) { 
    207197            $autocomplete = false; 
    208198 
     
    269259        $data = array(); 
    270260 
    271         $custom = pods_var_raw( 'pick_custom', $options, false ); 
    272  
    273         if ( 'custom-simple' == pods_var( 'pick_object', $options ) && !empty( $custom ) ) { 
     261        $custom = trim( pods_var_raw( 'pick_custom', $options, '' ) ); 
     262 
     263        if ( 'custom-simple' == pods_var( 'pick_object', $options ) && 0 < strlen( $custom ) ) { 
    274264            if ( !is_array( $custom ) ) 
    275265                $custom = explode( "\n", $custom ); 
    276266 
    277267            if ( 'single' == pods_var( 'pick_format_type', $options ) && 'dropdown' == pods_var( 'pick_format_single', $options ) ) 
    278                 $options[ 'data' ] = array( '' => __( '-- Select One --', 'pods' ) ); 
     268                $options[ 'data' ] = array( '' => pods_var_raw( 'pick_select_text', $options, __( '-- Select One --', 'pods' ), null, true ) ); 
    279269 
    280270            foreach ( $custom as $custom_value ) { 
     
    365355            } 
    366356        } 
     357 
    367358        if ( empty( $data ) && !empty( $options[ 'data' ] ) ) 
    368359            $data = $options[ 'data' ]; 
     360 
    369361        return $data; 
    370362    } 
     
    383375     */ 
    384376    public function ui ( $id, $value, $name = null, $options = null, $fields = null, $pod = null ) { 
     377        $value = $this->simple_value( $value, $options ); 
     378 
    385379        return $this->display( $value, $name, $options, $pod, $id ); 
    386380    } 
     381 
     382    /** 
     383     * Convert a simple value to the correct value 
     384     * 
     385     * @param mixed $value Value of the field 
     386     * @param array $options Field options 
     387     * @param boolean $raw Whether to return the raw list of keys (true) or convert to key=>value (false) 
     388     */ 
     389    public function simple_value ( $value, $options, $raw = false ) { 
     390        if ( isset( $options[ 'options' ] ) ) { 
     391            $options = array_merge( $options[ 'options' ], $options ); 
     392            unset( $options[ 'options' ] ); 
     393        } 
     394 
     395        if ( 'custom-simple' == pods_var( 'pick_object', $options ) ) { 
     396            $simple_data = array(); 
     397 
     398            $custom = trim( pods_var_raw( 'pick_custom', $options, '' ) ); 
     399 
     400            if ( 0 < strlen( $custom ) ) { 
     401                if ( !is_array( $custom ) ) 
     402                    $custom = explode( "\n", $custom ); 
     403 
     404                foreach ( $custom as $custom_value ) { 
     405                    $custom_label = explode( '|', $custom_value ); 
     406 
     407                    if ( empty( $custom_label ) ) 
     408                        continue; 
     409 
     410                    if ( 1 == count( $custom_label ) ) 
     411                        $custom_label = $custom_value; 
     412                    else { 
     413                        $custom_value = $custom_label[ 0 ]; 
     414                        $custom_label = $custom_label[ 1 ]; 
     415                    } 
     416 
     417                    $simple_data[ $custom_value ] = $custom_label; 
     418                } 
     419            } 
     420 
     421            $simple = false; 
     422            $key = 0; 
     423 
     424            if ( !is_array( $value ) && !empty( $value ) ) 
     425                $simple = @json_decode( $value ); 
     426 
     427            if ( is_array( $simple ) ) 
     428                $value = $simple; 
     429 
     430            if ( is_array( $value ) ) { 
     431                if ( !empty( $simple_data ) ) { 
     432                    $val = array(); 
     433 
     434                    foreach ( $value as $k => $v ) { 
     435                        if ( isset( $simple_data[ $v ] ) ) { 
     436                            if ( false === $raw ) { 
     437                                $k = $v; 
     438                                $v = $simple_data[ $v ]; 
     439                            } 
     440 
     441                            $val[ $k ] = $v; 
     442                        } 
     443                    } 
     444 
     445                    $value = $val; 
     446                } 
     447            } 
     448            elseif ( isset( $simple_data[ $value ] ) && false === $raw ) { 
     449                $key = $value; 
     450                $value = $simple_data[ $value ]; 
     451            } 
     452 
     453            $single_multi = pods_var( 'pick_format_type', $options, 'single' ); 
     454 
     455            if ( 'multi' == $single_multi ) 
     456                $limit = (int) pods_var( 'pick_limit', $options, 0 ); 
     457            else 
     458                $limit = 1; 
     459 
     460            if ( is_array( $value ) && 0 < $limit ) { 
     461                if ( 1 == $limit ) 
     462                    $value = current( $value ); 
     463                else 
     464                    $value = array_slice( $value, 0, $limit, true ); 
     465            } 
     466            elseif ( !is_array( $value ) && null !== $value && 0 < strlen( $value ) ) { 
     467                if ( 1 != $limit || ( true === $raw && 'multi' == $single_multi ) ) { 
     468                    $value = array( 
     469                        $key => $value 
     470                    ); 
     471                } 
     472            } 
     473        } 
     474 
     475        return $value; 
     476    } 
    387477} 
  • pods/trunk/classes/fields/slug.php

    r603447 r612995  
    122122            $value = $fields[ $pod[ 'index' ] ][ 'value' ]; 
    123123 
    124         if ( empty( $value ) ) 
    125             return sprintf( __( '%s is empty.', 'pods' ), pods_var_raw( 'label', $options, $name, null, true ) ); 
    126  
    127124        return true; 
    128125    } 
  • pods/trunk/classes/fields/wysiwyg.php

    r602158 r612995  
    8585                        'type' => 'boolean', 
    8686                        'help' => array( 
    87                             __( 'Transforms less-beautfiul text characters into stylized equivilents.', 'pods' ), 
     87                            __( 'Transforms less-beautfiul text characters into stylized equivalents.', 'pods' ), 
    8888                            'http://codex.wordpress.org/Function_Reference/wptexturize' 
    8989                        ) 
  • pods/trunk/classes/widgets/PodsWidgetField.php

    r608119 r612995  
    2323        extract( $args ); 
    2424 
    25         // Get widget field values 
     25        // Get widget fields 
    2626        $title = apply_filters( 'widget_title', $instance[ 'title' ] ); 
    27         $pod_type = pods_var( 'pod_type', $instance, '' ); 
    28         $slug = pods_var( 'slug', $instance, '' ); 
    29         $field = pods_var( 'field', $instance, '' ); 
    30         $helper = pods_var( 'helper', $instance, '' ); 
    3127 
    32         if ( !empty( $pod_type ) && !empty( $slug ) && !empty( $field ) ) { 
    33             $shortcode = '[pods '; 
    34             $shortcode .= "name=\"{$pod_type}\" "; 
    35             $shortcode .= "slug=\"{$slug}\" "; 
    36             $shortcode .= "field=\"{$field}\" "; 
     28        $args = array( 
     29            'name' => trim( pods_var_raw( 'pod_type', $instance, '' ) ), 
     30            'slug' => trim( pods_var_raw( 'slug', $instance, '' ) ), 
     31            'field' => trim( pods_var_raw( 'field', $instance, '' ) ) 
     32        ); 
    3733 
    38             if ( !empty( $helper ) ) 
    39                 $shortcode .= "helper=\"{$helper}\" "; 
    40  
    41             $shortcode .= ']'; 
    42  
    43             require PODS_DIR . 'ui/front/widgets/pods_widget_output.php'; 
     34        if ( 0 < strlen( $args[ 'name' ] ) && 0 < strlen( $args[ 'slug' ] ) && 0 < strlen( $args[ 'field' ] ) ) { 
     35            require PODS_DIR . 'ui/front/widgets.php'; 
    4436        } 
    45  
    4637    } 
    4738 
     
    5748        $instance[ 'slug' ] = pods_var( 'slug', $new_instance, '' ); 
    5849        $instance[ 'field' ] = pods_var( 'field', $new_instance, '' ); 
    59         $instance[ 'helper' ] = pods_var( 'helper', $new_instance, '' ); 
    6050 
    6151        return $instance; 
     
    7060        $slug = pods_var_raw( 'slug', $instance, '' ); 
    7161        $field = pods_var_raw( 'field', $instance, '' ); 
    72         $helper = pods_var_raw( 'helper', $instance, '' ); 
    7362 
    7463        require PODS_DIR . 'ui/admin/widgets/field.php'; 
  • pods/trunk/classes/widgets/PodsWidgetForm.php

    r608119 r612995  
    99            'pods_widget_form', 
    1010            'Pods Form', 
    11             array( 'classname' => 'pods_widget_form', 'description' => 'Display a form for creating Pod items' ), 
     11            array( 'classname' => 'pods_widget_form', 'description' => 'Display a form for creating and editing Pod items' ), 
    1212            array( 'width' => 200 ) 
    1313        ); 
     
    1717        extract( $args ); 
    1818 
     19        // Get widget fields 
    1920        $title = apply_filters( 'widget_title', $instance[ 'title' ] ); 
    20         $pod_type = pods_var( 'pod_type', $instance, '' ); 
    2121 
    22         if ( !empty( $pod_type ) ) { 
    23             $shortcode = '[pods name="' . $pod_type . '" form="true"]'; 
     22        $args = array( 
     23            'name' => trim( pods_var_raw( 'pod_type', $instance, '' ) ), 
     24            'slug' => trim( pods_var_raw( 'slug', $instance, '' ) ), 
     25            'fields' => trim( pods_var_raw( 'fields', $instance, '' ) ), 
     26            'label' => trim( pods_var_raw( 'label', $instance, __( 'Submit', 'pods' ), null, true ) ), 
     27            'thank_you' => trim( pods_var_raw( 'thank_you', $instance, '' ) ), 
     28            'form' => 1 
     29        ); 
    2430 
    25             require PODS_DIR . 'ui/front/widgets/pods_widget_output.php'; 
     31        if ( 0 < strlen( $args[ 'name' ] ) ) { 
     32            require PODS_DIR . 'ui/front/widgets.php'; 
    2633        } 
    2734    } 
     
    3138        $instance[ 'title' ] = pods_var( 'title', $new_instance, '' ); 
    3239        $instance[ 'pod_type' ] = pods_var( 'pod_type', $new_instance, '' ); 
     40        $instance[ 'slug' ] = pods_var( 'slug', $new_instance, '' ); 
     41        $instance[ 'fields' ] = pods_var( 'fields', $new_instance, '' ); 
     42        $instance[ 'label' ] = pods_var( 'label', $new_instance, __( 'Submit', 'pods' ), null, true ); 
     43        $instance[ 'thank_you' ] = pods_var( 'thank_you', $new_instance, '' ); 
    3344 
    3445        return $instance; 
     
    3849        $title = pods_var_raw( 'title', $instance, '' ); 
    3950        $pod_type = pods_var_raw( 'pod_type', $instance, '' ); 
     51        $slug = pods_var_raw( 'slug', $instance, '' ); 
     52        $fields = pods_var_raw( 'fields', $instance, '' ); 
     53        $label = pods_var_raw( 'label', $instance, __( 'Submit', 'pods' ), null, true ); 
     54        $thank_you = pods_var_raw( 'thank_you', $instance, '' ); 
    4055 
    4156        require PODS_DIR . 'ui/admin/widgets/form.php'; 
  • pods/trunk/classes/widgets/PodsWidgetList.php

    r608119 r612995  
    2525        // Get widget fields 
    2626        $title = apply_filters( 'widget_title', $instance[ 'title' ] ); 
    27         $pod_type = pods_var( 'pod_type', $instance, '' ); 
    28         $template = pods_var( 'template', $instance, '' ); 
    29         $template_custom = pods_var( 'template_custom', $instance, '' ); 
    30         $limit = pods_var( 'limit', $instance, '' ); 
    31         $orderby = pods_var( 'orderby', $instance, '' ); 
    32         $direction = pods_var( 'direction', $instance, '' ); 
    33         $where = pods_var( 'where', $instance, '' ); 
    3427 
    35         if ( !empty( $pod_type ) && !empty( $template ) ) { 
    36             $shortcode = '[pods '; 
    37             $shortcode .= "name=\"{$pod_type}\" "; 
    38             $shortcode .= "template=\"{$template}\" "; 
     28        $args = array( 
     29            'name' => trim( pods_var_raw( 'pod_type', $instance, '' ) ), 
     30            'template' => trim( pods_var_raw( 'template', $instance, '' ) ), 
     31            'limit' => (int) pods_var_raw( 'limit', $instance, 15, null, true ), 
     32            'orderby' => trim( pods_var_raw( 'orderby', $instance, '' ) ), 
     33            'where' => trim( pods_var_raw( 'where', $instance, '' ) ) 
     34        ); 
    3935 
    40             if ( !empty( $limit ) ) 
    41                 $shortcode .= "limit=\"{$limit}\" "; 
    42             if ( !empty( $orderby ) && !empty( $direction ) ) 
    43                 $shortcode .= "orderby=\"{$orderby} {$direction}\" "; 
    44             if ( !empty( $where ) ) 
    45                 $shortcode .= "where=\"{$where}\" "; 
     36        $content = trim( pods_var_raw( 'template_custom', $instance, '' ) ); 
    4637 
    47             $shortcode .= "]"; 
    48  
    49             if ( !empty ( $template_custom ) ) 
    50                 $shortcode .= $template_custom . '[/pods]'; 
    51  
    52             require PODS_DIR . 'ui/front/widgets/pods_widget_output.php'; 
     38        if ( 0 < strlen( $args[ 'name' ] ) && ( 0 < strlen( $args[ 'template' ] ) || 0 < strlen( $content ) ) ) { 
     39            require PODS_DIR . 'ui/front/widgets.php'; 
    5340        } 
    5441    } 
     
    6653        $instance[ 'template' ] = pods_var( 'template', $new_instance, '' ); 
    6754        $instance[ 'template_custom' ] = pods_var( 'template_custom', $new_instance, '' ); 
    68         $instance[ 'limit' ] = pods_var( 'limit', $new_instance, '' ); 
     55        $instance[ 'limit' ] = (int) pods_var( 'limit', $new_instance, 15, null, true ); 
    6956        $instance[ 'orderby' ] = pods_var( 'orderby', $new_instance, '' ); 
    70         $instance[ 'direction' ] = pods_var( 'direction', $new_instance, '' ); 
    7157        $instance[ 'where' ] = pods_var( 'where', $new_instance, '' ); 
    7258 
     
    8268        $template = pods_var_raw( 'template', $instance, '' ); 
    8369        $template_custom = pods_var_raw( 'template_custom', $instance, '' ); 
    84         $limit = pods_var_raw( 'limit', $instance, '' ); 
     70        $limit = (int) pods_var_raw( 'limit', $instance, 15, null, true ); 
    8571        $orderby = pods_var_raw( 'orderby', $instance, '' ); 
    86         $direction = pods_var_raw( 'direction', $instance, '' ); 
    8772        $where = pods_var_raw( 'where', $instance, '' ); 
    8873 
  • pods/trunk/classes/widgets/PodsWidgetSingle.php

    r608119 r612995  
    2525        // Get widget field values 
    2626        $title = apply_filters( 'widget_title', $instance[ 'title' ] ); 
    27         $pod_type = pods_var( 'pod_type', $instance, '' ); 
    28         $template = pods_var( 'template', $instance, '' ); 
    29         $template_custom = pods_var( 'template_custom', $instance, '' ); 
    30         $slug = pods_var( 'slug', $instance, '' ); 
    3127 
    32         if ( !empty( $pod_type ) && !empty( $template ) && !empty( $slug ) ) { 
    33             $shortcode = '[pods '; 
    34             $shortcode .= "name=\"{$pod_type}\" "; 
    35             $shortcode .= "template=\"{$template}\" "; 
    36             $shortcode .= "slug=\"{$slug}\" "; 
    37             $shortcode .= "]"; 
     28        $args = array( 
     29            'name' => trim( pods_var_raw( 'pod_type', $instance, '' ) ), 
     30            'template' => trim( pods_var_raw( 'template', $instance, '' ) ), 
     31            'slug' => trim( pods_var_raw( 'slug', $instance, '' ) ) 
     32        ); 
    3833 
    39             if ( !empty ( $template_custom ) ) 
    40                 $shortcode .= $template_custom . '[/pods]'; 
     34        $content = trim( pods_var_raw( 'template_custom', $instance, '' ) ); 
    4135 
    42             require PODS_DIR . 'ui/front/widgets/pods_widget_output.php'; 
     36        if ( 0 < strlen( $args[ 'name' ] ) && 0 < strlen( $args[ 'slug' ] ) && ( 0 < strlen( $args[ 'template' ] ) || 0 < strlen( $content ) ) ) { 
     37            require PODS_DIR . 'ui/front/widgets.php'; 
    4338        } 
    44  
    4539    } 
    4640 
  • pods/trunk/components/Pages.php

    r608119 r612995  
    421421        global $pods; 
    422422 
     423        // Fix any global confusion wherever this runs 
     424        if ( isset( $pods ) && !isset( $GLOBALS[ 'pods' ] ) ) 
     425            $GLOBALS[ 'pods' ] =& $pods; 
     426        elseif ( !isset( $pods ) && isset( $GLOBALS[ 'pods' ] ) ) 
     427            $pods =& $GLOBALS[ 'pods' ]; 
     428 
    423429        if ( !defined( 'PODS_DISABLE_POD_PAGE_CHECK' ) || !PODS_DISABLE_POD_PAGE_CHECK ) { 
    424430            if ( null === self::$exists ) 
     
    452458        global $pods; 
    453459 
     460        // Fix any global confusion wherever this runs 
     461        if ( isset( $pods ) && !isset( $GLOBALS[ 'pods' ] ) ) 
     462            $GLOBALS[ 'pods' ] =& $pods; 
     463        elseif ( !isset( $pods ) && isset( $GLOBALS[ 'pods' ] ) ) 
     464            $pods =& $GLOBALS[ 'pods' ]; 
     465 
    454466        $content = false; 
    455467 
     
    490502    public function precode () { 
    491503        global $pods; 
     504 
     505        // Fix any global confusion wherever this runs 
     506        if ( isset( $pods ) && !isset( $GLOBALS[ 'pods' ] ) ) 
     507            $GLOBALS[ 'pods' ] =& $pods; 
     508        elseif ( !isset( $pods ) && isset( $GLOBALS[ 'pods' ] ) ) 
     509            $pods =& $GLOBALS[ 'pods' ]; 
    492510 
    493511        if ( false !== self::$exists ) { 
  • pods/trunk/components/Roles/Roles.php

    r608119 r612995  
    6363                $roles[ $key ][ 'label' ] .= ' (site default)'; 
    6464 
    65             if ( 0 < $count && ( is_super_admin() || current_user_can( 'list_users' ) ) ) { 
     65            if ( 0 < $count && ( is_super_admin() || current_user_can( 'delete_users' ) || current_user_can( 'list_users' ) ) ) { 
    6666                $roles[ $key ][ 'users' ] .= '<br /><a href="' 
    6767                                             . admin_url( esc_url( 'users.php?role=' . $key ) ) . '">' 
     
    106106            $ui[ 'row' ] = $roles[ pods_var( 'id', 'get', -1 ) ]; 
    107107 
    108         if ( !is_super_admin() && !current_user_can( 'pods_roles_add' ) ) 
     108        if ( !is_super_admin() && !current_user_can( 'delete_users' ) && !current_user_can( 'pods_roles_add' ) ) 
    109109            $ui[ 'actions_disabled' ][] = 'add'; 
    110110 
    111         if ( !is_super_admin() && !current_user_can( 'pods_roles_edit' ) ) 
     111        if ( !is_super_admin() && !current_user_can( 'delete_users' ) && !current_user_can( 'pods_roles_edit' ) ) 
    112112            $ui[ 'actions_disabled' ][] = 'edit'; 
    113113 
    114         if ( count( $roles ) < 2 || ( !is_super_admin() && !current_user_can( 'pods_roles_delete' ) ) ) 
     114        if ( count( $roles ) < 2 || ( !is_super_admin() && !current_user_can( 'delete_users' ) && !current_user_can( 'pods_roles_delete' ) ) ) 
    115115            $ui[ 'actions_disabled' ][] = 'delete'; 
    116116 
     
    207207                $roles[ $key ][ 'label' ] .= ' (site default)'; 
    208208 
    209             if ( 0 < $count && ( is_super_admin() || current_user_can( 'list_users' ) ) ) { 
     209            if ( 0 < $count && ( is_super_admin() || current_user_can( 'delete_users' ) || current_user_can( 'list_users' ) ) ) { 
    210210                $roles[ $key ][ 'users' ] .= '<br /><a href="' 
    211211                                             . admin_url( esc_url( 'users.php?role=' . $key ) ) . '">' 
  • pods/trunk/components/Roles/ui/edit.php

    r602388 r612995  
    4444                                        <div id="major-publishing-actions"> 
    4545                                            <div id="publishing-action"> 
     46                                                <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /> 
    4647                                                <input type="submit" name="publish" id="publish" class="button-primary" value="<?php _e( 'Save', 'pods' ); ?>" accesskey="p" /> 
    4748                                            </div> 
  • pods/trunk/components/Templates.php

    r608119 r612995  
    237237     * @return array|bool|int|mixed|null|string|void 
    238238     */ 
    239     public function get_meta( $_null, $post_ID = null, $meta_key = null, $single = false ) { 
     239    public function get_meta ( $_null, $post_ID = null, $meta_key = null, $single = false ) { 
    240240        if ( 'code' == $meta_key ) { 
    241241            $post = get_post( $post_ID ); 
     
    258258     * @return bool|int|null 
    259259     */ 
    260     public function save_meta( $_null, $post_ID = null, $meta_key = null, $meta_value = null ) { 
     260    public function save_meta ( $_null, $post_ID = null, $meta_key = null, $meta_value = null ) { 
    261261        if ( 'code' == $meta_key ) { 
    262262            $post = get_post( $post_ID ); 
  • pods/trunk/deprecated/classes/Pods.php

    r608119 r612995  
    1414 
    1515    var $datatype_id; 
    16  
    17     var $meta = array(); 
    18  
    19     var $meta_properties = array(); 
    20  
    21     var $meta_extra = ''; 
    2216 
    2317    /** 
     
    328322        $val = array(); 
    329323        $result = pods_query( $sql ); 
     324 
    330325        foreach ( $result as $row ) { 
    331326            $row = get_object_vars( $row ); 
    332327            $row[ 'active' ] = false; 
    333             if ( !empty( $params->selected_ids ) ) { 
     328 
     329            if ( !empty( $params->selected_ids ) ) 
    334330                $row[ 'active' ] = in_array( $row[ 'id' ], $params->selected_ids ); 
    335             } 
     331 
    336332            $val[] = $row; 
    337333        } 
     334 
    338335        return $val; 
    339336    } 
     
    406403        pods_deprecated( 'Pods::get_field', '2.0.0', 'Pods::field' ); 
    407404 
    408         $value = $this->obj->field( array( 'name' => $name, 'orderby' => $orderby ) ); 
     405        $value = $this->obj->field( array( 'name' => $name, 'orderby' => $orderby, 'deprecated' => true ) ); 
    409406 
    410407        if ( is_array( $value ) && !empty( $value ) ) { 
     
    563560 
    564561        $params = array( 
    565             'filters' => $filters, 
     562            'fields' => $filters, 
    566563            'label' => $label, 
    567             'action' => $action, 
    568             'show_textbox' => true 
     564            'action' => $action 
    569565        ); 
    570566 
  • pods/trunk/deprecated/classes/PodsAPI.php

    r608119 r612995  
    2828        // backwards-compatibility with references to $this->var_name 
    2929        $vars = get_object_vars( $obj ); 
     30 
    3031        foreach ( (array) $vars as $key => $val ) { 
    3132            $this->{$key} = $val; 
     
    5960        return $this->obj->save_field( $params ); 
    6061    } 
    61  
    62     /** 
    63      * Add or edit a single pod item 
    64      * 
    65      * $params['pod'] string The Pod name 
    66      * $params['pod_id'] string The Pod name 
    67      * $params['columns'] array (optional) Associative array of column names + values 
    68      * $params['data'] array (optional) Associative array of a set of associative arrays of column names + values (for bulk operations) 
    69      * $params['id'] int The item's ID from the wp_pod_* table (or alternatively use the pod_id parameter instead) 
    70      * $params['bypass_helpers'] bool Set to true to bypass running pre-save and post-save helpers 
    71      * 
    72      * @param array $params An associative array of parameters 
    73      * 
    74      * @return int The item ID 
    75      * @since 1.7.9 
    76      * 
    77      * @todo Determine new name 
    78      */ 
    79     /*public function save_pod_item ( $params ) { 
    80         pods_deprecated( 'PodsAPI::save', '2.0.0' ); 
    81  
    82         return $this->obj->save( $params ); 
    83     }*/ 
    8462 
    8563    /** 
     
    190168     */ 
    191169    public function drop_pod_item ( $params ) { 
    192         pods_deprecated( 'PodsAPI::delete_item', '2.0.0' ); 
     170        pods_deprecated( 'PodsAPI::delete_pod_item', '2.0.0' ); 
    193171 
    194         return $this->obj->delete_item( $params ); 
     172        return $this->obj->delete_pod_item( $params ); 
    195173    } 
    196174 
     
    210188        return $this->obj->load_field( $params ); 
    211189    } 
    212  
    213     /** 
    214      * Handle methods that have been deprecated 
    215      * 
    216      * @since 2.0.0 
    217      */ 
    218     public function __call ( $name, $args ) { 
    219         $name = (string) $name; 
    220  
    221         if ( !isset( $this->deprecated ) ) { 
    222             require_once( PODS_DIR . 'deprecated/classes/PodsAPI.php' ); 
    223             $this->deprecated = new PodsAPI_Deprecated( $this ); 
    224         } 
    225  
    226         if ( method_exists( $this->deprecated, $name ) ) { 
    227             $arg_count = count( $args ); 
    228             if ( 0 == $arg_count ) 
    229                 $this->deprecated->{$name}(); 
    230             elseif ( 1 == $arg_count ) 
    231                 $this->deprecated->{$name}( $args[ 0 ] ); 
    232             elseif ( 2 == $arg_count ) 
    233                 $this->deprecated->{$name}( $args[ 0 ], $args[ 1 ] ); 
    234             elseif ( 3 == $arg_count ) 
    235                 $this->deprecated->{$name}( $args[ 0 ], $args[ 1 ], $args[ 2 ] ); 
    236             else 
    237                 $this->deprecated->{$name}( $args[ 0 ], $args[ 1 ], $args[ 2 ], $args[ 3 ] ); 
    238         } 
    239         else 
    240             pods_deprecated( "PodsAPI::{$name}", '2.0.0' ); 
    241     } 
    242190} 
  • pods/trunk/deprecated/deprecated.php

    r605009 r612995  
    114114    private $new; 
    115115 
     116    public $body_classes; 
     117 
     118    public $ui = array(); 
     119 
     120    public $meta = array(); 
     121 
     122    public $meta_properties = array(); 
     123 
     124    public $meta_extra = ''; 
     125 
    116126    function __construct ($type = null, $id = null) { 
    117127        pods_deprecated('Pod (class)', '2.0.0', 'pods (function)'); 
     
    133143            $var = $this->new->row(); 
    134144        } 
    135         elseif ( '_data' == $name ) { 
    136             $var =& $this->new->data; 
    137         } 
     145        elseif ( '_data' == $name ) 
     146            $var = $this->new->data; 
    138147        elseif ( 'total' == $name ) { 
    139148            pods_deprecated( "Pods->{$name}", '2.0.0', "Pods->total()" ); 
     
    152161        } 
    153162        else 
    154             $var =& $this->new->{$name}; 
     163            $var = $this->new->{$name}; 
    155164 
    156165        return $var; 
     
    158167 
    159168    /** 
     169     * Handle variables that have been deprecated 
     170     * 
     171     * @since 2.0.0 
     172     */ 
     173    public function __set ( $name, $value ) { 
     174        $name = (string) $name; 
     175 
     176        $this->new->{$name} = $value; 
     177 
     178        return $value; 
     179    } 
     180 
     181    /** 
    160182     * Handle methods that have been deprecated 
    161183     * 
     
    177199 
    178200        if ( in_array( $name, array( '_data', 'data', 'total', 'total_rows', 'zebra' ) ) ) 
     201            return true; 
     202        elseif ( in_array( $name, array( 'meta', 'meta_properties', 'meta_extra' ) ) ) 
    179203            return true; 
    180204        else 
  • pods/trunk/functions.php

    r608119 r612995  
    3232    } 
    3333 
     34    if ( 1 == pods_var( 'pods_debug_sql_all', 'get', 0 ) && is_user_logged_in() && ( is_super_admin() || current_user_can( 'delete_users' ) || current_user_can( 'pods' ) ) ) { 
     35        $debug_sql = $sql; 
     36 
     37        echo '<textarea cols="100" rows="24">'; 
     38 
     39        if ( is_array( $debug_sql ) ) 
     40            print_r( $debug_sql ); 
     41        else 
     42            echo $debug_sql; 
     43 
     44        echo '</textarea>'; 
     45    } 
     46 
    3447    return $podsdata->query( $sql, $error, $results_error, $no_results_error ); 
    3548} 
     
    167180        $debug = esc_html( $debug ); 
    168181 
    169     $debug = '<e><pre>' . $debug . '</pre>'; 
     182    if ( false === strpos( $debug, "<pre class='xdebug-var-dump' dir='ltr'>" ) ) 
     183        $debug = '<e><pre>' . $debug . '</pre>'; 
     184    else 
     185        $debug = '<e>' . $debug; 
    170186 
    171187    if ( 2 === $die ) 
     
    669685    if ( !empty( $array ) ) { 
    670686        foreach ( $array as $key => $val ) { 
    671             if ( is_array( $val ) && !empty( $val ) ) 
    672                 $get[ $key ] = $val; 
    673             elseif ( !is_array( $val ) && 0 < strlen( $val ) ) 
    674                 $get[ $key ] = $val; 
    675             elseif ( isset( $get[ $key ] ) ) 
    676                 unset( $get[ $key ] ); 
     687            if ( null !== $val || false === strpos( $key, '*' ) ) { 
     688                if ( is_array( $val ) && !empty( $val ) ) 
     689                    $get[ $key ] = $val; 
     690                elseif ( !is_array( $val ) && 0 < strlen( $val ) ) 
     691                    $get[ $key ] = $val; 
     692                elseif ( isset( $get[ $key ] ) ) 
     693                    unset( $get[ $key ] ); 
     694            } 
     695            else { 
     696                $key = str_replace( '*', '', $key ); 
     697 
     698                foreach ( $get as $k => $v ) { 
     699                    if ( false !== strpos( $k, $key ) ) 
     700                        unset( $get[ $k ] ); 
     701                } 
     702            } 
    677703        } 
    678704    } 
     
    906932        return false; 
    907933 
    908     if ( current_user_can( 'administrator' ) || current_user_can( 'pods_administrator' ) || is_super_admin() ) 
     934    if ( is_super_admin() || current_user_can( 'delete_users' ) || current_user_can( 'pods' ) || current_user_can( 'pods_content' ) ) 
    909935        return true; 
    910936 
     
    9751001        'col' => null, 
    9761002        'template' => null, 
    977         'helper' => null 
     1003        'helper' => null, 
     1004        'form' => null, 
     1005        'fields' => null, 
     1006        'label' => null, 
     1007        'thank_you' => null 
    9781008    ); 
    9791009 
     
    9851015 
    9861016    if ( empty( $tags[ 'name' ] ) ) { 
    987         return '<e>Please provide a Pod name'; 
     1017        return '<p>Please provide a Pod name</p>'; 
    9881018    } 
    9891019 
    9901020    if ( !empty( $tags[ 'col' ] ) ) { 
    9911021        $tags[ 'field' ] = $tags[ 'col' ]; 
     1022 
    9921023        unset( $tags[ 'col' ] ); 
    9931024    } 
    9941025 
     1026    if ( !empty( $tags[ 'order' ] ) ) { 
     1027        $tags[ 'orderby' ] = $tags[ 'order' ]; 
     1028 
     1029        unset( $tags[ 'order' ] ); 
     1030    } 
     1031 
    9951032    if ( empty( $content ) && empty( $tags[ 'template' ] ) && empty( $tags[ 'field' ] ) ) { 
    996         return '<e>Please provide either a template or field name'; 
     1033        return '<p>Please provide either a template or field name</p>'; 
    9971034    } 
    9981035 
     
    10111048    $found = 0; 
    10121049 
    1013     if ( empty( $id ) ) { 
     1050    if ( !empty( $tags[ 'form' ] ) ) 
     1051        return $pod->form( $tags[ 'fields' ], $tags[ 'label' ], $tags[ 'thank_you' ] ); 
     1052    elseif ( empty( $id ) ) { 
    10141053        $params = array(); 
    1015  
    1016         if ( 0 < strlen( $tags[ 'order' ] ) ) 
    1017             $params[ 'orderby' ] = $tags[ 'order' ]; 
    10181054 
    10191055        if ( 0 < strlen( $tags[ 'orderby' ] ) ) 
     
    10791115 */ 
    10801116function pods_serial_comma ( $value, $field = null, $fields = null ) { 
    1081     $value = (array) $value; 
     1117    if ( is_object( $value ) ) 
     1118        $value = get_object_vars( $value ); 
     1119 
     1120    if ( !is_array( $value ) ) 
     1121        return $value; 
    10821122 
    10831123    $field_index = null; 
     
    11221162                $value = $value[ 0 ]; 
    11231163 
    1124             if ( isset( $value[ $field_index ] ) ) { 
    1125                 $value = $value[ $field_index ]; 
    1126  
    1127                 if ( 0 < strlen( $value ) && 0 < strlen( $last ) ) 
    1128                     $value .= $and . $last; 
    1129                 elseif ( 0 < strlen( $last ) ) 
    1130                     $value = $last; 
     1164            if ( is_array( $value ) ) { 
     1165                if ( isset( $value[ $field_index ] ) ) 
     1166                    $value = $value[ $field_index ]; 
    11311167                else 
    11321168                    $value = ''; 
    11331169            } 
    1134             else 
    1135                 $value = ''; 
    11361170        } 
    11371171        else { 
     
    11511185 
    11521186            $value = implode( ', ', $value ); 
    1153  
    1154             if ( 0 < strlen( $value ) && 0 < strlen( $last ) ) 
    1155                 $value .= $and . $last; 
    1156             elseif ( 0 < strlen( $last ) ) 
    1157                 $value = $last; 
    1158             else 
    1159                 $value = ''; 
    1160         } 
     1187        } 
     1188 
     1189        if ( 0 < strlen( $value ) && 0 < strlen( $last ) ) 
     1190            $value .= $and . $last; 
     1191        elseif ( 0 < strlen( $last ) ) 
     1192            $value = $last; 
     1193        else 
     1194            $value = ''; 
    11611195    } 
    11621196    else 
  • pods/trunk/init.php

    r608507 r612995  
    44Plugin URI: http://podsframework.org/ 
    55Description: Pods is a framework for creating, managing, and deploying customized content types and fields 
    6 Version: 2.0.3.1 
     6Version: 2.0.4 
    77Author: Pods Framework Team 
    88Author URI: http://podsframework.org/about/ 
     
    3333// Prevent conflicts with Pods 1.x 
    3434if ( !defined( 'PODS_VERSION' ) && !defined( 'PODS_DIR' ) && !function_exists( 'pods_ui_manage' ) ) { 
    35     define( 'PODS_VERSION', '2.0.3.1' ); 
     35    define( 'PODS_VERSION', '2.0.4' ); 
    3636 
    3737    if ( !defined( 'PODS_GITHUB_UPDATE' ) ) 
     
    3939 
    4040    if ( !defined( 'PODS_GITHUB_BRANCH' ) ) 
    41         define( 'PODS_GITHUB_BRANCH', '2.1' ); 
     41        define( 'PODS_GITHUB_BRANCH', '2.0.x' ); 
    4242 
    4343    if ( !defined( 'PODS_WP_VERSION_MINIMUM' ) ) 
  • pods/trunk/readme.txt

    r608536 r612995  
    55Requires at least: 3.4 
    66Tested up to: 3.5 
    7 Stable tag: 2.0.3.1 
     7Stable tag: 2.0.4 
    88License: GPLv2 or later 
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html 
     
    100100== Changelog == 
    101101 
     102= 2.0.4 - October 15th, 2012 = 
     103* Big bug fix release, we've fixed tons of bugs and improved backwards compatibility even further - stability, stability, stability! 
     104* Found a bug? Have a great feature idea? Get on GitHub and tell us about it and we'll get right on it: https://github.com/pods-framework/pods/issues/new 
     105* Our GitHub also has a full list of issues closed for this release and all previous 2.x releases, you can even browse our code and contribute notes and patches all from the web 
     106 
    102107= 2.0.3.1 - October 5th, 2012 = 
    103108* Fixed an upgrade issue a few users were reporting where the upgrade wouldn't start 
    104109* Fixed reserved post_name issues with our internal post types for Pods and Fields (rss, date, and any other feeds) 
    105 * Found a bug? Have a great feature idea? Get on GitHub and tell us about it and we'll get right on it: https://github.com/pods-framework/pods/issues/new 
    106110 
    107111= 2.0.3 - October 4th, 2012 = 
  • pods/trunk/sql/PodsUpgrade.php

    r608119 r612995  
    786786        $wp_roles = get_option( "{$wpdb->prefix}user_roles" ); 
    787787 
    788         $old_roles = (array) @unserialize( get_option( 'pods_roles' ) ); 
     788        $old_roles = get_option( 'pods_roles' ); 
     789 
     790        if ( !is_array( $old_roles ) && !empty( $old_roles ) ) 
     791            $old_roles = @unserialize( $old_roles ); 
     792 
     793        if ( !is_array( $old_roles ) ) 
     794            $old_roles = array(); 
    789795 
    790796        if ( !empty( $old_roles ) ) { 
     
    793799                    continue; 
    794800 
     801                if ( !isset( $wp_roles[ $role ] ) ) 
     802                    continue; 
     803 
    795804                $caps = $wp_roles[ $role ][ 'capabilities' ]; 
    796805 
    797806                foreach ( $data as $cap ) { 
    798807                    if ( 0 === strpos( 'manage_', $cap ) ) { 
    799                         if ( in_array( $cap, array( 'manage_roles', 'manage_content' ) ) ) 
     808                        if ( in_array( $cap, array( 'manage_roles' ) ) ) 
    800809                            continue; 
    801810 
  • pods/trunk/ui/admin/form.php

    r608119 r612995  
    55if ( empty( $fields ) || !is_array( $fields ) ) 
    66    $fields = $obj->pod->fields; 
     7 
     8if ( !isset( $duplicate ) ) 
     9    $duplicate = false; 
     10else 
     11    $duplicate = (boolean) $duplicate; 
    712 
    813// unset fields 
     
    2530    $uid = 'user_' . get_current_user_id(); 
    2631 
    27 $nonce = wp_create_nonce( 'pods_form_' . $pod->pod . '_' . $uid . '_' . $pod->id() . '_' . $uri_hash . '_' . $field_hash ); 
     32$nonce = wp_create_nonce( 'pods_form_' . $pod->pod . '_' . $uid . '_' . ( $duplicate ? 0 : $pod->id() ) . '_' . $uri_hash . '_' . $field_hash ); 
    2833 
    2934if ( isset( $_POST[ '_pods_nonce' ] ) ) { 
     
    3237    if ( 'create' == pods_var_raw( 'do', 'post', 'save' ) ) 
    3338        $action = __( 'created', 'pods' ); 
     39    elseif ( 'duplicate' == pods_var_raw( 'do', 'get', 'save' ) ) 
     40        $action = __( 'duplicated', 'pods' ); 
    3441 
    3542    try { 
     
    5461    if ( 'create' == pods_var_raw( 'do', 'get', 'save' ) ) 
    5562        $action = __( 'created', 'pods' ); 
     63    elseif ( 'duplicate' == pods_var_raw( 'do', 'get', 'save' ) ) 
     64        $action = __( 'duplicated', 'pods' ); 
    5665 
    5766    $message = sprintf( __( '<strong>Success!</strong> %s %s successfully.', 'pods' ), $obj->item, $action ); 
     
    6675if ( !isset( $label ) ) 
    6776    $label = _e( 'Save', 'pods' ); 
     77 
     78$do = 'create'; 
     79 
     80if ( 0 < $pod->id() ) { 
     81    if ( $duplicate ) 
     82        $do = 'duplicate'; 
     83    else 
     84        $do = 'save'; 
     85} 
    6886?> 
    6987 
     
    7290        <?php echo PodsForm::field( 'action', 'pods_admin', 'hidden' ); ?> 
    7391        <?php echo PodsForm::field( 'method', 'process_form', 'hidden' ); ?> 
    74         <?php echo PodsForm::field( 'do', ( 0 < $pod->id() ? 'save' : 'create' ), 'hidden' ); ?> 
     92        <?php echo PodsForm::field( 'do', $do, 'hidden' ); ?> 
    7593        <?php echo PodsForm::field( '_pods_nonce', $nonce, 'hidden' ); ?> 
    7694        <?php echo PodsForm::field( '_pods_pod', $pod->pod, 'hidden' ); ?> 
    77         <?php echo PodsForm::field( '_pods_id', $pod->id(), 'hidden' ); ?> 
     95        <?php echo PodsForm::field( '_pods_id', ( $duplicate ? 0 : $pod->id() ), 'hidden' ); ?> 
    7896        <?php echo PodsForm::field( '_pods_uri', $uri_hash, 'hidden' ); ?> 
    7997        <?php echo PodsForm::field( '_pods_form', implode( ',', array_keys( $fields ) ), 'hidden' ); ?> 
     
    92110                                    <div id="major-publishing-actions"> 
    93111                                        <?php 
    94                                             if ( ( is_super_admin() || current_user_can( 'pods_delete_' . $pod->pod ) ) && null !== pods_var_raw( 'id' ) ) { 
     112                                            if ( ( is_super_admin() || current_user_can( 'delete_users' ) || current_user_can( 'pods_delete_' . $pod->pod ) ) && null !== $pod->id() && !$duplicate ) { 
    95113                                        ?> 
    96114                                            <div id="delete-action"> 
     
    118136                    <!-- /#submitdiv --><!-- END PUBLISH DIV --><!-- TODO: minor column fields --> 
    119137                    <?php 
    120                         if ( pods_var_raw( 'action' ) == 'edit' ) { 
     138                        if ( pods_var_raw( 'action' ) == 'edit' && !$duplicate ) { 
    121139                            if ( !isset( $singular_label ) ) 
    122140                                $singular_label = ucwords( str_replace( '_', ' ', $pod->pod_data[ 'name' ] ) ); 
  • pods/trunk/ui/admin/setup-add.php

    r603726 r612995  
    6666                                    <div class="pods-field-option"> 
    6767                                        <?php 
    68                                         echo PodsForm::label( 'create_pod_type', __( 'Content Type', 'pods' ), __( 'help', 'pods' ) ); 
     68                                            echo PodsForm::label( 'create_pod_type', __( 'Content Type', 'pods' ), __( 'help', 'pods' ) ); 
     69 
     70                                            $data = array( 
     71                                                'post_type' => __( 'Custom Post Type (like Posts or Pages)', 'pods' ), 
     72                                                'taxonomy' => __( 'Custom Taxonomy (like Categories or Tags)', 'pods' ), 
     73                                                'pod' => __( 'Advanced Content Type (separate from WP, blank slate, in its own table)', 'pods' ) 
     74                                            ); 
     75 
     76                                            echo PodsForm::field( 'create_pod_type', pods_var_raw( 'create_pod_type', 'post' ), 'pick', array( 'data' => $data, 'class' => 'pods-dependent-toggle' ) ); 
     77                                        ?> 
     78                                    </div> 
     79                                    <div class="pods-field-option pods-depends-on pods-depends-on-create-pod-type pods-depends-on-create-pod-type-taxonomy"> 
     80                                        <?php 
     81                                        echo PodsForm::label( 'create_storage_taxonomy', __( 'Enable Extra Fields?', 'pods' ), __( 'Taxonomies do not support extra fields natively, but Pods can add this feature for you easily. Table based storage will operate in a way where each field you create for your content type becomes a field in a table.' ) ); 
    6982 
    7083                                        $data = array( 
    71                                             'post_type' => __( 'Custom Post Type (like Posts or Pages)', 'pods' ), 
    72                                             'taxonomy' => __( 'Custom Taxonomy (like Categories or Tags)', 'pods' ), 
    73                                             'pod' => __( 'Advanced Content Type (separate from WP, blank slate, in its own table)', 'pods' ) 
     84                                            'none' => __( 'Do not enable extra fields to be added', 'pods' ), 
     85                                            'table' => __( 'Enable extra fields for this Taxonomy (Table Based)', 'pods' ) 
    7486                                        ); 
    7587 
    76                                         echo PodsForm::field( 'create_pod_type', pods_var_raw( 'create_pod_type', 'post' ), 'pick', array( 'data' => $data, 'class' => 'pods-dependent-toggle' ) ); 
    77                                         ?> 
    78                                     </div> 
    79                                     <div class="pods-field-option"> 
    80                                         <?php 
    81                                         global $wpdb; 
    82                                         $max_length_name = 64; 
    83                                         $max_length_name -= 10; // Allow for WP Multisite or prefix changes in the future 
    84                                         $max_length_name -= strlen( $wpdb->prefix . 'pods_' ); 
    85  
    86                                         echo PodsForm::label( 'create_label_plural', __( 'Plural Label', 'pods' ), __( 'help', 'pods' ) ); 
    87                                         echo PodsForm::field( 'create_label_plural', pods_var_raw( 'create_label_plural', 'post' ), 'text', array( 'class' => 'pods-validate pods-validate-required' ) ); 
    88                                         ?> 
    89                                     </div> 
     88                                        echo PodsForm::field( 'create_storage_taxonomy', pods_var_raw( 'create_storage_taxonomy', 'post', 'none', null, true ), 'pick', array( 'data' => $data ) ); 
     89                                        ?> 
     90                                    </div> 
     91                                    <div class="pods-field-option"> 
     92                                        <?php 
     93                                            global $wpdb; 
     94                                            $max_length_name = 64; 
     95                                            $max_length_name -= 10; // Allow for WP Multisite or prefix changes in the future 
     96                                            $max_length_name -= strlen( $wpdb->prefix . 'pods_' ); 
     97 
     98                                            echo PodsForm::label( 'create_label_plural', __( 'Plural Label', 'pods' ), __( 'help', 'pods' ) ); 
     99                                            echo PodsForm::field( 'create_label_plural', pods_var_raw( 'create_label_plural', 'post' ), 'text', array( 'class' => 'pods-validate pods-validate-required', 'text_max_length' => 20 ) ); 
     100                                        ?> 
     101                                    </div> 
     102                                    <div class="pods-field-option"> 
     103                                        <?php 
     104                                            echo PodsForm::label( 'create_label_singular', __( 'Singular Label', 'pods' ), __( 'help', 'pods' ) ); 
     105                                            echo PodsForm::field( 'create_label_singular', pods_var_raw( 'create_label_singular', 'post' ), 'text', array( 'text_max_length' => 20 ) ); 
     106                                        ?> 
     107                                    </div> 
     108 
    90109                                    <p> 
    91110                                        <a href="#pods-advanced" class="pods-advanced-toggle"><?php _e( 'Advanced', 'pods' ); ?> +</a> 
     
    95114                                        <div class="pods-field-option"> 
    96115                                            <?php 
    97                                             echo PodsForm::label( 'create_name', __( 'Identifier', 'pods' ), __( 'You will use this name to programatically reference this object throughout WordPress', 'pods' ) ); 
    98                                             echo PodsForm::field( 'create_name', pods_var_raw( 'create_name', 'post' ), 'db', array( 'attributes' => array( 'maxlength' => $max_length_name, 'size' => 25, 'data-sluggable' => 'create_label_plural' ), 'class' => 'pods-validate pods-validate-required pods-slugged-lower' ) ); 
    99                                             ?> 
    100                                         </div> 
    101                                         <div class="pods-field-option"> 
    102                                             <?php 
    103                                             echo PodsForm::label( 'create_label_singular', __( 'Singular Label', 'pods' ), __( 'help', 'pods' ) ); 
    104                                             echo PodsForm::field( 'create_label_singular', pods_var_raw( 'create_label_singular', 'post' ), 'text' ); 
     116                                                echo PodsForm::label( 'create_name', __( 'Identifier', 'pods' ), __( 'You will use this name to programatically reference this object throughout WordPress', 'pods' ) ); 
     117                                                echo PodsForm::field( 'create_name', pods_var_raw( 'create_name', 'post' ), 'db', array( 'attributes' => array( 'maxlength' => $max_length_name, 'size' => 25, 'data-sluggable' => 'create_label_plural' ), 'class' => 'pods-validate pods-validate-required pods-slugged-lower' ) ); 
    105118                                            ?> 
    106119                                        </div> 
    107120                                        <div class="pods-field-option pods-depends-on pods-depends-on-create-pod-type pods-depends-on-create-pod-type-post_type"> 
    108121                                            <?php 
    109                                             echo PodsForm::label( 'create_storage', __( 'Storage Type', 'pods' ), __( 'Table based storage will operate in a way where each field you create for your content type becomes a field in a table, where as Meta based relies upon WordPress\' meta storage table for all field data.' ) ); 
    110  
    111                                             $data = array( 
    112                                                 'meta' => 'Meta Based (WP Default)', 
    113                                                 'table' => 'Table Based' 
    114                                             ); 
    115  
    116                                             echo PodsForm::field( 'create_storage', pods_var_raw( 'create_storage', 'post' ), 'pick', array( 'data' => $data ) ); 
    117                                             ?> 
    118                                         </div> 
    119                                         <div class="pods-field-option pods-depends-on pods-depends-on-create-pod-type pods-depends-on-create-pod-type-taxonomy"> 
    120                                             <?php 
    121                                             echo PodsForm::label( 'create_storage_taxonomy', __( 'Storage Type', 'pods' ), __( 'Table based storage will operate in a way where each field you create for your content type becomes a field in a table. No other storage types are available in addition to our table-based storage because this WordPress object does not support additional fields natively.' ) ); 
    122  
    123                                             $data = array( 
    124                                                 'none' => 'Do not add additional fields', 
    125                                                 'table' => 'Table Based' 
    126                                             ); 
    127  
    128                                             echo PodsForm::field( 'create_storage_taxonomy', pods_var_raw( 'create_storage_taxonomy', 'post', 'none', null, true ), 'pick', array( 'data' => $data ) ); 
     122                                                echo PodsForm::label( 'create_storage', __( 'Storage Type', 'pods' ), __( 'Table based storage will operate in a way where each field you create for your content type becomes a field in a table, where as Meta based relies upon WordPress\' meta storage table for all field data.' ) ); 
     123 
     124                                                $data = array( 
     125                                                    'meta' => __( 'Meta Based (WP Default)', 'pods' ), 
     126                                                    'table' => __( 'Table Based', 'pods' ) 
     127                                                ); 
     128 
     129                                                echo PodsForm::field( 'create_storage', pods_var_raw( 'create_storage', 'post' ), 'pick', array( 'data' => $data ) ); 
    129130                                            ?> 
    130131                                        </div> 
  • pods/trunk/ui/admin/setup-edit.php

    r608119 r612995  
    415415    <div class="pods-field-option"> 
    416416        <?php echo PodsForm::label( 'label', __( 'Label', 'pods' ), __( 'help', 'pods' ) ); ?> 
    417         <?php echo PodsForm::field( 'label', pods_var_raw( 'label', $pod ), 'text' ); ?> 
     417        <?php echo PodsForm::field( 'label', pods_var_raw( 'label', $pod ), 'text', array( 'text_max_length' => 20 ) ); ?> 
    418418    </div> 
    419419    <div class="pods-field-option"> 
    420420        <?php echo PodsForm::label( 'label_singular', __( 'Singular Label', 'pods' ), __( 'help', 'pods' ) ); ?> 
    421         <?php echo PodsForm::field( 'label_singular', pods_var_raw( 'label_singular', $pod, pods_var_raw( 'label', $pod, ucwords( str_replace( '_', ' ', pods_var_raw( 'name', $pod ) ) ) ) ), 'text' ); ?> 
     421        <?php echo PodsForm::field( 'label_singular', pods_var_raw( 'label_singular', $pod, pods_var_raw( 'label', $pod, ucwords( str_replace( '_', ' ', pods_var_raw( 'name', $pod ) ) ) ) ), 'text', array( 'text_max_length' => 20 ) ); ?> 
    422422    </div> 
    423423    <div class="pods-field-option"> 
  • pods/trunk/ui/admin/shortcode.php

    r603447 r612995  
    77                slug = $( '#pod_slug' ).val(), 
    88                orderby = $( '#pod_orderby' ).val(), 
    9                 direction = $( '#pod_direction' ).val(), 
    10                 template = $( '#pod_template' ).val(), 
     9                limit = $( '#pod_limit' ).val(), 
     10                where = $( '#pod_where' ).val(), 
     11                <?php if ( class_exists( 'Pods_Templates' ) ) { ?> 
     12                    template = $( '#pod_template' ).val(), 
     13                <?php } else { ?> 
     14                    template = '', 
     15                <?php } ?> 
    1116                template_custom = $( '#pod_template_custom' ).val(), 
    12                 limit = $( '#pod_limit' ).val(), 
    1317                field = $( '#pod_field' ).val(), 
    1418                fields = $( '#pod_fields' ).val(), 
    15                 helper = $( '#pod_helper' ).val(), 
    16                 where = $( '#pod_where' ).val(), 
     19                label = $( '#pod_label' ).val(), 
     20                thank_you = $( '#pod_thank_you' ).val(), 
    1721                shortcode = '[pods', 
    1822                pods_shortcode_first = true; 
     
    5155                    } 
    5256                    break; 
     57                case 'form': 
     58                    if ( !pod_select || !pod_select.length ) { 
     59                        errors.push( "Pod" ); 
     60                    } 
     61                    break; 
    5362            } 
    5463 
     
    6069            } 
    6170 
     71            // Slash and burn 
     72            pod_select = ( pod_select + '' ).replace( /\\"/g, '\\$&' ).replace( /\u0000/g, '\\0' ); 
     73            slug = ( slug + '' ).replace( /\\"/g, '\\$&' ).replace( /\u0000/g, '\\0' ); 
     74            orderby = ( orderby + '' ).replace( /\\"/g, '\\$&' ).replace( /\u0000/g, '\\0' ); 
     75            limit = ( limit + '' ).replace( /\\"/g, '\\$&' ).replace( /\u0000/g, '\\0' ); 
     76            where = ( where + '' ).replace( /\\"/g, '\\$&' ).replace( /\u0000/g, '\\0' ); 
     77            template = ( template + '' ).replace( /\\"/g, '\\$&' ).replace( /\u0000/g, '\\0' ); 
     78            field = ( field + '' ).replace( /\\"/g, '\\$&' ).replace( /\u0000/g, '\\0' ); 
     79            fields = ( fields + '' ).replace( /\\"/g, '\\$&' ).replace( /\u0000/g, '\\0' ); 
     80            label = ( label + '' ).replace( /\\"/g, '\\$&' ).replace( /\u0000/g, '\\0' ); 
     81            thank_you = ( thank_you + '' ).replace( /\\"/g, '\\$&' ).replace( /\u0000/g, '\\0' ); 
     82 
    6283            shortcode += ' name="' + pod_select + '"'; 
    63             if ( slug && slug.length ) { 
     84 
     85            if ( slug.length ) 
    6486                shortcode += ' slug="' + slug + '"'; 
    65             } 
    66             if ( orderby && orderby.length ) { 
    67                 if ( direction.length ) { 
    68                     shortcode += ' orderby="' + orderby + ' ' + direction + '"'; 
    69                 } 
    70                 else { 
    71                     shortcode += ' orderby="' + orderby + ' ASC"'; 
    72                 } 
    73             } 
    74             if ( template && template.length ) { 
    75                 shortcode += ' template="' + template + '"'; 
    76             } 
    77             if ( limit && limit.length ) { 
     87 
     88            if ( orderby.length ) 
     89                shortcode += ' orderby="' + orderby + '"'; 
     90 
     91            if ( limit.length ) 
    7892                shortcode += ' limit="' + limit + '"'; 
    79             } 
    80             if ( field && field.length ) { 
     93 
     94            if ( where.length ) 
     95                shortcode += ' where="' + where + '"'; 
     96 
     97            <?php if ( class_exists( 'Pods_Templates' ) ) { ?> 
     98                if ( template.length ) 
     99                    shortcode += ' template="' + template + '"'; 
     100            <?php } ?> 
     101 
     102            if ( field.length ) 
    81103                shortcode += ' field="' + field + '"'; 
    82             } 
    83             if ( helper && helper.length ) { 
    84                 shortcode += ' helper="' + helper + '"'; 
    85             } 
    86             if ( where && where.length ) { 
    87                 shortcode += ' where="' + where + '"'; 
    88             } 
     104 
     105            if ( fields.length ) 
     106                shortcode += ' fields="' + fields + '"'; 
     107 
     108            if ( label.length ) 
     109                shortcode += ' label="' + label + '"'; 
     110 
     111            if ( thank_you.length ) 
     112                shortcode += ' thank-you="' + thank_you + '"'; 
    89113 
    90114            shortcode += ']'; 
    91115 
    92             if ( template_custom && template_custom.length ) { 
    93                 console.log( template_custom ); 
     116            if ( template_custom && template_custom.length ) 
    94117                shortcode += '<br />' + template_custom.replace( /\n/g, '<br />' ) + '<br />[/pods]'; 
    95             } 
    96  
    97             if ( (use_case == 'single' && window.pods_template_count == 0) || (use_case == 'list' && window.pods_template_count == 0) ) { 
    98                 alert( "No templates found!" ); 
    99                 return false; 
    100             } 
    101118 
    102119            window.send_to_editor( shortcode ); 
     
    108125                $podSelector = $( '#pod_select' ), 
    109126                pods_ajaxurl = "<?php echo admin_url( 'admin-ajax.php?pods_ajax=1' ); ?>", 
    110                 nonce = "<?php echo wp_create_nonce( 'pods-load_pod' ); ?>"; 
     127                nonce = "<?php echo wp_create_nonce( 'pods-shortcode_load_fields' ); ?>"; 
    111128 
    112129        $useCaseSelector.change(function ( evt ) { 
     
    122139                    break; 
    123140                case 'list': 
    124                     $( '#pod_select, #pod_limit, #pod_orderby, #pod_direction, #pod_where, #pod_template, #pod_template_custom, #pods_insert_shortcode' ).each( function () { 
     141                    $( '#pod_select, #pod_limit, #pod_orderby, #pod_where, #pod_template, #pod_template_custom, #pods_insert_shortcode' ).each( function () { 
    125142                        $( this ).closest( '.pods-section' ).removeClass( 'hide' ); 
    126143                    } ) 
    127144                    break; 
    128145                case 'field': 
    129                     $( '#pod_select, #pod_slug, #pod_helper, #pod_field, #pods_insert_shortcode' ).each( function () { 
     146                    $( '#pod_select, #pod_slug, #pod_field, #pods_insert_shortcode' ).each( function () { 
    130147                        $( this ).closest( '.pods-section' ).removeClass( 'hide' ); 
    131148                    } ) 
    132149                    break; 
    133150                case 'form': 
    134                     $( '#pod_select, #pod_slug, #pod_fields, #pods_insert_shortcode' ).each( function () { 
     151                    $( '#pod_select, #pod_slug, #pod_fields, #pod_label, #pod_thank_you, #pods_insert_shortcode' ).each( function () { 
    135152                        $( this ).closest( '.pods-section' ).removeClass( 'hide' ); 
    136153                    } ) 
     
    144161            } 
    145162        } ); 
    146  
    147         // @todo this code is not what it should be.. 
    148         $( '#pod_select' ).change(function () { 
    149             var pod = $( this ).val(); 
    150             var jax = $.ajax( pods_ajaxurl, { 
    151                 type : 'POST', 
    152                 dataType : 'json', 
    153                 data : { 
    154                     action : 'pods_admin', 
    155                     method : 'load_pod', 
    156                     name : pod, 
    157                     _wpnonce : nonce 
    158                 } 
    159             } ); 
    160             jax.success( function ( json ) { 
    161                 var $orderby = $( '#pod_orderby' ), 
    162                         $field = $( '#pod_field' ); 
    163  
    164                 $orderby.find( 'option' ).remove(); 
    165                 $orderby.append( '<option value=""></option>' ); 
    166  
    167                 $field.find( 'option' ).remove(); 
    168                 $field.append( '<option value=""></option>' ); 
    169  
    170                 $.each( json.fields, function ( key, val ) { 
    171                     $orderby.append( '<option value="' + val.name + '">' + val.label + '</option>' ); 
    172                     $field.append( '<option value="' + val.name + '">' + val.label + '</option>' ); 
    173                 } ); 
    174             } ); 
    175         } ).trigger( 'change' ); 
    176163    } ); 
    177164</script> 
     
    220207            <form id="pods_shortcode_form_element"> 
    221208                <div class="pods-select"> 
    222                     <label for="pods-use-case-selector"><?php _e( 'What would you like to do?', 'pods' ); ?></label> <select id="pods-use-case-selector"> 
    223                     <option value="single"><?php _e( 'Display a single Pod item', 'pods' ); ?></option> 
    224                     <option value="list" SELECTED><?php _e( 'List multiple Pod items', 'pods' ); ?></option> 
    225                     <option value="field"><?php _e( 'Display a field from a single Pod item', 'pods' ); ?></option> 
    226                 </select> 
    227                 </div> 
     209                    <label for="pods-use-case-selector"><?php _e( 'What would you like to do?', 'pods' ); ?></label> 
     210 
     211                    <select id="pods-use-case-selector"> 
     212                        <option value="single"><?php _e( 'Display a single Pod item', 'pods' ); ?></option> 
     213                        <option value="list" SELECTED><?php _e( 'List multiple Pod items', 'pods' ); ?></option> 
     214                        <option value="field"><?php _e( 'Display a field from a single Pod item', 'pods' ); ?></option> 
     215                        <option value="form"><?php _e( 'Display a form for creating and editing Pod items', 'pods' ); ?></option> 
     216                    </select> 
     217                </div> 
     218 
    228219                <div class="pods-section"> 
    229220                    <?php 
    230                     $api = pods_api(); 
    231                     $all_pods = $api->load_pods(); 
    232                     $pod_count = count( $all_pods ); 
     221                        $api = pods_api(); 
     222                        $all_pods = $api->load_pods(); 
     223                        $pod_count = count( $all_pods ); 
    233224                    ?> 
    234                     <label for="pod_select">Choose a Pod</label> 
     225                    <label for="pod_select"><?php _e( 'Choose a Pod', 'pods' ); ?></label> 
     226 
    235227                    <?php if ( $pod_count > 0 ) { ?> 
    236                     <select id="pod_select" name="pod_select"> 
    237                         <?php foreach ( $all_pods as $pod ) { ?> 
    238                         <option value="<?php echo $pod[ 'name' ]; ?>"> 
    239                             <?php echo $pod[ 'label' ]; ?> 
    240                         </option> 
    241                         <?php } ?> 
    242                     </select> 
     228                        <select id="pod_select" name="pod_select"> 
     229                            <?php foreach ( $all_pods as $pod ) { ?> 
     230                                <option value="<?php echo $pod[ 'name' ]; ?>"> 
     231                                    <?php echo $pod[ 'label' ]; ?> 
     232                                </option> 
     233                            <?php } ?> 
     234                        </select> 
    243235                    <?php 
    244                 } 
    245                 else { 
     236                        } 
     237                        else { 
    246238                    ?> 
    247                     <strong class="red" id="pod_select"><?php _e( 'None Found', 'pods' ); ?></strong> 
     239                        <strong class="red" id="pod_select"><?php _e( 'None Found', 'pods' ); ?></strong> 
    248240                    <?php } ?> 
    249241                </div> 
    250                 <div class="pods-section"> 
    251                     <?php 
    252                     $templates = $api->load_templates(); 
    253                     $template_count = count( $templates ); 
    254                     ?> 
    255                     <label for="pod_template">Template</label> <select id="pod_template" name="pod_template"> 
    256                     <option value="" SELECTED>Custom Template</option> 
    257                     <?php foreach ( $templates as $tmpl ) { ?> 
    258                     <option value="<?php echo $tmpl[ 'name' ]; ?>"> 
    259                         <?php echo $tmpl[ 'name' ]; ?> 
    260                     </option> 
    261                     <?php } ?> 
    262                 </select> 
    263                 </div> 
    264                 <div class="pods-section"> 
    265                     <label for="pod_template_custom"> <?php _e( 'Custom Template', 'pods' ); ?> </label> <textarea name="pod_template_custom" id="pod_template_custom" cols="10" rows="10" class="widefat"></textarea> 
    266                 </div> 
     242 
     243                <?php if ( class_exists( 'Pods_Templates' ) ) { ?> 
     244                    <div class="pods-section"> 
     245                        <?php 
     246                            $templates = $api->load_templates(); 
     247                            $template_count = count( $templates ); 
     248                        ?> 
     249                        <label for="pod_template"><?php _e( 'Template', 'pods' ); ?></label> 
     250 
     251                        <select id="pod_template" name="pod_template"> 
     252                            <option value="" SELECTED>- <?php _e( 'Custom Template', 'pods' ); ?> -</option> 
     253 
     254                            <?php foreach ( $templates as $tmpl ) { ?> 
     255                                <option value="<?php echo $tmpl[ 'name' ]; ?>"> 
     256                                    <?php echo $tmpl[ 'name' ]; ?> 
     257                                </option> 
     258                            <?php } ?> 
     259                        </select> 
     260                    </div> 
     261                <?php } ?> 
     262 
     263                <div class="pods-section"> 
     264                    <label for="pod_template_custom"><?php _e( 'Custom Template', 'pods' ); ?></label> 
     265 
     266                    <textarea name="pod_template_custom" id="pod_template_custom" cols="10" rows="10" class="widefat"></textarea> 
     267                </div> 
     268 
    267269                <div class="pods-section hide"> 
    268270                    <label for="pod_slug"><?php _e( 'ID or Slug', 'pods' ); ?></label> 
     271 
    269272                    <input type="text" id="pod_slug" name="pod_slug" /> 
    270273                </div> 
     274 
    271275                <div class="pods-section"> 
    272276                    <label for="pod_limit"><?php _e( 'Limit', 'pods' ); ?></label> 
     277 
    273278                    <input type="text" id="pod_limit" name="pod_limit" /> 
    274279                </div> 
    275                 <div class="pods-section"> 
    276                     <label for="pod_orderby"><?php _e( 'Order By', 'pods' ); ?></label> <select name="pod_orderby" id="pod_orderby"> </select> 
    277                 </div> 
    278                 <div class="pods-section"> 
    279                     <label for="pod_direction"><?php _e( 'Order Direction', 'pods' ); ?></label> <select id="pod_direction" name="pod_direction"> 
    280                     <option value="ASC"> 
    281                         <?php _e( 'Ascending', 'pods' ); ?> 
    282                     </option> 
    283                     <option value="DESC"> 
    284                         <?php _e( 'Descending', 'pods' ); ?> 
    285                     </option> 
    286                 </select> 
    287                 </div> 
     280 
     281                <div class="pods-section"> 
     282                    <label for="pod_orderby"><?php _e( 'Order By', 'pods' ); ?></label> 
     283 
     284                    <input type="text" id="pod_orderby" name="pod_orderby" /> 
     285                </div> 
     286 
    288287                <div class="pods-section"> 
    289288                    <label for="pod_where"><?php _e( 'Where', 'pods' ); ?></label> 
     289 
    290290                    <input type="text" name="pod_where" id="pod_where" /> 
    291291                </div> 
    292                 <div class="pods-section hide"> 
    293                     <label for="pod_field"><?php _e( 'Field', 'pods' ); ?></label> <select id="pod_field" name="pod_field"> </select> 
    294                 </div> 
     292 
     293                <div class="pods-section hide"> 
     294                    <label for="pod_field"><?php _e( 'Field', 'pods' ); ?></label> 
     295 
     296                    <input type="text" name="pod_field" id="pod_field" /> 
     297                </div> 
     298 
    295299                <div class="pods-section hide"> 
    296300                    <label for="pod_fields"><?php _e( 'Fields (comma-separated)', 'pods' ); ?></label> 
     301 
    297302                    <input type="text" id="pod_fields" name="pod_fields" /> 
    298303                </div> 
    299                 <div class="pods-section hide"> 
    300                     <?php 
    301                     $helpers = $api->load_helpers( array( 'options' => array( 'helper_type' => 'display' ) ) ); 
    302                     $helper_count = count( $helpers ); 
    303                     ?> 
    304                     <label for="pod_helper"><?php _e( 'Helper', 'pods' ); ?></label> <select id="pod_helper" name="pod_helper"> 
    305                     <option value="">- <?php _e( 'Helper', 'pods' ); ?> -</option> 
    306                     <?php foreach ( $helpers as $helper ) { ?> 
    307                     <option value="<?php echo $helper[ 'name' ]; ?>"> 
    308                         <?php echo $helper[ 'name' ]; ?> 
    309                     </option> 
    310                     <?php } ?> 
    311                 </select> 
    312                 </div> 
     304 
     305                <div class="pods-section hide"> 
     306                    <label for="pod_label"><?php _e( 'Submit Label', 'pods' ); ?></label> 
     307 
     308                    <input type="text" id="pod_label" name="pod_label" /> 
     309                </div> 
     310 
     311                <div class="pods-section hide"> 
     312                    <label for="pod_thank_you"><?php _e( 'Thank You URL upon submission', 'pods' ); ?></label> 
     313 
     314                    <input type="text" id="pod_thank_you" name="pod_thank_you" /> 
     315                </div> 
     316 
    313317                <div class="pods-section" style="text-align: right;"> 
    314318                    <a class="button-primary" id="pods_insert_shortcode" href="#"><?php _e( 'Insert', 'pods' ); ?></a> 
  • pods/trunk/ui/admin/widgets/field.php

    r608119 r612995  
    1414    <li> 
    1515        <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title', 'pods' ); ?></label> 
     16 
    1617        <input class="widefat" type="text" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo esc_attr( $title ); ?>" /> 
    1718    </li> 
     
    1920    <li> 
    2021        <?php 
    21         $api = pods_api(); 
    22         $all_pods = $api->load_pods(); 
     22            $api = pods_api(); 
     23            $all_pods = $api->load_pods(); 
    2324        ?> 
    2425        <label for="<?php echo $this->get_field_id( 'pod_type' ); ?>"> 
    25             <?php _e( 'Pod Type', 'pods' ); ?> 
     26            <?php _e( 'Pod', 'pods' ); ?> 
    2627        </label> 
     28 
    2729        <?php if ( 0 < count( $all_pods ) ): ?> 
    28         <select id="<?php $this->get_field_id( 'pod_type' ); ?>" name="<?php echo $this->get_field_name( 'pod_type' ); ?>"> 
    29             <?php foreach ( $all_pods as $pod ): ?> 
    30                 <?php $selected = ( $pod[ 'name' ] == $pod_type ) ? 'selected' : ''; ?> 
    31                 <option value="<?php echo $pod[ 'name' ]; ?>" <?php echo $selected; ?>> 
    32                     <?php echo esc_html( $pod[ 'label' ] ); ?> 
    33                 </option> 
    34             <?php endforeach; ?> 
    35         </select> 
     30            <select id="<?php $this->get_field_id( 'pod_type' ); ?>" name="<?php echo $this->get_field_name( 'pod_type' ); ?>"> 
     31                <?php foreach ( $all_pods as $pod ): ?> 
     32                    <?php $selected = ( $pod[ 'name' ] == $pod_type ) ? 'selected' : ''; ?> 
     33                    <option value="<?php echo $pod[ 'name' ]; ?>" <?php echo $selected; ?>> 
     34                        <?php echo esc_html( $pod[ 'label' ] ); ?> 
     35                    </option> 
     36                <?php endforeach; ?> 
     37            </select> 
    3638        <?php else: ?> 
    37         <strong class="red"><?php _e( 'None Found', 'pods' ); ?></strong> 
     39            <strong class="red"><?php _e( 'None Found', 'pods' ); ?></strong> 
    3840        <?php endif; ?> 
    3941    </li> 
     
    4345            <?php _e( 'Slug or ID', 'pods' ); ?> 
    4446        </label> 
     47 
    4548        <input class="widefat" type="text" id="<?php echo $this->get_field_id( 'slug' ); ?>" name="<?php echo $this->get_field_name( 'slug' ); ?>" value="<?php echo esc_attr( $slug ); ?>" /> 
    4649    </li> 
     
    4851    <li> 
    4952        <label for="<?php $this->get_field_id( 'field' ); ?>"><?php _e( 'Field', 'pods' ); ?></label> 
     53 
    5054        <input class="widefat" type="text" name="<?php echo $this->get_field_name( 'field' ); ?>" id="<?php echo $this->get_field_id( 'field' ); ?>" value="<?php echo esc_attr( $field ); ?>" /> 
    5155    </li> 
    52  
    53     <li> 
    54         <?php 
    55         $all_helpers = $api->load_helpers( array( 'options' => array( 'helper_type' => 'display' ) ) ); 
    56         ?> 
    57         <label for="<?php echo $this->get_field_id( 'helper' ); ?>"> 
    58             <?php _e( 'Helper', 'pods' ); ?> 
    59         </label> 
    60  
    61         <select name="<?php echo $this->get_field_name( 'helper' ); ?>" id="<?php echo $this->get_field_id( 'helper' ); ?>"> 
    62             <option value="">- <?php _e( 'Helper', 'pods' ); ?> -</option> 
    63             <?php foreach ( $all_helpers as $hlp ): ?> 
    64                 <?php $selected = ( $hlp[ 'name' ] == $helper ) ? 'selected' : ''; ?> 
    65                 <option value="<?php echo $hlp[ 'name' ]; ?>" <?php echo $selected; ?>> 
    66                     <?php echo esc_html( $hlp[ 'name' ] ); ?> 
    67                 </option> 
    68             <?php endforeach; ?> 
    69         </select> 
    70     </li> 
    7156</ol> 
  • pods/trunk/ui/admin/widgets/form.php

    r608119 r612995  
    1414    <li> 
    1515        <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title', 'pods' ); ?></label> 
     16 
    1617        <input class="widefat" type="text" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo esc_html( $title ); ?>"> 
    1718    </li> 
    1819    <li> 
    1920        <?php 
    20         $api = pods_api(); 
    21         $all_pods = $api->load_pods(); 
     21            $api = pods_api(); 
     22            $all_pods = $api->load_pods(); 
    2223        ?> 
    23         <label for="<?php echo $this->get_field_id( 'pod_type' ); ?>"><?php _e( 'Pod Type', 'pods' ); ?></label> 
     24 
     25        <label for="<?php echo $this->get_field_id( 'pod_type' ); ?>"><?php _e( 'Pod', 'pods' ); ?></label> 
     26 
    2427        <?php if ( 0 < count( $all_pods ) ): ?> 
    25         <select id="<?php echo $this->get_field_id( 'pod_type' ); ?>" name="<?php echo $this->get_field_name( 'pod_type' ); ?>"> 
    26             <?php foreach ( $all_pods as $pod ): ?> 
    27             <?php $selected = ( $pod[ 'name' ] == $pod_type ) ? 'selected' : ''; ?> 
    28             <option value="<?php echo $pod[ 'name' ]; ?>" <?php echo $selected; ?>> 
    29                 <?php echo esc_html( $pod[ 'label' ] ); ?> 
    30             </option> 
    31             <?php endforeach; ?> 
    32         </select> 
     28            <select id="<?php echo $this->get_field_id( 'pod_type' ); ?>" name="<?php echo $this->get_field_name( 'pod_type' ); ?>"> 
     29                <?php foreach ( $all_pods as $pod ): ?> 
     30                    <?php $selected = ( $pod[ 'name' ] == $pod_type ) ? 'selected' : ''; ?> 
     31                    <option value="<?php echo $pod[ 'name' ]; ?>" <?php echo $selected; ?>> 
     32                        <?php echo esc_html( $pod[ 'label' ] ); ?> 
     33                    </option> 
     34                <?php endforeach; ?> 
     35            </select> 
    3336        <?php else: ?> 
    34  
     37            <strong class="red"><?php _e( 'None Found', 'pods' ); ?></strong> 
    3538        <?php endif; ?> 
    3639    </li> 
     40 
     41    <li> 
     42        <label for="<?php $this->get_field_id( 'slug' ); ?>"><?php _e( 'ID or Slug', 'pods' ); ?></label> 
     43 
     44        <input class="widefat" type="text" name="<?php echo $this->get_field_name( 'slug' ); ?>" id="<?php echo $this->get_field_id( 'slug' ); ?>" value="<?php echo esc_attr( $slug ); ?>" /> 
     45    </li> 
     46 
     47    <li> 
     48        <label for="<?php $this->get_field_id( 'fields' ); ?>"><?php _e( 'Fields (comma-separated)', 'pods' ); ?></label> 
     49 
     50        <input class="widefat" type="text" name="<?php echo $this->get_field_name( 'fields' ); ?>" id="<?php echo $this->get_field_id( 'fields' ); ?>" value="<?php echo esc_attr( $fields ); ?>" /> 
     51    </li> 
     52 
     53    <li> 
     54        <label for="<?php $this->get_field_id( 'label' ); ?>"><?php _e( 'Submit Label', 'pods' ); ?></label> 
     55 
     56        <input class="widefat" type="text" name="<?php echo $this->get_field_name( 'label' ); ?>" id="<?php echo $this->get_field_id( 'label' ); ?>" value="<?php echo esc_attr( $label ); ?>" /> 
     57    </li> 
     58 
     59    <li> 
     60        <label for="<?php $this->get_field_id( 'thank_you' ); ?>"><?php _e( 'Thank You URL upon submission', 'pods' ); ?></label> 
     61 
     62        <input class="widefat" type="text" name="<?php echo $this->get_field_name( 'thank_you' ); ?>" id="<?php echo $this->get_field_id( 'thank_you' ); ?>" value="<?php echo esc_attr( $thank_you ); ?>" /> 
     63    </li> 
    3764</ol> 
  • pods/trunk/ui/admin/widgets/list.php

    r608119 r612995  
    1414    <li> 
    1515        <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title', 'pods' ); ?></label> 
     16 
    1617        <input class="widefat" type="text" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo esc_attr( $title ); ?>" /> 
    1718    </li> 
     
    1920    <li> 
    2021        <?php 
    21         $api = pods_api(); 
    22         $all_pods = $api->load_pods(); 
     22            $api = pods_api(); 
     23            $all_pods = $api->load_pods(); 
    2324        ?> 
     25 
    2426        <label for="<?php echo $this->get_field_id( 'pod_type' ); ?>"> <?php _e( 'Pod Type', 'pods' ); ?></label> 
     27 
    2528        <?php if ( 0 < count( $all_pods ) ): ?> 
    26         <select id="<?php $this->get_field_id( 'pod_type' ); ?>" name="<?php echo $this->get_field_name( 'pod_type' ); ?>"> 
    27             <?php foreach ( $all_pods as $pod ): ?> 
    28             <?php $selected = ( $pod[ 'name' ] == $pod_type ) ? 'selected' : ''; ?> 
    29             <option value="<?php echo $pod[ 'name' ]; ?>" <?php echo $selected; ?>> 
    30                 <?php echo esc_html( $pod[ 'label' ] ); ?> 
    31             </option> 
    32             <?php endforeach; ?> 
    33         </select> 
     29            <select id="<?php $this->get_field_id( 'pod_type' ); ?>" name="<?php echo $this->get_field_name( 'pod_type' ); ?>"> 
     30                <?php foreach ( $all_pods as $pod ): ?> 
     31                    <?php $selected = ( $pod[ 'name' ] == $pod_type ) ? 'selected' : ''; ?> 
     32                    <option value="<?php echo $pod[ 'name' ]; ?>" <?php echo $selected; ?>> 
     33                        <?php echo esc_html( $pod[ 'label' ] ); ?> 
     34                    </option> 
     35                <?php endforeach; ?> 
     36            </select> 
    3437        <?php else: ?> 
    35         <strong class="red"><?php _e( 'None Found', 'title' ); ?></strong> 
     38            <strong class="red"><?php _e( 'None Found', 'title' ); ?></strong> 
    3639        <?php endif; ?> 
    3740    </li> 
    3841 
    39     <li> 
    40         <?php 
    41         $all_templates = (array) $api->load_templates( array() ); 
    42         ?> 
    43         <label for="<?php echo $this->get_field_id( 'template' ); ?>"> <?php _e( 'Template', 'pods' ); ?> </label> <select name="<?php echo $this->get_field_name( 'template' ); ?>" id="<?php echo $this->get_field_id( 'template' ); ?>"> 
    44         <option value="">- Custom Template -</option> 
    45         <?php foreach ( $all_templates as $tpl ): ?> 
    46         <?php $selected = ( $tpl[ 'name' ] == $template ) ? 'selected' : ''; ?> 
    47         <option value="<?php echo $tpl[ 'name' ]; ?>" <?php echo $selected; ?>> 
    48             <?php echo esc_html( $tpl[ 'name' ] ); ?> 
    49         </option> 
    50         <?php endforeach; ?> 
    51     </select> 
    52     </li> 
     42    <?php if ( class_exists( 'Pods_Templates' ) ) { ?> 
     43        <li> 
     44            <?php 
     45                $all_templates = (array) $api->load_templates( array() ); 
     46            ?> 
     47            <label for="<?php echo $this->get_field_id( 'template' ); ?>"> <?php _e( 'Template', 'pods' ); ?> </label> 
     48 
     49            <select name="<?php echo $this->get_field_name( 'template' ); ?>" id="<?php echo $this->get_field_id( 'template' ); ?>"> 
     50                <option value="">- <?php _e( 'Custom Template', 'pods' ); ?> -</option> 
     51 
     52                <?php foreach ( $all_templates as $tpl ): ?> 
     53                    <?php $selected = ( $tpl[ 'name' ] == $template ) ? 'selected' : ''; ?> 
     54                    <option value="<?php echo $tpl[ 'name' ]; ?>" <?php echo $selected; ?>> 
     55                        <?php echo esc_html( $tpl[ 'name' ] ); ?> 
     56                    </option> 
     57                <?php endforeach; ?> 
     58            </select> 
     59        </li> 
     60    <?php } ?> 
    5361 
    5462    <li> 
    55         <label for="<?php echo $this->get_field_id( 'template_custom' ); ?>"> <?php _e( 'Custom Template', 'pods' ); ?></label> <textarea name="<?php echo $this->get_field_name( 'template_custom' ); ?>" id="<?php echo $this->get_field_id( 'template_custom' ); ?>" cols="10" rows="10" class="widefat"><?php echo esc_html( $template_custom ); ?></textarea> 
     63        <label for="<?php echo $this->get_field_id( 'template_custom' ); ?>"> <?php _e( 'Custom Template', 'pods' ); ?></label> 
     64 
     65        <textarea name="<?php echo $this->get_field_name( 'template_custom' ); ?>" id="<?php echo $this->get_field_id( 'template_custom' ); ?>" cols="10" rows="10" class="widefat"><?php echo esc_html( $template_custom ); ?></textarea> 
    5666    </li> 
    5767 
    5868    <li> 
    5969        <label for="<?php echo $this->get_field_id( 'limit' ); ?>"><?php _e( 'Limit', 'pods' ); ?></label> 
     70 
    6071        <input class="widefat" type="text" id="<?php echo $this->get_field_id( 'limit' ); ?>" name="<?php echo $this->get_field_name( 'limit' ); ?>" value="<?php echo esc_attr( $limit ); ?>" /> 
    6172    </li> 
     
    6374    <li> 
    6475        <label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><?php _e( 'Order By', 'pods' ); ?></label> 
     76 
    6577        <input class="widefat" type="text" id="<?php echo $this->get_field_id( 'orderby' ); ?>" name="<?php echo $this->get_field_name( 'orderby' ); ?>" value="<?php echo esc_attr( $orderby ); ?>" /> 
    6678    </li> 
    6779 
    6880    <li> 
    69         <label for="<?php echo $this->get_field_id( 'direction' ); ?>"><?php _e( 'Order Direction', 'pods' ); ?></label> <select id="<?php echo $this->get_field_id( 'direction' ); ?>" name="<?php echo $this->get_field_name( 'direction' ); ?>"> 
    70         <option value="ASC" <?php echo ( $direction == 'ASC' ) ? 'selected' : ''; ?>>Ascending</option> 
    71         <option value="DESC" <?php echo ( $direction == 'DESC' ) ? 'selected' : ''; ?>>Descending</option> 
    72     </select> 
    73     </li> 
     81        <label for="<?php echo $this->get_field_id( 'where' ); ?>"><?php _e( 'Where', 'pods' ); ?></label> 
    7482 
    75     <li> 
    76         <label for="<?php echo $this->get_field_id( 'where' ); ?>"><?php _e( 'Where', 'pods' ); ?></label> 
    7783        <input class="widefat" type="text" id="<?php echo $this->get_field_id( 'where' ); ?>" name="<?php echo $this->get_field_name( 'where' ); ?>" value="<?php echo esc_attr( $where ); ?>" /> 
    7884    </li> 
  • pods/trunk/ui/admin/widgets/single.php

    r608119 r612995  
    1414    <li> 
    1515        <label for="<?php echo $this->get_field_id( 'title' ); ?>"> <?php _e( 'Title', 'pods' ); ?></label> 
     16 
    1617        <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo esc_attr( $title ); ?>" /> 
    1718    </li> 
     
    1920    <li> 
    2021        <?php 
    21         $api = pods_api(); 
    22         $all_pods = $api->load_pods(); 
     22            $api = pods_api(); 
     23            $all_pods = $api->load_pods(); 
    2324        ?> 
     25 
    2426        <label for="<?php echo $this->get_field_id( 'pod_type' ); ?>"> <?php _e( 'Pod Type', 'pods' ); ?> </label> 
     27 
    2528        <?php if ( 0 < count( $all_pods ) ): ?> 
    26         <select id="<?php $this->get_field_id( 'pod_type' ); ?>" name="<?php echo $this->get_field_name( 'pod_type' ); ?>"> 
    27             <?php foreach ( $all_pods as $pod ): ?> 
    28             <?php $selected = ( $pod[ 'name' ] == $pod_type ) ? 'selected' : ''; ?> 
    29             <option value="<?php echo $pod[ 'name' ]; ?>" <?php echo $selected; ?>> 
    30                 <?php echo esc_html( $pod[ 'label' ] ); ?> 
    31             </option> 
    32             <?php endforeach; ?> 
    33         </select> 
     29            <select id="<?php $this->get_field_id( 'pod_type' ); ?>" name="<?php echo $this->get_field_name( 'pod_type' ); ?>"> 
     30                <?php foreach ( $all_pods as $pod ): ?> 
     31                    <?php $selected = ( $pod[ 'name' ] == $pod_type ) ? 'selected' : ''; ?> 
     32                    <option value="<?php echo $pod[ 'name' ]; ?>" <?php echo $selected; ?>> 
     33                        <?php echo esc_html( $pod[ 'label' ] ); ?> 
     34                    </option> 
     35                <?php endforeach; ?> 
     36            </select> 
    3437        <?php else: ?> 
    35         <strong class="red"><?php _e( 'None Found', 'pods' ); ?></strong> 
     38            <strong class="red"><?php _e( 'None Found', 'pods' ); ?></strong> 
    3639        <?php endif; ?> 
    3740    </li> 
    3841 
    39     <li> 
    40         <?php 
    41         $all_templates = (array) $api->load_templates( array() ); 
    42         ?> 
    43         <label for="<?php echo $this->get_field_id( 'template' ); ?>"> <?php _e( 'Template', 'pods' ); ?> </label> <select name="<?php echo $this->get_field_name( 'template' ); ?>" id="<?php echo $this->get_field_id( 'template' ); ?>"> 
    44         <option value="">- Custom Template -</option> 
    45         <?php foreach ( $all_templates as $tpl ): ?> 
    46         <?php $selected = ( $tpl[ 'name' ] == $template ) ? 'selected' : ''; ?> 
    47         <option value="<?php echo $tpl[ 'name' ]; ?>" <?php echo $selected; ?>> 
    48             <?php echo esc_html( $tpl[ 'name' ] ); ?> 
    49         </option> 
    50         <?php endforeach; ?> 
    51     </select> 
    52     </li> 
     42    <?php if ( class_exists( 'Pods_Templates' ) ) { ?> 
     43        <li> 
     44            <?php 
     45                $all_templates = (array) $api->load_templates( array() ); 
     46            ?> 
     47            <label for="<?php echo $this->get_field_id( 'template' ); ?>"> <?php _e( 'Template', 'pods' ); ?> </label> 
     48 
     49            <select name="<?php echo $this->get_field_name( 'template' ); ?>" id="<?php echo $this->get_field_id( 'template' ); ?>"> 
     50                <option value="">- <?php _e( 'Custom Template', 'pods' ); ?> -</option> 
     51                <?php foreach ( $all_templates as $tpl ): ?> 
     52                    <?php $selected = ( $tpl[ 'name' ] == $template ) ? 'selected' : ''; ?> 
     53                    <option value="<?php echo $tpl[ 'name' ]; ?>" <?php echo $selected; ?>> 
     54                        <?php echo esc_html( $tpl[ 'name' ] ); ?> 
     55                    </option> 
     56                <?php endforeach; ?> 
     57            </select> 
     58        </li> 
     59    <?php } ?> 
    5360 
    5461    <li> 
    55         <label for="<?php echo $this->get_field_id( 'template_custom' ); ?>"> <?php _e( 'Custom Template', 'pods' ); ?> </label> <textarea name="<?php echo $this->get_field_name( 'template_custom' ); ?>" id="<?php echo $this->get_field_id( 'template_custom' ); ?>" cols="10" rows="10" class="widefat"><?php echo esc_html( $template_custom ); ?></textarea> 
     62        <label for="<?php echo $this->get_field_id( 'template_custom' ); ?>"> <?php _e( 'Custom Template', 'pods' ); ?> </label> 
     63 
     64        <textarea name="<?php echo $this->get_field_name( 'template_custom' ); ?>" id="<?php echo $this->get_field_id( 'template_custom' ); ?>" cols="10" rows="10" class="widefat"><?php echo esc_html( $template_custom ); ?></textarea> 
    5665    </li> 
    5766</ol> 
  • pods/trunk/ui/css/pods-form.css

    r608119 r612995  
    253253} 
    254254 
     255.pods-form { 
     256    overflow: hidden; 
     257} 
     258 
    255259.pods-form img.waiting { 
    256260    display: none; 
  • pods/trunk/ui/fields/checkbox.php

    r605009 r612995  
    11<?php 
    22$options[ 'data' ] = (array) pods_var_raw( 'data', $options, array(), null, true ); 
     3 
    34$data_count = count( $options[ 'data' ] ); 
    45 
     
    2728 
    2829        $attributes[ 'type' ] = 'checkbox'; 
    29  
    30         $attributes[ 'checked' ] = null; 
    3130        $attributes[ 'tabindex' ] = 2; 
    3231 
  • pods/trunk/ui/fields/number.php

    r602158 r612995  
    3030            if ( !/^[0-9\<?php 
    3131            echo implode( '\\', array_filter( array( $dot, $thousands ) ) ); 
    32             ?>]$/.test( $( this ).val() ) ) { 
     32            ?>\-]$/.test( $( this ).val() ) ) { 
    3333                var newval = $( this ) 
    3434                    .val() 
    3535                    .replace( /[^0-9\<?php 
    3636                              echo implode( '\\', array_filter( array( $dot, $thousands ) ) ); 
    37                               ?>]/g, '' ); 
     37                              ?>\-]/g, '' ); 
    3838                $( this ).val( newval ); 
    3939            } 
  • pods/trunk/ui/front/filters.php

    r602158 r612995  
    1 <?php 
     1    <form method="get" class="pods-form-filters pods-form-filters-<?php echo esc_attr( $pod->pod ); ?>" action="<?php echo esc_attr( $action ); ?>"> 
     2        <input type="hidden" name="type" value="<?php echo esc_attr( $pod->pod ); ?>" /> 
     3 
     4        <?php 
     5            foreach ( $fields as $name => $field ) { 
     6                if ( 'pick' == $field[ 'type' ] && 'pick-custom' != $field[ 'pick_object' ] && !empty( $field[ 'pick_object' ] ) ) { 
     7                    $field[ 'options' ][ 'pick_format_type' ] = 'single'; 
     8                    $field[ 'options' ][ 'pick_format_single' ] = 'dropdown'; 
     9                    $field[ 'options' ][ 'pick_select_text' ] = '-- ' . $field[ 'label' ] . ' --'; 
     10 
     11                    $filter = pods_var_raw( $name, 'get', '' ); 
     12 
     13                    echo PodsForm::field( $name, $filter, 'pick', $field, $pod->pod, $pod->id() ); 
     14                } 
     15            } 
     16        ?> 
     17 
     18        <input type="text" class="pods-form-filters-search" name="<?php echo esc_attr( $pod->search_var ); ?>" value="<?php echo esc_attr( $search ); ?>" /> 
     19 
     20        <input type="submit" class="pods-form-filters-submit" value="<?php echo esc_attr( $label ); ?>" /> 
     21    </form> 
  • pods/trunk/ui/front/form.php

    r608119 r612995  
    1313} 
    1414 
    15 // This isn't ready yet 
    1615$uri_hash = wp_create_nonce( 'pods_uri_' . $_SERVER[ 'REQUEST_URI' ] ); 
    1716$field_hash = wp_create_nonce( 'pods_fields_' . implode( ',', array_keys( $fields ) ) ); 
     
    3332} 
    3433?> 
    35 <form action="<?php echo pods_var_update( array( '_p_submitted' => 1 ) ); ?>" method="post" class="pods-submittable pods-form pods-form-front pods-form-pod-<?php echo $pod->pod; ?> pods-submittable-ajax" data-location="<?php echo $thank_you; ?>"> 
     34<form action="<?php echo pods_var_update( array( '_p_submitted' => 1, 'success*' => null ) ); ?>" method="post" class="pods-submittable pods-form pods-form-front pods-form-pod-<?php echo $pod->pod; ?> pods-submittable-ajax" data-location="<?php echo $thank_you; ?>"> 
    3635    <div class="pods-submittable-fields"> 
    3736        <?php echo PodsForm::field( 'action', 'pods_admin', 'hidden' ); ?> 
     
    7574 
    7675<script type="text/javascript"> 
    77     jQuery( function ( $ ) { 
    78         $( document ).Pods( 'validate' ); 
    79         $( document ).Pods( 'submit' ); 
    80     } ); 
     76    if ( 'undefined' == typeof  pods_form_init ) { 
     77        var pods_form_init = true; 
     78 
     79        jQuery( function ( $ ) { 
     80            $( document ).Pods( 'validate' ); 
     81            $( document ).Pods( 'submit' ); 
     82        } ); 
     83    } 
    8184</script> 
  • pods/trunk/ui/js/jquery.pods.js

    r608119 r612995  
    193193                $submitbutton.parent().find( '.waiting' ).fadeIn(); 
    194194 
    195                 $( 'form.pods-submittable' ).trigger( 'submit' ); 
     195                $( this ).closest( 'form.pods-submittable' ).trigger( 'submit' ); 
    196196            } ); 
    197197 
     
    404404                else { 
    405405                    $tabbed.find( '.pods-tab-group .pods-tab' ).not( tab_hash ).slideUp( 'fast', function () { 
    406                        $tabbed.find( '.pods-tab-group .pods-tab' ).filter( tab_hash ).slideDown( 'fast' ); 
     406                        $tabbed.find( '.pods-tab-group .pods-tab' ).filter( tab_hash ).each( function () { 
     407                            $this = $( this ); 
     408                            $( '.pods-dependent-toggle', $this ).trigger( 'change' ); 
     409                            $this.slideDown( 'fast' ); 
     410                        } ); 
    407411                    } ); 
    408412                } 
     
    418422            } ); 
    419423 
    420             $( '.pods-tabbed' ).find( 'ul.pods-tabs .pods-tab:first a' ).addClass( 'selected' ); 
    421             $( '.pods-tabbed' ).find( '.pods-tab-group .pods-tab:first' ).show(); 
     424            $( '.pods-tabbed' ).each( function () { 
     425                $( 'ul.pods-tabs .pods-tab:first a', this ).addClass( 'selected' ); 
     426                $( '.pods-tab-group .pods-tab:first' ).each( function () { 
     427                    $( '.pods-dependent-toggle', this ).trigger( 'change' ); 
     428                    $( this ).show(); 
     429                } ) 
     430            } ); 
    422431        }, 
    423432        wizard : function () { 
  • pods/trunk/updater.php

    r605009 r612995  
    167167                ); 
    168168 
    169                 if ( is_wp_error( $raw_response ) ) { 
     169                $__version = false; 
     170 
     171                if ( !is_wp_error( $raw_response ) ) { 
     172                    $__version = explode( '~Current Version:', $raw_response[ 'body' ] ); 
     173 
     174                    if ( !isset( $__version[ '1' ] ) ) 
     175                        $__version = false; 
     176                } 
     177 
     178                if ( !$__version || is_wp_error( $raw_response ) ) { 
    170179                    $raw_response = wp_remote_get( 
    171180                        trailingslashit( $this->config[ 'raw_url' ] ) . 'README.md', 
     
    177186                    if ( is_wp_error( $raw_response ) ) 
    178187                        return false; 
     188 
     189                    $__version = explode( '~Current Version:', $raw_response[ 'body' ] ); 
    179190                } 
    180  
    181                 $__version = explode( '~Current Version:', $raw_response[ 'body' ] ); 
    182191 
    183192                if ( !isset( $__version[ '1' ] ) ) 
     
    185194 
    186195                $_version = explode( '~', $__version[ '1' ] ); 
    187                 $version = $_version[ 0 ]; 
     196 
     197                $version = trim( $_version[ 0 ] ); 
    188198 
    189199                // refresh every 6 hours 
Note: See TracChangeset for help on using the changeset viewer.