%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/casasmonvl/ges4t.old/wp-content/plugins/kingcomposer/includes/
Upload File :
Create Path :
Current File : /home/casasmonvl/ges4t.old/wp-content/plugins/kingcomposer/includes/kc.functions.php

<?php
/**
*
*	King Composer
*	(c) KingComposer.com
*
*/
if(!defined('KC_FILE')) {
	header('HTTP/1.0 403 Forbidden');
	exit;
}

if( !function_exists('wp_list_widgets') )
	require_once(ABSPATH . '/wp-admin/includes/widgets.php');

function kc_admin_enable( $force = false ){

	if( $force === true )
		return true;

	global $post, $kc;

	$type = !empty( $post->post_type ) ? $post->post_type:'';
	$page = !empty( $_GET['page'] ) ? $_GET['page'] : '';

	$allows_types = $kc->get_support_content_types();

	if( is_admin() && ( in_array( $type, $allows_types ) || $page == 'kc-mapper' || $kc->is_live() ) )
		return true;
	else return false;

}

function kc_add_map( $map = array() ){

	global $kc;

	if( !is_array( $map ) )
		return;

	$kc->add_map( $map );

}
/*
*	Add maps from exported file
*/
function kc_include_map($file) {

	if (!file_exists($file)) 
		return;
	
	ob_start();
	@include($file);
	$data = ob_get_contents();
	ob_end_clean();
	
	/*
	$handle = fopen($file, 'r' );
	$data = fread($handle, filesize($file));
	fclose($handle);
	*/
	
	$data = @json_decode($data, true);
	
	if (!empty($data) && is_array($data)) {
		global $kc;
		$kc->add_map($data);
	}
	
}

function kc_remove_map( $name = '' ){

	global $kc;

	if( empty( $name ) )
		return;

	$kc->remove_map( $name );

}

function kc_prebuilt_template ($name = '', $pack = '') {

	global $kc;

	if (empty($name) || empty($pack))
		return false;

	$kc->prebuilt_template ($name, $pack);

}

function kc_hide_element( $name = '' ){

	global $kc;

	if( empty( $name ) )
		return;

	$kc->hide_element( $name );

}

function kc_add_param_type( $name = '', $func = '' ){

	global $kc;

	if( empty( $name ) || empty( $func ) )
		return;

	$kc->add_param_type( $name, $func );
	
}

function kc_add_icon( $source = '' ){
	
	if( !empty( $source ) ){
		KingComposer::globe()->add_icon_source( $source );	
	}
}

function kc_remove_wpautop( $content, $autop = false ) {

	if ( $autop ) {
		$content = wpautop( preg_replace( '/<\/?p\>/', "\n", $content ) . "\n" );
	}

	return do_shortcode( shortcode_unautop( $content ) );
}

function kc_validate_options( $plugin_options ){

	if( isset( $_POST['kc_options'] ) && !empty( $_POST['kc_options'] ) ){
		if( isset( $_POST['re-active-kc-pro'] ) && $_POST['re-active-kc-pro'] == '1' ){
			$result = activate_plugin( 'kc_pro/kc_pro.php' );
		}
		return $plugin_options;
	}

}

function kc_youtube_id_from_url( $url = '' ) {

    parse_str( parse_url( $url, PHP_URL_QUERY ), $vars );
    
	return isset( $vars['v'] ) ? $vars['v'] : '';   

}

function kc_loop_box( $items ){

	if( empty( $items ) )
		return '';

	$output = '';

	foreach( $items as $item ){
			
		if( is_object( $item ) && $item->tag != 'text' ){
			

			if( !isset( $item->attributes ) || !is_object( $item->attributes ) )
				$item->attributes = new stdClass();

			if( !isset( $item->attributes->class ) )
				$item->attributes->class = '';
			
			if( $item->tag == 'image' )
				$item->tag = 'img';
			if( $item->tag == 'icon' )
				$item->tag = 'i';
			if( $item->tag == 'column' ){
				$item->tag = 'div';
				$item->attributes->class .= ' '.$item->attributes->cols;
				unset( $item->attributes->cols );
			}
			
			$output .= '<'.$item->tag;
			
			if( $item->tag == 'img' ){
				if( empty( $item->attributes->src ) )
					$item->attributes->src = KC_URL.'/assets/images/get_start.jpg';
				
				if( $item->tag == 'img' && !isset( $item->attributes->alt ) )
					$item->attributes->alt = '';
			}
			
			foreach( $item->attributes as $k => $v ){
				if( !empty($v) )$output .= ' '.$k.'="'.trim($v).'"';
			}

			if( $item->tag == 'img' )
				$output .= '/';

			$output .= '>';

			if( is_array( $item->children ) )
				$output .= kc_loop_box( $item->children );

			if( $item->tag != 'img' )
				$output .= '</'.$item->tag.'>';

		}else $output .= $item->content;

	}

	return $output;

}

