$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; } ?>