marv 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +3 -0
- data/README.md +1 -1
- data/VERSION +1 -1
- data/layouts/config/config.tt +3 -2
- data/layouts/default/functions/functions.php.erb +137 -19
- data/layouts/default/images/screenshot.png +0 -0
- data/layouts/default/includes/filters-admin.php.erb +62 -0
- data/layouts/default/includes/filters.php.erb +118 -0
- data/layouts/default/includes/helpers.php.erb +132 -0
- data/layouts/default/javascripts/admin.coffee +0 -0
- data/layouts/default/javascripts/admin.js +1 -1
- data/layouts/default/javascripts/theme.coffee +0 -0
- data/layouts/default/javascripts/theme.js +1 -1
- data/layouts/default/stylesheets/_header.scss.erb +6 -6
- data/layouts/default/stylesheets/style.css.scss.erb +1 -29
- data/layouts/default/templates/404.php.erb +23 -8
- data/layouts/default/templates/archive.php.erb +37 -9
- data/layouts/default/templates/author.php.erb +36 -0
- data/layouts/default/templates/footer.php +17 -6
- data/layouts/default/templates/header.php +44 -0
- data/layouts/default/templates/index.php +19 -2
- data/layouts/default/templates/page.php +17 -12
- data/layouts/default/templates/partials/comments.php.erb +50 -0
- data/layouts/default/templates/partials/content-none.php.erb +19 -0
- data/layouts/default/templates/partials/content-page.php +9 -0
- data/layouts/default/templates/partials/content-single.php +9 -0
- data/layouts/default/templates/partials/content.php.erb +16 -0
- data/layouts/default/templates/partials/searchform.php.erb +5 -0
- data/layouts/default/templates/partials/sidebar.php +7 -0
- data/layouts/default/templates/search.php.erb +31 -10
- data/layouts/default/templates/single.php +26 -0
- data/lib/marv/generator.rb +20 -0
- data/marv.gemspec +18 -9
- metadata +18 -9
- data/layouts/default/stylesheets/_reset.scss +0 -5
- data/layouts/default/stylesheets/_typography.scss +0 -5
- data/layouts/default/templates/attachment.php.erb +0 -32
- data/layouts/default/templates/comments.php +0 -2
- data/layouts/default/templates/header.php.erb +0 -30
- data/layouts/default/templates/partials/loop.php.erb +0 -36
- data/layouts/default/templates/sidebar.php +0 -9
- data/layouts/default/templates/single.php.erb +0 -30
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
data/layouts/config/config.tt
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# WordPress theme information is stored in source/assets/stylesheets/_header.scss
|
1
|
+
# WordPress theme information is stored in source/assets/stylesheets/_header.scss
|
2
2
|
|
3
3
|
# JavaScript compression
|
4
4
|
# config[:compress_js] = false
|
@@ -16,4 +16,5 @@
|
|
16
16
|
# end
|
17
17
|
|
18
18
|
# You can also include additional Compass frameworks by requiring them:
|
19
|
-
# require '
|
19
|
+
# require 'boubon'
|
20
|
+
# require 'neat'
|
@@ -1,34 +1,152 @@
|
|
1
1
|
<?php
|
2
2
|
|
3
|
-
|
3
|
+
// Block direct access
|
4
|
+
if( ! defined( 'ABSPATH' ) ) exit;
|
4
5
|
|
5
|
-
|
6
|
+
// Set content_width
|
7
|
+
if ( ! isset( $content_width ) ) {
|
8
|
+
$content_width = 640;
|
9
|
+
}
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
+
// Scaffold setup
|
12
|
+
if( ! function_exists( '<%= theme_id %>_setup' ) ) :
|
13
|
+
|
14
|
+
/**
|
15
|
+
* Sets up theme defaults and registers support for various WordPress features.
|
16
|
+
*
|
17
|
+
* Note that this function is hooked into the after_setup_theme hook, which
|
18
|
+
* runs before the init hook. The init hook is too late for some features, such
|
19
|
+
* as indicating support for post thumbnails.
|
20
|
+
*/
|
21
|
+
function <%= theme_id %>_setup()
|
22
|
+
{
|
23
|
+
// Textdomain
|
24
|
+
load_theme_textdomain( '<%= theme_id %>', get_template_directory() . '/includes/languages' );
|
25
|
+
load_child_theme_textdomain( '<%= theme_id %>', get_stylesheet_directory() . '/includes/languages' );
|
26
|
+
|
27
|
+
// Theme support
|
28
|
+
add_theme_support( 'menus' );
|
29
|
+
add_theme_support( 'post-thumbnails' );
|
30
|
+
add_theme_support( 'automatic-feed-links' );
|
31
|
+
add_theme_support( 'post-formats', array( /* 'aside', 'link', 'gallery', 'status', 'quote', 'image' */ ) );
|
32
|
+
add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list' ) );
|
33
|
+
|
34
|
+
// Editor
|
35
|
+
add_editor_style( 'assets/css/editor-style.css' );
|
11
36
|
|
12
|
-
|
13
|
-
|
14
|
-
'<%= theme_id
|
15
|
-
|
16
|
-
)
|
37
|
+
// Menus
|
38
|
+
register_nav_menus( array(
|
39
|
+
'primary-menu' => __( 'Primary', '<%= theme_id %>' ),
|
40
|
+
'secondary-menu' => __( 'Secondary', '<%= theme_id %>' ),
|
41
|
+
'footer-menu' => __( 'Footer', '<%= theme_id %>' )
|
42
|
+
) );
|
17
43
|
}
|
18
44
|
|
45
|
+
endif;
|
46
|
+
|
47
|
+
add_action( 'after_setup_theme', '<%= theme_id %>_setup' );
|
48
|
+
|
49
|
+
/**
|
50
|
+
* Init for theme child
|
51
|
+
*/
|
52
|
+
function <%= theme_id %>_child_init() {
|
53
|
+
do_action( '<%= theme_id %>_child_init' );
|
19
54
|
}
|
20
55
|
|
21
|
-
|
56
|
+
add_action( 'after_setup_theme', '<%= theme_id %>_child_init' );
|
22
57
|
|
23
|
-
|
58
|
+
/**
|
59
|
+
* Enqueue scripts and styles.
|
60
|
+
*/
|
61
|
+
function <%= theme_id %>_styles_scripts()
|
62
|
+
{
|
63
|
+
// Styles
|
64
|
+
add_action( 'wp_enqueue_scripts', '<%= theme_id %>_register_styles' );
|
65
|
+
add_action( 'wp_enqueue_scripts', '<%= theme_id %>_enqueue_styles' );
|
66
|
+
|
67
|
+
// Scripts
|
68
|
+
add_action( 'wp_enqueue_scripts', '<%= theme_id %>_register_scripts' );
|
69
|
+
add_action( 'wp_enqueue_scripts', '<%= theme_id %>_enqueue_scripts' );
|
70
|
+
|
71
|
+
// Admin scripts
|
72
|
+
add_action( 'admin_enqueue_scripts', '<%= theme_id %>_register_admin_scripts' );
|
73
|
+
add_action( 'admin_enqueue_scripts', '<%= theme_id %>_enqueue_admin_scripts' );
|
74
|
+
}
|
75
|
+
|
76
|
+
add_action( 'init', '<%= theme_id %>_styles_scripts' );
|
24
77
|
|
25
|
-
|
78
|
+
/**
|
79
|
+
* Register styles.
|
80
|
+
*/
|
81
|
+
function <%= theme_id %>_register_styles()
|
82
|
+
{
|
83
|
+
// Theme
|
84
|
+
wp_register_style( 'style', get_stylesheet_directory_uri() . '/style.css', '', '', 'screen' );
|
85
|
+
}
|
86
|
+
|
87
|
+
/**
|
88
|
+
* Enqueue styles.
|
89
|
+
*/
|
90
|
+
function <%= theme_id %>_enqueue_styles()
|
91
|
+
{
|
92
|
+
wp_enqueue_style( 'style' );
|
93
|
+
}
|
26
94
|
|
27
95
|
/**
|
28
|
-
*
|
29
|
-
*/
|
30
|
-
function <%= theme_id %>
|
31
|
-
|
96
|
+
* Register scripts
|
97
|
+
*/
|
98
|
+
function <%= theme_id %>_register_scripts()
|
99
|
+
{
|
100
|
+
// Theme
|
101
|
+
wp_register_script( 'theme', get_stylesheet_directory_uri() . '/javascripts/theme.js', array( 'jquery' ), '', true );
|
32
102
|
}
|
33
103
|
|
34
|
-
|
104
|
+
/**
|
105
|
+
* Enqueue scripts
|
106
|
+
*/
|
107
|
+
function <%= theme_id %>_enqueue_scripts()
|
108
|
+
{
|
109
|
+
wp_enqueue_script( 'theme' );
|
110
|
+
|
111
|
+
if ( is_singular() && get_option( 'thread_comments' ) ) {
|
112
|
+
wp_enqueue_script( 'comment-reply' );
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
/**
|
117
|
+
* Register admin scripts
|
118
|
+
*/
|
119
|
+
function <%= theme_id %>_register_admin_scripts()
|
120
|
+
{
|
121
|
+
// Admin
|
122
|
+
wp_register_script( 'admin', get_stylesheet_directory_uri() . '/javascripts/admin.js', array( 'jquery' ), '', true );
|
123
|
+
}
|
124
|
+
|
125
|
+
/**
|
126
|
+
* Enqueue admin scripts
|
127
|
+
*/
|
128
|
+
function <%= theme_id %>_enqueue_admin_scripts()
|
129
|
+
{
|
130
|
+
wp_enqueue_script( 'admin' );
|
131
|
+
}
|
132
|
+
|
133
|
+
/**
|
134
|
+
* Allow automatic updates
|
135
|
+
*/
|
136
|
+
add_filter( 'automatic_updates_is_vcs_checkout', '__return_false' );
|
137
|
+
|
138
|
+
/**
|
139
|
+
* All theme filters
|
140
|
+
*/
|
141
|
+
require get_template_directory() . '/includes/filters.php';
|
142
|
+
|
143
|
+
/**
|
144
|
+
* All theme filters for admin
|
145
|
+
*/
|
146
|
+
require get_template_directory() . '/includes/filters-admin.php';
|
147
|
+
|
148
|
+
/**
|
149
|
+
* Helper functions
|
150
|
+
*/
|
151
|
+
require get_template_directory() . '/includes/helpers.php';
|
152
|
+
|
Binary file
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<?php
|
2
|
+
|
3
|
+
// Block direct access
|
4
|
+
if( ! defined( 'ABSPATH' ) ) exit;
|
5
|
+
|
6
|
+
// Only in admin
|
7
|
+
if( ! is_admin() ) return;
|
8
|
+
|
9
|
+
/**
|
10
|
+
* Remove contactmethods
|
11
|
+
*/
|
12
|
+
function <%= theme_id %>_edit_contactmethods( $methods )
|
13
|
+
{
|
14
|
+
unset( $methods['aim'] );
|
15
|
+
unset( $methods['jabber'] );
|
16
|
+
unset( $methods['yim'] );
|
17
|
+
|
18
|
+
return $methods;
|
19
|
+
}
|
20
|
+
|
21
|
+
add_filter( 'user_contactmethods', '<%= theme_id %>_edit_contactmethods' );
|
22
|
+
|
23
|
+
/**
|
24
|
+
* Add MCE
|
25
|
+
*/
|
26
|
+
function <%= theme_id %>_enable_more_buttons( $buttons )
|
27
|
+
{
|
28
|
+
$buttons[] = 'hr';
|
29
|
+
|
30
|
+
return $buttons;
|
31
|
+
}
|
32
|
+
|
33
|
+
add_filter( 'mce_buttons', '<%= theme_id %>_enable_more_buttons' );
|
34
|
+
|
35
|
+
/**
|
36
|
+
* Remove menu items
|
37
|
+
*/
|
38
|
+
function <%= theme_id %>_remove_menu_pages()
|
39
|
+
{
|
40
|
+
remove_menu_page( 'link-manager.php' );
|
41
|
+
}
|
42
|
+
|
43
|
+
add_action( 'admin_menu', '<%= theme_id %>_remove_menu_pages' );
|
44
|
+
|
45
|
+
/**
|
46
|
+
* Remove dashboard widgets
|
47
|
+
*/
|
48
|
+
function <%= theme_id %>_remove_dashboard_widgets()
|
49
|
+
{
|
50
|
+
global $wp_meta_boxes;
|
51
|
+
|
52
|
+
unset( $wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links'] );
|
53
|
+
unset( $wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins'] );
|
54
|
+
unset( $wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts'] );
|
55
|
+
unset( $wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments'] );
|
56
|
+
unset( $wp_meta_boxes['dashboard']['side']['core']['dashboard_primary'] );
|
57
|
+
unset( $wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary'] );
|
58
|
+
// unset( $wp_meta_boxes['dashboard']['side']['core']['dashboard_right_now'] );
|
59
|
+
// unset( $wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press'] );
|
60
|
+
}
|
61
|
+
|
62
|
+
add_action( 'wp_dashboard_setup', '<%= theme_id %>_remove_dashboard_widgets' );
|
@@ -0,0 +1,118 @@
|
|
1
|
+
<?php
|
2
|
+
|
3
|
+
// Block direct access
|
4
|
+
if( ! defined( 'ABSPATH' ) ) exit;
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Independent filters
|
8
|
+
*/
|
9
|
+
add_filter( 'widget_text', 'do_shortcode' );
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Body classes
|
13
|
+
*/
|
14
|
+
function <%= theme_id %>_body_class( $classes )
|
15
|
+
{
|
16
|
+
global $is_gecko, $is_IE, $is_opera, $is_safari, $is_chrome;
|
17
|
+
|
18
|
+
if( $is_gecko ) $classes[] = 'gecko';
|
19
|
+
elseif( $is_opera ) $classes[] = 'opera';
|
20
|
+
elseif( $is_safari ) $classes[] = 'safari';
|
21
|
+
elseif( $is_lynx ) $classes[] = 'lynx';
|
22
|
+
elseif( $is_chrome ) $classes[] = 'chrome';
|
23
|
+
elseif( $is_NS4 ) $classes[] = 'ns4';
|
24
|
+
elseif( $is_IE ) $classes[] = 'ie';
|
25
|
+
else $classes[] = 'unknown-browser';
|
26
|
+
if( $is_iphone ) $classes[] = 'iphone';
|
27
|
+
|
28
|
+
if( is_singular() ) {
|
29
|
+
global $post;
|
30
|
+
foreach( ( get_the_category( $post->ID ) ) as $category ) {
|
31
|
+
$classes[] = 'term-' . $category->category_nicename;
|
32
|
+
}
|
33
|
+
|
34
|
+
$classes[] = 'singular';
|
35
|
+
}
|
36
|
+
|
37
|
+
if( is_multi_author() ) {
|
38
|
+
$classes[] = 'group-blog';
|
39
|
+
}
|
40
|
+
|
41
|
+
if( is_archive() || is_search() || is_home() ) {
|
42
|
+
$classes[] = 'list-view';
|
43
|
+
}
|
44
|
+
|
45
|
+
return $classes;
|
46
|
+
}
|
47
|
+
|
48
|
+
add_filter( 'body_class', '<%= theme_id %>_body_class' );
|
49
|
+
|
50
|
+
/**
|
51
|
+
* Remove generator
|
52
|
+
*/
|
53
|
+
function <%= theme_id %>_cleanup_head()
|
54
|
+
{
|
55
|
+
remove_action('wp_head', 'feed_links', 2);
|
56
|
+
remove_action('wp_head', 'feed_links_extra', 3);
|
57
|
+
remove_action('wp_head', 'rsd_link');
|
58
|
+
remove_action('wp_head', 'wlwmanifest_link');
|
59
|
+
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
|
60
|
+
remove_action('wp_head', 'wp_generator');
|
61
|
+
remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);
|
62
|
+
}
|
63
|
+
|
64
|
+
add_action( 'init', '<%= theme_id %>_cleanup_head' );
|
65
|
+
|
66
|
+
/**
|
67
|
+
* WP title
|
68
|
+
*/
|
69
|
+
function <%= theme_id %>_wp_title( $title, $sep )
|
70
|
+
{
|
71
|
+
global $paged, $page;
|
72
|
+
|
73
|
+
if ( is_feed() ) {
|
74
|
+
return $title;
|
75
|
+
}
|
76
|
+
|
77
|
+
// Add the site name.
|
78
|
+
$title .= get_bloginfo( 'name' );
|
79
|
+
|
80
|
+
// Add the site description for the home/front page.
|
81
|
+
$site_description = get_bloginfo( 'description', 'display' );
|
82
|
+
if ( $site_description && ( is_home() || is_front_page() ) ) {
|
83
|
+
$title = "$title $sep $site_description";
|
84
|
+
}
|
85
|
+
|
86
|
+
// Add a page number if necessary.
|
87
|
+
if ( $paged >= 2 ) {
|
88
|
+
$title = "$title $sep " . sprintf( __( 'Page %s', '<%= theme_id %>' ), max( $paged, $page ) );
|
89
|
+
}
|
90
|
+
|
91
|
+
return $title;
|
92
|
+
}
|
93
|
+
|
94
|
+
add_filter( 'wp_title', '<%= theme_id %>_wp_title', 10, 2 );
|
95
|
+
|
96
|
+
/**
|
97
|
+
* Nav object classes
|
98
|
+
*/
|
99
|
+
function <%= theme_id %>_add_extra_menu_classes( $objects )
|
100
|
+
{
|
101
|
+
$objects[1]->classes[] = 'first';
|
102
|
+
$objects[count( $objects )]->classes[] = 'last';
|
103
|
+
|
104
|
+
return $objects;
|
105
|
+
}
|
106
|
+
|
107
|
+
add_filter( 'wp_nav_menu_objects', '<%= theme_id %>_add_extra_menu_classes' );
|
108
|
+
|
109
|
+
/**
|
110
|
+
* Add favicon
|
111
|
+
*/
|
112
|
+
function <%= theme_id %>_favicon()
|
113
|
+
{
|
114
|
+
echo '<link rel="shortcut icon" href="' . get_stylesheet_directory_uri() . '/images/favicon.png" type="image/png">';
|
115
|
+
}
|
116
|
+
|
117
|
+
add_action( 'wp_head', '<%= theme_id %>_favicon' );
|
118
|
+
|
@@ -0,0 +1,132 @@
|
|
1
|
+
<?php
|
2
|
+
|
3
|
+
// Block direct access
|
4
|
+
if( ! defined( 'ABSPATH' ) ) exit;
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Helper function to generate normal pagination
|
8
|
+
*/
|
9
|
+
function <%= theme_id %>_paging_nav( $pages = '', $range = 2 )
|
10
|
+
{
|
11
|
+
$showitems = ( $range * 2 ) + 1;
|
12
|
+
|
13
|
+
global $paged;
|
14
|
+
if( empty( $paged ) ) {
|
15
|
+
$paged = 1;
|
16
|
+
}
|
17
|
+
|
18
|
+
if( $pages == '' ) {
|
19
|
+
global $wp_query;
|
20
|
+
$pages = $wp_query->max_num_pages;
|
21
|
+
if( ! $pages ) {
|
22
|
+
$pages = 1;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
if( 1 != $pages ) {
|
27
|
+
echo '<div class="pagination">';
|
28
|
+
if( $paged > 2 && $paged > $range + 1 && $showitems < $pages ) {
|
29
|
+
echo '<a href="' . get_pagenum_link( 1 ) . '">«</a>';
|
30
|
+
}
|
31
|
+
|
32
|
+
if( $paged > 1 && $showitems < $pages ) {
|
33
|
+
echo '<a href="' . get_pagenum_link( $paged - 1 ) . '">‹</a>';
|
34
|
+
}
|
35
|
+
|
36
|
+
for ( $i = 1; $i <= $pages; $i++ ) {
|
37
|
+
if ( 1 != $pages && ( ! ( $i >= $paged + $range + 1 || $i <= $paged - $range - 1 ) || $pages <= $showitems )) {
|
38
|
+
echo ( $paged == $i ) ? '<span class="current">' . $i . '</span>' : '<a href="' . get_pagenum_link( $i ) . '" class="inactive" >' . $i . '</a>';
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
if ( $paged < $pages && $showitems < $pages ) {
|
43
|
+
echo '<a href="' . get_pagenum_link( $paged + 1 ) . '">›</a>';
|
44
|
+
}
|
45
|
+
|
46
|
+
if ( $paged < $pages - 1 && $paged + $range - 1 < $pages && $showitems < $pages ) {
|
47
|
+
echo '<a href="' . get_pagenum_link($pages) . '">»</a>';
|
48
|
+
}
|
49
|
+
echo '</div>';
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
53
|
+
/**
|
54
|
+
* Inserts a new key/value before the key in the array.
|
55
|
+
*
|
56
|
+
* @param $key The key to insert before.
|
57
|
+
* @param $array An array to insert in to.
|
58
|
+
* @param $new_key The key to insert.
|
59
|
+
* @param $new_value An value to insert.
|
60
|
+
*
|
61
|
+
* @return The new array if the key exists, FALSE otherwise.
|
62
|
+
*
|
63
|
+
* @see array_insert_after()
|
64
|
+
*/
|
65
|
+
function array_insert_before( $key, array &$array, $new_key, $new_value )
|
66
|
+
{
|
67
|
+
if (array_key_exists($key, $array)) {
|
68
|
+
$new = array();
|
69
|
+
foreach ($array as $k => $value) {
|
70
|
+
if ($k === $key) {
|
71
|
+
$new[$new_key] = $new_value;
|
72
|
+
}
|
73
|
+
|
74
|
+
$new[$k] = $value;
|
75
|
+
}
|
76
|
+
return $new;
|
77
|
+
}
|
78
|
+
|
79
|
+
return false;
|
80
|
+
}
|
81
|
+
|
82
|
+
/**
|
83
|
+
* Inserts a new key/value after the key in the array.
|
84
|
+
*
|
85
|
+
* @param $key The key to insert after.
|
86
|
+
* @param $array An array to insert in to.
|
87
|
+
* @param $new_key The key to insert.
|
88
|
+
* @param $new_valueAn value to insert.
|
89
|
+
*
|
90
|
+
* @return The new array if the key exists, FALSE otherwise.
|
91
|
+
*
|
92
|
+
* @see array_insert_before()
|
93
|
+
*/
|
94
|
+
function array_insert_after( $key, array &$array, $new_key, $new_value )
|
95
|
+
{
|
96
|
+
if (array_key_exists($key, $array)) {
|
97
|
+
$new = array();
|
98
|
+
foreach ($array as $k => $value) {
|
99
|
+
$new[$k] = $value;
|
100
|
+
if ($k === $key) {
|
101
|
+
$new[$new_key] = $new_value;
|
102
|
+
}
|
103
|
+
}
|
104
|
+
return $new;
|
105
|
+
}
|
106
|
+
|
107
|
+
return false;
|
108
|
+
}
|
109
|
+
|
110
|
+
/**
|
111
|
+
* Flattens a multi-dimensional array to a normal array
|
112
|
+
*
|
113
|
+
* @param $array Multidimensional array
|
114
|
+
*
|
115
|
+
* @return The new array
|
116
|
+
*/
|
117
|
+
function array_flatten( $array )
|
118
|
+
{
|
119
|
+
if( ! is_array( $array ) ) {
|
120
|
+
return false;
|
121
|
+
}
|
122
|
+
|
123
|
+
$result = array();
|
124
|
+
foreach( $array as $key => $value ) {
|
125
|
+
if( is_array( $value ) ) {
|
126
|
+
$result = array_merge($result, array_flatten($value));
|
127
|
+
} else {
|
128
|
+
$result[$key] = $value;
|
129
|
+
}
|
130
|
+
}
|
131
|
+
return $result;
|
132
|
+
}
|