function kc_get_terms( $tax = 'category', $key = 'id', $type = '', $default = '' ){

	$get_terms = (array) get_terms( $tax, array( 'hide_empty' => false ) );

	if( $type != '' ){
		$get_terms = kc_get_terms_by_post_type( array($tax), array($type) );
	}

	$terms = array();

	if( $default != '' ){
		$terms[] = $default;
	}

	if ( $key == 'id' ){
		foreach ( $get_terms as $term ){
			if( isset( $term->term_id ) && isset( $term->name ) ){
				$terms[$term->term_id] = $term->name;
			}
		}
	}else if ( $key == 'slug' ){
		foreach ( $get_terms as $term ){
			if( !empty($term->name) ){
				if( isset( $term->slug ) && isset( $term->name ) ){
					$terms[$term->slug] = $term->name;
				}
			}
		}
	}

	return $terms;

}

function kc_filter_search( $s, &$w ) {
	
	global $wpdb;
	
	if ( empty( $s ) )return '';
	
	$q = $w->query_vars;
	
	$n = ! empty( $q['exact'] ) ? '' : '%';
	$s = $sa = '';
	
	foreach ( (array) $q['search_terms'] as $t ) {
		$t = $wpdb->esc_like( $t );
		$l = $n . $t . $n;
		$s .= $wpdb->prepare( "{$sa}($wpdb->posts.post_title LIKE %s)", $l );
		$sa = ' AND ';
	}
	
	if ( ! empty( $s ) )
		$s = " AND ({$s}) ";

	return $s;
}

function kc_get_submit_button( $text = '', $type = 'primary large', $name = 'submit', $wrap = true, $other_attributes = '' ) {
	
	if ( ! is_array( $type ) )
		$type = explode( ' ', $type );

	$button_shorthand = array( 'primary', 'small', 'large' );
	$classes = array( 'button' );
	foreach ( $type as $t ) {
		if ( 'secondary' === $t || 'button-secondary' === $t )
			continue;
		$classes[] = in_array( $t, $button_shorthand ) ? 'button-' . $t : $t;
	}
	$class = implode( ' ', array_unique( $classes ) );

	if ( 'delete' === $type )
		$class = 'button-secondary delete';

	$text = $text ? $text : __( 'Save Changes' );

	// Default the id attribute to $name unless an id was specifically provided in $other_attributes
	$id = $name;
	if ( is_array( $other_attributes ) && isset( $other_attributes['id'] ) ) {
		$id = $other_attributes['id'];
		unset( $other_attributes['id'] );
	}

	$attributes = '';
	if ( is_array( $other_attributes ) ) {
		foreach ( $other_attributes as $attribute => $value ) {
			$attributes .= $attribute . '="' . esc_attr( $value ) . '" '; // Trailing space is important
		}
	} elseif ( ! empty( $other_attributes ) ) { // Attributes provided as a string
		$attributes = $other_attributes;
	}

	// Don't output empty name and id attributes.
	$name_attr = $name ? ' name="' . esc_attr( $name ) . '"' : '';
	$id_attr = $id ? ' id="' . esc_attr( $id ) . '"' : '';

	$button = '<input type="submit"' . $name_attr . $id_attr . ' class="' . esc_attr( $class );
	$button	.= '" value="' . esc_attr( $text ) . '" ' . $attributes . ' />';

	if ( $wrap ) {
		$button = '<p class="submit">' . $button . '</p>';
	}

	return $button;
}

