get_results(
"
SELECT
ID, post_content
FROM $wpdb->posts
WHERE
( post_type IN ('post', 'page') )
AND
( post_content LIKE '%[" . $shortcode . "%]%' )
AND
( post_status IN ('publish', 'private') )
"
);
if( $pages ){
foreach( $pages as $p ){
// find shortcode
$pos1 = strpos( $p->post_content, '[' . $shortcode );
$pos2 = strpos( $p->post_content, ']', $pos1 );
$shortcodeContent = substr( $p->post_content, $pos1, $pos2 - $pos1 + 1 );
$shortcodeContent = substr( $p->post_content, $pos1, $pos2 - $pos1 ) . ' ]';
$shortcodeAtts = shortcode_parse_atts( $shortcodeContent );
unset( $shortcodeAtts[0] );
unset( $shortcodeAtts[1] );
// _print_r( $shortcodeAtts );
// echo "$pos1 - $pos2\n$shortcodeContent\n$p->post_content\n\n";
$ret[ $p->ID ] = $shortcodeAtts;
}
}
return $ret;
}
public static function removeInvisibleCharacters( $str, $url_encoded = TRUE )
{
$non_displayables = array();
// every control character except newline (dec 10)
// carriage return (dec 13), and horizontal tab (dec 09)
if ($url_encoded){
$non_displayables[] = '/%0[0-8bcef]/'; // url encoded 00-08, 11, 12, 14, 15
$non_displayables[] = '/%1[0-9a-f]/'; // url encoded 16-31
}
$non_displayables[] = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S'; // 00-08, 11, 12, 14-31, 127
do {
$str = preg_replace($non_displayables, '', $str, -1, $count);
}
while ($count);
return $str;
}
public static function buildCsv( $array, $separator = ',' )
{
$processed = array();
reset( $array );
foreach( $array as $a ){
if( strpos($a, '"') !== FALSE ){
$a = str_replace( '"', '""', $a );
}
$wrap = FALSE;
if( strpos($a, $separator) !== FALSE ){
$wrap = TRUE;
}
elseif( strpos($a, "\n") !== FALSE ){
$wrap = TRUE;
}
if( $wrap ){
$a = '"' . $a . '"';
}
$processed[] = $a;
}
$ret = join( $separator, $processed );
return $ret;
}
public static function pushDownload( $filename, $data )
{
// Try to determine if the filename includes a file extension.
// We need it in order to set the MIME type
if (FALSE === strpos($filename, '.')){
return FALSE;
}
// Grab the file extension
$x = explode('.', $filename);
$extension = end($x);
// Load the mime types
$mimes = array();
// Set a default mime if we can't find it
if ( ! isset($mimes[$extension])){
$mime = 'application/octet-stream';
}
else {
$mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension];
}
// Generate the server headers
if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== FALSE){
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Transfer-Encoding: binary");
header('Pragma: public');
header("Content-Length: ".strlen($data));
}
else {
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header('Pragma: no-cache');
header("Content-Length: ".strlen($data));
}
exit($data);
}
public static function generateRand( $len = 12, $conf = array() )
{
$useLetters = isset($conf['letters']) ? $conf['letters'] : TRUE;
$useHex = isset($conf['hex']) ? $conf['hex'] : FALSE;
$useDigits = isset($conf['digits']) ? $conf['digits'] : TRUE;
$useCaps = isset($conf['caps']) ? $conf['caps'] : FALSE;
$salt = '';
if( $useHex ){
$salt .= 'abcdef';
}
if( $useLetters )
$salt .= 'abcdefghijklmnopqrstuvxyz';
if( $useDigits ){
// $salt .= '0123456789';
$salt .= '123456789';
}
if( $useCaps ){
$salt .= 'ABCDEFGHIJKLMNOPQRSTUVXYZ';
}
// srand( (double) microtime() * 1000000 );
$return = '';
$i = 1;
$array = array();
while ( $i <= $len ){
$num = rand() % strlen($salt);
$tmp = substr($salt, $num, 1);
$array[] = $tmp;
$i++;
}
shuffle( $array );
$return = join( '', $array );
return $return;
}
static function adjustColorBrightness( $hex, $steps )
{
// Steps should be between -255 and 255. Negative = darker, positive = lighter
$steps = max(-255, min(255, $steps));
// Normalize into a six character long hex string
$hex = str_replace('#', '', $hex);
if( strlen($hex) == 3 ){
$hex = str_repeat(substr($hex,0,1), 2).str_repeat(substr($hex,1,1), 2).str_repeat(substr($hex,2,1), 2);
}
// Split into three parts: R, G and B
$color_parts = str_split($hex, 2);
$return = '#';
foreach( $color_parts as $color ){
$color = hexdec($color); // Convert to decimal
$color = max(0,min(255,$color + $steps)); // Adjust color
$return .= str_pad(dechex($color), 2, '0', STR_PAD_LEFT); // Make two char hex code
}
return $return;
}
static function arithmeticMean( $a )
{
$sum = 0;
foreach( $a as $element ){
$sum += $element;
}
$return = $sum / count($a);
return $return;
}
static function geometricMean( $array )
{
if( ! count($array) ){
return 0;
}
$chunkSize = 10;
$total = count($array);
$power = 1 / $total;
$chunkProducts = array();
$chunks = array_chunk( $array, $chunkSize );
foreach( $chunks as $chunk ){
$chunkProducts[] = pow( array_product($chunk), $power );
}
$result = array_product( $chunkProducts );
return $result;
}
static function meanSquareError( $array1, $array2 )
{
$totals = array();
$count = count( $array1 );
for( $ii = 0; $ii < $count; $ii++ ){
$thisOne = pow( ($array2[$ii] - $array1[$ii]), 2 );
$totals[] = $thisOne;
}
$return = array_sum($totals) / count($totals);
return $return;
}
static function removeFromArray( $array, $what, $replaceWith = NULL )
{
$return = $array;
for( $ii = count($return) - 1; $ii >= 0; $ii-- ){
if( ! array_key_exists($ii, $return) ){
continue;
}
if( $return[$ii] == $what ){
if( NULL === $replaceWith ){
array_splice( $return, $ii, 1 );
}
else {
array_splice( $return, $ii, 1, array($replaceWith) );
}
}
}
return $return;
}
static function tempCrudPrepareArgs( $args, $idField )
{
if( $args && (! is_array($args)) ){
$args = array( $args );
}
if( isset($args['_PREPARED']) && $args['_PREPARED'] ){
return $args;
}
$return = array(
'_PREPARED' => TRUE,
'LIMIT' => array(),
'SORT' => array(),
'WHERE' => array(),
'SEARCH' => NULL,
);
$allowed_compares = array( '=', '<>', '>=', '<=', '>', '<', 'IN', 'NOTIN', 'LIKE', '&');
$special = array( 'limit', 'sort', 'search');
foreach( $args as $arg ){
if( ! is_array($arg) ){
$arg = array( $idField, '=', $arg );
}
$k = $arg[0];
if( in_array($k, $special) ){
array_shift( $arg );
switch( $k ){
case 'search':
$v = array_shift( $arg );
$return['SEARCH'] = $v;
break;
case 'limit':
$v = array_shift( $arg );
$offset = array_shift( $arg );
$return['LIMIT'] = array( $v, $offset );
break;
case 'sort':
if( is_array($return['SORT']) ){
$sort_by = array_shift( $arg );
$sort_how = strtolower( $arg ? array_shift( $arg ) : 'asc' );
if( ! in_array($sort_how, array('asc', 'desc')) ){
echo "SORTING '$sort_how' IS NOT ALLOWED, ONLY ASC OR DESC!
";
$sort_how = 'asc';
}
$return['SORT'][] = array( $sort_by, $sort_how );
}
break;
}
continue;
}
// WHERE
if( count($arg) < 3 ){
echo "FOR WHERE ARGUMENTS REQUIRE 3 PARAMS: '$k'";
_print_r( $args );
_print_r( $arg );
exit;
}
list( $k, $compare, $v ) = $arg;
$compare = strtoupper( $compare );
if( ! in_array($compare, $allowed_compares) ){
echo "COMPARING BY '$compare' IS NOT ALLOWED!
";
exit;
}
if( ($k == $idField) && ($idField == 'id') && ( ! is_array($v) ) ){
$v = (int) $v;
}
if( in_array($compare, array('IN', 'NOTIN')) && (! is_array($v)) ){
$v = strlen($v) ? $v : 0;
$v = array($v);
}
if( $v == 'null' ){
$v = NULL;
}
if( ($k == $idField) && ($compare == '=') ){
$return['LIMIT'] = array(1, 0);
$return['SORT'] = NULL;
}
$return['WHERE'][] = array( $k, $compare, $v );
}
return $return;
}
public static function listFiles( $dir, $type = 'file', $extension = '' )
{
if( ! is_array($dir) )
$dir = array( $dir );
$return = array();
foreach( $dir as $this_dir ){
if ( file_exists($this_dir) && ($handle = opendir($this_dir)) ){
while ( false !== ($f = readdir($handle)) ){
if( substr($f, 0, 1) == '.' )
continue;
if( 'file' == $type ){
if( is_file( $this_dir . '/' . $f ) ){
if( (! $extension ) || ( substr($f, - strlen($extension)) == $extension ) ){
$return[] = $f;
}
}
}
else {
if( is_dir( $this_dir . '/' . $f ) ){
if( (! $extension ) || ( substr($f, - strlen($extension)) == $extension ) ){
$return[] = $f;
}
}
}
}
closedir($handle);
}
}
sort( $return );
return $return;
}
public static function makeCombos( $array )
{
$return = array();
while( $thisOnes = array_shift($array) ){
$thisCombos = array();
foreach( $thisOnes as $r ){
if( $return ){
reset( $return );
foreach( $return as $combo ){
$combo[] = $r;
$thisCombos[] = $combo;
}
}
else {
$thisCombos[] = array( $r );
}
}
if( $thisCombos ){
$return = $thisCombos;
}
}
return $return;
}
}