$option) { $options[$i] = str_replace("'", '',$option); } } } mysql_free_result($result); return $options; } // get_boolean transforms a string to a boolean value. If the string is // "false" (case insensitive), then the boolean value false is returned. In // any other case, true is returned. function get_boolean( $string ) { $boolean = true; if ( preg_match( '/^false$/i', $string ) ) { $boolean = false; } return $boolean; } /** * returns boolean string 'true' or 'false' if the given var is boolean * * @param mixed $var * @return mixed */ function boolean_to_string($var) { if (is_bool($var)) { if ($var) { return 'true'; } else { return 'false'; } } else { return $var; } } // The function get_moment returns a float value coresponding to the number // of seconds since the unix epoch (1st January 1970) and the microseconds // are precised : e.g. 1052343429.89276600 function get_moment() { $t1 = explode( ' ', microtime() ); $t2 = explode( '.', $t1[0] ); $t2 = $t1[1].'.'.$t2[1]; return $t2; } // The function get_elapsed_time returns the number of seconds (with 3 // decimals precision) between the start time and the end time given. function get_elapsed_time( $start, $end ) { return number_format( $end - $start, 3, '.', ' ').' s'; } // - The replace_space function replaces space and '-' characters // by their HTML equivalent &nbsb; and − // - The function does not replace characters in HTML tags // - This function was created because IE5 does not respect the // CSS "white-space: nowrap;" property unless space and minus // characters are replaced like this function does. // - Example : //
['.$page['count_queries'].'] ';
$output.= "\n".$query;
$output.= "\n".'(this query time : ';
$output.= number_format($time, 3, '.', ' ').' s)';
$output.= "\n".'(total SQL time : ';
$output.= number_format($page['queries_time'], 3, '.', ' ').' s)';
$output.= '';
echo $output;
}
return $result;
}
function pwg_debug( $string )
{
global $debug,$t2,$count_queries;
$now = explode( ' ', microtime() );
$now2 = explode( '.', $now[0] );
$now2 = $now[1].'.'.$now2[1];
$time = number_format( $now2 - $t2, 3, '.', ' ').' s';
$debug.= '['.$time.', ';
$debug.= $count_queries.' queries] : '.$string;
$debug.= "\n";
}
/**
* Redirects to the given URL
*
* Note : once this function called, the execution doesn't go further
* (presence of an exit() instruction.
*
* @param string $url
* @return void
*/
function redirect( $url )
{
global $user, $template, $lang_info, $conf, $lang, $t2, $page;
// $refresh, $url_link and $title are required for creating an automated
// refresh page in header.tpl
$refresh = 0;
$url_link = $url;
$title = 'redirection';
include( PHPWG_ROOT_PATH.'include/page_header.php' );
$template->set_filenames( array( 'redirect' => 'redirect.tpl' ) );
$template->parse('redirect');
include( PHPWG_ROOT_PATH.'include/page_tail.php' );
exit();
}
/**
* returns $_SERVER['QUERY_STRING'] whitout keys given in parameters
*
* @param array $rejects
* @returns string
*/
function get_query_string_diff($rejects = array())
{
$query_string = '';
$str = $_SERVER['QUERY_STRING'];
parse_str($str, $vars);
$is_first = true;
foreach ($vars as $key => $value)
{
if (!in_array($key, $rejects))
{
$query_string.= $is_first ? '?' : '&';
$is_first = false;
$query_string.= $key.'='.$value;
}
}
return $query_string;
}
/**
* returns available templates/themes
*/
function get_templates()
{
return get_dirs(PHPWG_ROOT_PATH.'theme');
}
function get_themes()
{
$themes = array();
foreach (get_dirs(PHPWG_ROOT_PATH.'template') as $template)
{
foreach (get_dirs(PHPWG_ROOT_PATH.'template/'.$template.'/theme') as $theme)
{
array_push($themes, $template.'/'.$theme);
}
}
return $themes;
}
/**
* returns thumbnail filepath (or distant URL if thumbnail is remote) for a
* given element
*
* the returned string can represente the filepath of the thumbnail or the
* filepath to the corresponding icon for non picture elements
*
* @param string path
* @param string tn_ext
* @return string
*/
function get_thumbnail_src($path, $tn_ext = '')
{
global $conf, $user;
if ($tn_ext != '')
{
$src = substr_replace(get_filename_wo_extension($path),
'/thumbnail/'.$conf['prefix_thumbnail'],
strrpos($path,'/'),
1);
$src.= '.'.$tn_ext;
}
else
{
$src = get_themeconf('mime_icon_dir');
$src.= strtolower(get_extension($path)).'.png';
}
return $src;
}
// my_error returns (or send to standard output) the message concerning the
// error occured for the last mysql query.
function my_error($header)
{
$error = ''; $error.= $header; $error.= '[mysql error '.mysql_errno().'] '; $error.= mysql_error(); $error.= ''; die ($error); } /** * creates an array based on a query, this function is a very common pattern * used here * * @param string $query * @param string $fieldname * @return array */ function array_from_query($query, $fieldname) { $array = array(); $result = pwg_query($query); while ($row = mysql_fetch_array($result)) { array_push($array, $row[$fieldname]); } return $array; } /** * instantiate number list for days in a template block * * @param string blockname * @param string selection */ function get_day_list($blockname, $selection) { global $template; $template->assign_block_vars( $blockname, array('SELECTED' => '', 'VALUE' => 0, 'OPTION' => '--')); for ($i = 1; $i <= 31; $i++) { $selected = ''; if ($i == (int)$selection) { $selected = 'selected="selected"'; } $template->assign_block_vars( $blockname, array('SELECTED' => $selected, 'VALUE' => $i, 'OPTION' => str_pad($i, 2, '0', STR_PAD_LEFT))); } } /** * instantiate month list in a template block * * @param string blockname * @param string selection */ function get_month_list($blockname, $selection) { global $template, $lang; $template->assign_block_vars( $blockname, array('SELECTED' => '', 'VALUE' => 0, 'OPTION' => '------------')); for ($i = 1; $i <= 12; $i++) { $selected = ''; if ($i == (int)$selection) { $selected = 'selected="selected"'; } $template->assign_block_vars( $blockname, array('SELECTED' => $selected, 'VALUE' => $i, 'OPTION' => $lang['month'][$i])); } } /** * fill the current user caddie with given elements, if not already in * caddie * * @param array elements_id */ function fill_caddie($elements_id) { global $user; include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); $query = ' SELECT element_id FROM '.CADDIE_TABLE.' WHERE user_id = '.$user['id'].' ;'; $in_caddie = array_from_query($query, 'element_id'); $caddiables = array_diff($elements_id, $in_caddie); $datas = array(); foreach ($caddiables as $caddiable) { array_push($datas, array('element_id' => $caddiable, 'user_id' => $user['id'])); } if (count($caddiables) > 0) { mass_inserts(CADDIE_TABLE, array('element_id','user_id'), $datas); } } /** * returns the element name from its filename * * @param string filename * @return string name */ function get_name_from_file($filename) { return str_replace('_',' ',get_filename_wo_extension($filename)); } /** * returns the corresponding value from $lang if existing. Else, the key is * returned * * @param string key * @return string */ function l10n($key) { global $lang, $conf; if ($conf['debug_l10n'] and !isset($lang[$key])) { echo '[l10n] language key "'.$key.'" is not defined
'; // print_r($search); // echo ''; // SQL where clauses are stored in $clauses array during query // construction $clauses = array(); foreach (array('file','name','comment','keywords','author') as $textfield) { if (isset($search['fields'][$textfield])) { $local_clauses = array(); foreach ($search['fields'][$textfield]['words'] as $word) { array_push($local_clauses, $textfield." LIKE '%".$word."%'"); } // adds brackets around where clauses $local_clauses = prepend_append_array_items($local_clauses, '(', ')'); array_push( $clauses, implode( ' '.$search['fields'][$textfield]['mode'].' ', $local_clauses ) ); } } if (isset($search['fields']['allwords'])) { $fields = array('file', 'name', 'comment', 'keywords', 'author'); // in the OR mode, request bust be : // ((field1 LIKE '%word1%' OR field2 LIKE '%word1%') // OR (field1 LIKE '%word2%' OR field2 LIKE '%word2%')) // // in the AND mode : // ((field1 LIKE '%word1%' OR field2 LIKE '%word1%') // AND (field1 LIKE '%word2%' OR field2 LIKE '%word2%')) $word_clauses = array(); foreach ($search['fields']['allwords']['words'] as $word) { $field_clauses = array(); foreach ($fields as $field) { array_push($field_clauses, $field." LIKE '%".$word."%'"); } // adds brackets around where clauses array_push( $word_clauses, implode( "\n OR ", $field_clauses ) ); } array_walk( $word_clauses, create_function('&$s','$s="(".$s.")";') ); array_push( $clauses, "\n ". implode( "\n ". $search['fields']['allwords']['mode']. "\n ", $word_clauses ) ); } foreach (array('date_available', 'date_creation') as $datefield) { if (isset($search['fields'][$datefield])) { array_push( $clauses, $datefield." = '".$search['fields'][$datefield]['date']."'" ); } foreach (array('after','before') as $suffix) { $key = $datefield.'-'.$suffix; if (isset($search['fields'][$key])) { array_push( $clauses, $datefield. ($suffix == 'after' ? ' >' : ' <'). ($search['fields'][$key]['inc'] ? '=' : ''). " '".$search['fields'][$key]['date']."'" ); } } } if (isset($search['fields']['cat'])) { if ($search['fields']['cat']['sub_inc']) { // searching all the categories id of sub-categories $cat_ids = get_subcat_ids($search['fields']['cat']['words']); } else { $cat_ids = $search['fields']['cat']['words']; } $local_clause = 'category_id IN ('.implode(',', $cat_ids).')'; array_push($clauses, $local_clause); } // adds brackets around where clauses $clauses = prepend_append_array_items($clauses, '(', ')'); $where_separator = implode( "\n ".$search['mode'].' ', $clauses ); $search_clause = $where_separator; if (isset($forbidden)) { $search_clause.= "\n AND ".$forbidden; } return $search_clause; } ?>