function kc_process_tab_title( $matches ){

	if( !empty( $matches[0] ) ){

		$tab_atts = shortcode_parse_atts( $matches[0] );

		$title = ''; $adv_title = '';
		if ( isset( $tab_atts['title'] ) )
			$title = $tab_atts['title'];
		
		if( isset( $tab_atts['advanced'] ) && $tab_atts['advanced'] === 'yes' ){
			
			if( isset( $tab_atts['adv_title'] ) && !empty( $tab_atts['adv_title'] ) )
				$adv_title = base64_decode( $tab_atts['adv_title'] );
				
			$icon=$icon_class=$image=$image_id=$image_url=$image_thumbnail=$image_medium=$image_large=$image_full='';
			
			if( isset( $tab_atts['adv_icon'] ) && !empty( $tab_atts['adv_icon'] ) ){
				$icon_class = $tab_atts['adv_icon'];
				$icon = '<i class="'.$tab_atts['adv_icon'].'"></i>';
			}
			
			if( isset( $tab_atts['adv_image'] ) && !empty( $tab_atts['adv_image'] ) ){
				$image_id = $tab_atts['adv_image'];
				$image_url = wp_get_attachment_image_src( $image_id, 'full' );
				$image_medium = wp_get_attachment_image_src( $image_id, 'medium' );
				$image_large = wp_get_attachment_image_src( $image_id, 'large' );
				$image_thumbnail = wp_get_attachment_image_src( $image_id, 'thumbnail' );
				
				if( !empty( $image_url ) && isset( $image_url[0] ) ){
					$image_url = $image_url[0];
					$image_full = $image_url;
				}
				if( !empty( $image_medium ) && isset( $image_medium[0] ) )
					$image_medium = $image_medium[0];
				
				if( !empty( $image_large ) && isset( $image_large[0] ) )
					$image_large = $image_large[0];
					
				if( !empty( $image_thumbnail ) && isset( $image_thumbnail[0] ) )
					$image_thumbnail = $image_thumbnail[0];
				if( !empty( $image_url ) )
					$image = '<img src="'.$image_url.'" alt="" />';
			}
			
			$adv_title = str_replace( array( '{title}', '{icon}', '{icon_class}', '{image}', '{image_id}', '{image_url}', '{image_thumbnail}', '{image_medium}', '{image_large}', '{image_full}', '{tab_id}' ), array( $title, $icon, $icon_class, $image, $image_id, $image_url, $image_thumbnail, $image_medium, $image_large, $image_full, $tab_atts['tab_id'] ), $adv_title );
			
			echo '<li>'.$adv_title.'</li>';
				
		}else{
			if( isset( $tab_atts['icon_option'] ) && $tab_atts['icon_option']  == 'yes' ){
				if(empty($tab_atts['icon']))
					$tab_atts['icon'] = 'fa-leaf';
				$title = '<i class="'.$tab_atts['icon'].'"></i> '.$title;
			}
			echo '<li><a href="#'.$tab_atts['tab_id'].'" data-prevent="scroll">'.$title.'</a></li>';
		}

	}

	return $matches[0];

}

function kc_is_using(){
	
	global $post;
	
	if( !isset( $post ) || !isset( $post->ID ) || empty( $post->ID ) || !get_post_meta( $post->ID , 'kc_data', false ) )
		return false;
		
	$kc_meta = get_post_meta( $post->ID , 'kc_data', true );

	if( isset( $kc_meta['mode'] ) && $kc_meta['mode'] == 'kc' )
		return true;
	else return false;
	
}

function kc_js_callback( $callback ){
	
	global $kc;
	$kc->js_callback( $callback );
	
}

function kc_add_content_type( $type = '', $setion = true  ){
	
	global $kc;
	if( !empty( $type ) )
		$kc->add_content_type( $type, $setion );
	
}

/*
 * Return the type of content
 */
function kc_get_post_type(){
	
	global $post;
	
	$type = '';
	
	if( isset( $post ) && isset( $post->post_type ) )
		$type = $post->post_type;
	
	return $type;
	
}

/*
 * Get content as raw format
 */
function kc_raw_content( $id = 0 ){
	
	$content = '';
	
	if ( FALSE !== get_post_status( $id ) ) {
	
		$content = get_post_field('post_content_filtered', $id );
		if( empty( $content ) )
			$content = get_post_field( 'post_content', $id );
		
	}
		
	return $content;
}

function kc_do_shortcode( $content = '' ){
		
	if( empty( $content ) )
		return '';

	global $kc_front;
	
	if( !isset( $kc_front ) )
		return do_shortcode( $content );
	else return $kc_front->do_shortcode( $content );

}

function kc_remove_dir ($dirPath = '') {
		
	if (empty($dirPath))
		return false;
		
	$dirPath = untrailingslashit($dirPath).KDS;
	
	if ($dirPath == ABSPATH)
		return false;
	
    if (! is_dir($dirPath)) {
        return false;
    }
    
    $files = scandir($dirPath, 1);

    foreach ($files as $file) {
	    if ($file != '.' && $file != '..') {
	        if (is_dir($dirPath.$file)) {
	        	kc_remove_dir($dirPath.$file);
	        } else {
	            unlink($dirPath.$file);
	        }
        }
    }
    
    if (is_file($dirPath.'.DS_Store'))
    	unlink($dirPath.'.DS_Store');
    	
    return rmdir($dirPath);

}
/*
* Read changelogs from readme.txt
*/
function kc_changelogs(){
	
	$path = KC_PATH.KDS.'readme.txt';
	if (file_exists($path)) {
		
		$content = @file_get_contents($path);
		$anchor = strpos($content, '== Changelog ==');

		if (!empty($content) && $anchor !== false) {
			
			$content = substr($content, $anchor + strlen('== Changelog =='));
			$content = explode("\n", $content);
			$group = array('newfeatures' => array(), 'improve' => array(), 'bugfixes' => array(), 'changes' => array(), 'remove' => array());
			
			foreach ($content as $n => $line) {
				
				$line = trim($line);
				
				if (substr ($line, 0, 1) == '*') {
					
					$line = trim(substr ($line, 1));
					if (strpos($line, '[New]') === 0)
						$group['newfeatures'][] = substr ($line, 5);
					else if (strpos($line, '[Improve]') === 0)
						$group['improve'][] = substr ($line, 9);
					else if (strpos($line, '[Fix]') === 0)
						$group['bugfixes'][] = substr ($line, 5);
					else if (strpos($line, '[Remove]') === 0)
						$group['remove'][] = substr ($line, 8);
					else $group['changes'][] = $line;
					
				}
				else {
					
					foreach ($group as $label => $items) {
						if (count($items) > 0) {
							echo '<div class="kc-log-type '.esc_attr($label).'"><strong>'.esc_attr($label).'</strong></div>';
							echo '<ul>';
							foreach ($items as $i => $item) {
								if (!empty($item))
									echo '<li>'.esc_html($item).'</li>';
							}
							echo '</ul>';
						}
					}
					
					$group = array('newfeatures' => array(), 'improve' => array(), 'bugfixes' => array(), 'changes' => array(), 'remove' => array());
					
					if (substr ($line, strlen($line)-1) == '=' && substr ($line, 0, 1) == '=')
						echo '<h3 class="kc-log-ver">Version '.substr ($line, 1, strlen($line)-2).'</h3>';
					
				}
			}
			
		} else {
			_e('Error: Could not read data', 'kingcomposer');
		}
		
	} else {
		_e('Error: Could not find the file readme.txt', 'kingcomposer');	
	}
	
}
/*
*	Build list template from prebuilt list
*/
function kc_prerebuilt_templates ($data = array(), $registered = array()) {
	
	if (!isset($data['data']))
		return $data;
	
	$lz = array();
	
	foreach ($registered as $name => $path) {
		if (!isset($data['data']['term']) || empty($data['data']['term']) || !isset($registered[$data['data']['term']]))
			$data['data']['term'] = $name;
		$data['data']['terms'][] = array('name' => $name, 'id' => '', 'taxonomy' => $name);
	}
	
	$posts = kc_get_template_xml($registered[$data['data']['term']], '', $data['data']['s']);
	
	if (count($posts) > 0) {
		
		$to = (int)$data['data']['paged']*(int)$data['data']['per_page'];
		$start = $to-(int)$data['data']['per_page'];
		
		$data['data']['items'] = array();
		
		for($i = $start; $i < $to; $i++){
			if (isset($posts[$i]))
				$data['data']['items'][] = $posts[$i];
		}
		
		$data['data']['total'] = ceil(count($posts)/(int)$data['data']['per_page']);
		$data['data']['count'] = count($posts);
		$data['stt'] = 1;
		$data['message'] = 'Success';
	}else{
		$data['message'] = '<span style="font-size: 50px;">\\(^Д^)/</span><br /><br /><span style="font-size: 16px">'.__('Oops, there are no template found in package', 'kingcomposer').' <strong>'.$data['data']['term'].'</strong><br /><small><i>'.$registered[$data['data']['term']].'</i></small>';
	}
	
	return $data;
	
}
/*
*	Read templates from xml
*/	
function kc_get_template_xml($file = '', $id = '', $s = '') {
	
	if (empty($file) || !file_exists($file))
		return null;
	
	$xml = simplexml_load_file($file);
	$posts = array();

	foreach ($xml->channel->item as $item) {

		$meta = $item->children('http://wordpress.org/export/1.2/');
		
		$kc_meta = false;
		
		for ($i = 0; $i < count($meta->postmeta); $i++) {
			if ($meta->postmeta[$i]->meta_key == 'kc_data') {
				$kc_meta = unserialize($meta->postmeta[$i]->meta_value);
				break;
			}
		}
		
		if (!empty($id) && $id == (string)$meta->post_id) {
			if ($kc_meta !== false && isset($kc_meta['mode']) && $kc_meta['mode'] == 'kc') {
				$content = $item->children('http://purl.org/rss/1.0/modules/content/');
				return array((string)$content->encoded, $kc_meta);
			}else{
				return array(null, null);
			}
		}
		
		if ($kc_meta !== false && isset($kc_meta['mode']) && $kc_meta['mode'] == 'kc') {
			if ($s === '' || strpos(strtolower(html_entity_decode($item->title)), strtolower($s)) !== false) {
				$posts[] = array(
					'title' => html_entity_decode($item->title),
					'preview' => isset($kc_meta['thumbnail']) ? $kc_meta['thumbnail'] : '',
					'date' => date('F d, Y', strtotime((string)$item->pubDate)),
					'categories' => array(),
					'id' => (string)$meta->post_id,
					'type' => 'xml'
				);
			}
		
		}
		
	}
	
	return $posts;
	
}
/*
*	Read templates from xml
*/	
function kc_set_transient_xml_attachs() {
	
	global $kc, $wpdb;
	
	$delete_transient = "delete from {$wpdb->options} where option_name like '_transient_kc_attach_xml_%' or option_name like '_transient_timeout_kc_attach_xml_%'";

	$xmls = $kc->get_prebuilt_templates();
	
	if (is_array($xmls) && count($xmls) > 0) {
		
		$sizes = 0;
		$names = '';
		$unique_key = get_option('kc_map_xml_attachments', true);
	
		foreach ($xmls as $file) {
			
			if (file_exists($file)) {
				
				$sizes += filesize($file);
				$names .= $file;
				
			}
		}
		
		$unique = md5($names).$sizes;
		
		if ($unique_key !== $unique) {

			update_option('kc_map_xml_attachments', $unique);
			
			// DELETE transient	before adding new fresh bellow
			$wpdb->query($delete_transient);
			
			foreach ($xmls as $file) {
			
				if (file_exists($file)) {
					
					$xml = simplexml_load_file($file);
					foreach ($xml->channel->item as $item) {
	
						$meta = $item->children('http://wordpress.org/export/1.2/');
						if ((string)$meta->post_type == 'attachment') {
							
							$_wp_attached_file = '';
							$_wp_attachment_metadata = array();
							
							for ($i = 0; $i < count($meta->postmeta); $i++) {
								if ($meta->postmeta[$i]->meta_key == '_wp_attached_file') {
									$_wp_attached_file = (string)$meta->postmeta[$i]->meta_value;
								}
								if ($meta->postmeta[$i]->meta_key == '_wp_attachment_metadata') {
									$_wp_attachment_metadata = unserialize($meta->postmeta[$i]->meta_value);
								}
							}
							
							$serialized_value = maybe_serialize(array(
								'url' => (string)$meta->attachment_url,
								'metadata' => $_wp_attachment_metadata,
								'expiration' => (defined('KC_ATTACHS_XML_EXPIRATION') ? (time()+(int)KC_ATTACHS_XML_EXPIRATION) : 0)
							));
							
							$wpdb->query( $wpdb->prepare( "INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)", '_transient_kc_attach_xml_'.(string)$meta->post_id, $serialized_value, 'no' ) );
							
						}
						
					}
					
				}
			}
			
		}
		
	} else if (get_option('kc_map_xml_attachments')) {
		$wpdb->query($delete_transient);
		delete_option('kc_map_xml_attachments');
	}
	
}

/*
*	preg replace attach url
*/
function kc_images_filter($url = '') {

	//$regx = '/\%SITE\_URL\%(.+?)\.(jpg|gif|png|jpeg|JPG|GIF|PNG|JPEG|http)/';
	//$regx = '/\%SITE\_URL\%(.+?)\.([A-Za-z0-9\s]+)/i';
	$regx = '/\%SITE\_URL\%(.+?)(\'|\"|\)|\ )/i';
	
	return preg_replace_callback($regx, 'kc_images_filter_callback', $url);
	
}
function kc_images_filter_callback($m) {

	return kc_attach_url(KC_SITE.$m[1]).$m[2];
	
}
/*
*	Fix attach urls
*/
function kc_attach_url($url = '') {
	
	if (strpos($url, KC_SITE.'/wp-content') === false)
		return $url;
	
	global $kc;
	$xmls = $kc->get_prebuilt_templates();

	$test_exist = str_replace( 
		array(KC_SITE, '/', '\\'), 
		array(untrailingslashit(ABSPATH), KDS, KDS), 
		$url
	);
	
	if (count($xmls) === 0) {

		if (strpos($url, KC_SITE) === 0 && !file_exists($test_exist)) {
			return KC_URL.'/assets/images/get_start.jpg';
		}
		
		return $url;
		
	}
	
	if (strpos($url, KC_SITE) === 0 && file_exists($test_exist)) {
		return $url;
	}else{
		
		global $wpdb;
		
		kc_set_transient_xml_attachs();
		
		$xurl = str_replace(KC_SITE, '', esc_url($url));
		$posts = $wpdb->get_results("select * from {$wpdb->options} where (option_name like '_transient_kc_attach_xml_%' or option_name like '_transient_timeout_kc_attach_xml_%') and option_value like '%".$xurl."%'");
		
		if (count($posts) > 0) {
			
			$attach = unserialize($posts[0]->option_value);
			
			if (isset($attach['expiration']) && ($attach['expiration'] === 0 || $attach['expiration'] > time())) {
				if (isset($attach['url']) && 
					strpos($attach['url'], $xurl) !== false && 
					strpos($attach['url'], "/wp-content/uploads") !== false
				){
					$attach['url'] = explode("/wp-content/uploads", $attach['url']);
					return $attach['url'][0].$xurl;
				}
			}else{
				delete_transient(str_replace('_transient_', '', $posts[0]->option_name));
			}
		}
	}
	
	return $url;
	
}
/*
 * Return a random string with length
 */
function kc_random_string( $length = 10 ){
	$str = "";
	$allow_characters = array_merge(range('A','Z'), range('a','z'), range('0','9'));
	$_max_length = count($allow_characters) - 1;

	for ($i = 0; $i < $length; $i++) {
		$rand = mt_rand(0, $_max_length);
		$str .= $allow_characters[$rand];
	}

	return $str;
}
/*
 * Get first image in content of a post
 */
function kc_first_image( $content ) {
	
	$first_img = '';
	
	ob_start();
	ob_end_clean();
	
	$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $content, $matches);
	
	if( isset($matches[1][0]) )
		return $matches[1][0];
	
	return false;
}
/*
 * Sort screen size as ordering
 */
function kc_screen_sort( array &$array ) {
	$screens = array('any', '1000-5000', '1024', '999', '767', '479');
	uksort($array, function($key1, $key2) use ($screens) {
		return (array_search($key1, $screens) > array_search($key2, $screens));
	});
}

/*
 * Sort first array base on key as array second
 */
function kc_abasort( array &$array, $order ) {
	$order = array('any', '1000-5000', '1024', '999', '767', '479');
	uksort($array, function($key1, $key2) use ($order) {
		return (array_search($key1, $order) > array_search($key2, $order));
	});
}

Zerion Mini Shell 1.0