Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Q
question2answer
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
outils
question2answer
Commits
c20678fb
Commit
c20678fb
authored
Jan 12, 2017
by
Scott
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Coding style (PHPDoc auto-gen)
parent
7f346522
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
275 additions
and
16 deletions
+275
-16
page.php
qa-include/app/page.php
+14
-1
qa-base.php
qa-include/qa-base.php
+176
-5
qa-feed.php
qa-include/qa-feed.php
+13
-0
qa-theme-base.php
qa-include/qa-theme-base.php
+56
-10
sort.php
qa-include/util/sort.php
+16
-0
No files found.
qa-include/app/page.php
View file @
c20678fb
...
...
@@ -34,6 +34,11 @@ require_once QA_INCLUDE_DIR . 'db/selects.php';
/**
* Standard database failure handler function which bring up the install/repair/upgrade page
* @param $type
* @param int $errno
* @param string $error
* @param string $query
* @return mixed
*/
function
qa_page_db_fail_handler
(
$type
,
$errno
=
null
,
$error
=
null
,
$query
=
null
)
{
...
...
@@ -228,6 +233,8 @@ function qa_get_request_content()
/**
* Output the $qa_content via the theme class after doing some pre-processing, mainly relating to Javascript
* @param $qa_content
* @return mixed
*/
function
qa_output_content
(
$qa_content
)
{
...
...
@@ -375,6 +382,8 @@ function qa_output_content($qa_content)
/**
* Update any statistics required by the fields in $qa_content, and return true if something was done
* @param $qa_content
* @return bool
*/
function
qa_do_content_stats
(
$qa_content
)
{
...
...
@@ -452,6 +461,7 @@ function qa_page_routing()
/**
* Sets the template which should be passed to the theme class, telling it which type of page it's displaying
* @param $template
*/
function
qa_set_template
(
$template
)
{
...
...
@@ -463,8 +473,11 @@ function qa_set_template($template)
/**
* Start preparing theme content in global $qa_content variable, with or without $voting support,
* in the context of the categories in $categoryids (if not null)
* @param bool $voting
* @param array $categoryids
* @return array
*/
function
qa_content_prepare
(
$voting
=
false
,
$categoryids
=
null
)
function
qa_content_prepare
(
$voting
=
false
,
$categoryids
=
null
)
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
...
...
qa-include/qa-base.php
View file @
c20678fb
...
...
@@ -35,6 +35,8 @@ define('QA_BUILD_DATE', '2016-03-14');
* Class names should be of the form Q2A_<Namespace>_<Class>, e.g. Q2A_Util_Debug. There may be multiple "namespaces".
* Classes are mapped to PHP files with the underscores converted to directory separators. The Q2A_Util_Debug class is in
* the file qa-include/Q2A/Util/Debug.php. A class named Q2A_Db_User_Messages would be in a file qa-include/Q2A/Db/User/Messages.php.
*
* @param $class
*/
function
qa_autoload
(
$class
)
{
...
...
@@ -72,6 +74,8 @@ qa_initialize_plugins();
/**
* Converts the $version string (e.g. 1.6.2.2) to a floating point that can be used for greater/lesser comparisons
* (PHP's version_compare() function is not quite suitable for our needs)
* @param $version
* @return float
*/
function
qa_version_to_float
(
$version
)
{
...
...
@@ -93,6 +97,8 @@ function qa_version_to_float($version)
/**
* Returns true if the current Q2A version is lower than $version, if both are valid version strings for qa_version_to_float()
* @param $version
* @return bool
*/
function
qa_qa_version_below
(
$version
)
{
...
...
@@ -105,6 +111,8 @@ function qa_qa_version_below($version)
/**
* Returns true if the current PHP version is lower than $version, if both are valid version strings for qa_version_to_float()
* @param $version
* @return bool
*/
function
qa_php_version_below
(
$version
)
{
...
...
@@ -383,6 +391,10 @@ function qa_initialize_plugins()
* Name, Description, Min Q2A & Min PHP are not currently used by themes.
*
* @deprecated Deprecated from 1.7; Q2A_Util_Metadata class and metadata.json files should be used instead
* @param $contents
* @param $type
* @param bool $versiononly
* @return array
*/
function
qa_addon_metadata
(
$contents
,
$type
,
$versiononly
=
false
)
{
...
...
@@ -472,6 +484,12 @@ function qa_load_override_files()
/**
* Register a module of $type named $name, whose class named $class is defined in file $include (or null if no include necessary)
* If this module comes from a plugin, pass in the local plugin $directory and the $urltoroot relative url for that directory
* @param $type
* @param $include
* @param $class
* @param $name
* @param string $directory
* @param string $urltoroot
*/
function
qa_register_module
(
$type
,
$include
,
$class
,
$name
,
$directory
=
QA_INCLUDE_DIR
,
$urltoroot
=
null
)
{
...
...
@@ -496,6 +514,10 @@ function qa_register_module($type, $include, $class, $name, $directory = QA_INCL
/**
* Register a layer named $name, defined in file $include. If this layer comes from a plugin (as all currently do),
* pass in the local plugin $directory and the $urltoroot relative url for that directory
* @param $include
* @param $name
* @param string $directory
* @param string $urltoroot
*/
function
qa_register_layer
(
$include
,
$name
,
$directory
=
QA_INCLUDE_DIR
,
$urltoroot
=
null
)
{
...
...
@@ -519,6 +541,9 @@ function qa_register_layer($include, $name, $directory = QA_INCLUDE_DIR, $urltor
/**
* Register a file $include containing override functions. If this file comes from a plugin (as all currently do),
* pass in the local plugin $directory and the $urltoroot relative url for that directory
* @param $include
* @param string $directory
* @param string $urltoroot
*/
function
qa_register_overrides
(
$include
,
$directory
=
QA_INCLUDE_DIR
,
$urltoroot
=
null
)
{
...
...
@@ -536,6 +561,8 @@ function qa_register_overrides($include, $directory = QA_INCLUDE_DIR, $urltoroot
* Register a set of language phrases, which should be accessed by the prefix $name/ in the qa_lang_*() functions.
* Pass in the $pattern representing the PHP files that define these phrases, where * in the pattern is replaced with
* the language code (e.g. 'fr') and/or 'default'. These files should be formatted like Q2A's qa-lang-*.php files.
* @param $pattern
* @param $name
*/
function
qa_register_phrases
(
$pattern
,
$name
)
{
...
...
@@ -559,6 +586,10 @@ function qa_register_phrases($pattern, $name)
/**
* Register a plugin module of $type named $name, whose class named $class is defined in file $include (or null if no include necessary)
* This function relies on some global variable values and can only be called from a plugin's qa-plugin.php file
* @param $type
* @param $include
* @param $class
* @param $name
*/
function
qa_register_plugin_module
(
$type
,
$include
,
$class
,
$name
)
{
...
...
@@ -574,6 +605,8 @@ function qa_register_plugin_module($type, $include, $class, $name)
/**
* Register a plugin layer named $name, defined in file $include. Can only be called from a plugin's qa-plugin.php file
* @param $include
* @param $name
*/
function
qa_register_plugin_layer
(
$include
,
$name
)
{
...
...
@@ -589,6 +622,7 @@ function qa_register_plugin_layer($include, $name)
/**
* Register a plugin file $include containing override functions. Can only be called from a plugin's qa-plugin.php file
* @param $include
*/
function
qa_register_plugin_overrides
(
$include
)
{
...
...
@@ -604,6 +638,8 @@ function qa_register_plugin_overrides($include)
/**
* Register a file name $pattern within a plugin directory containing language phrases accessed by the prefix $name
* @param $pattern
* @param $name
*/
function
qa_register_plugin_phrases
(
$pattern
,
$name
)
{
...
...
@@ -622,6 +658,8 @@ function qa_register_plugin_phrases($pattern, $name)
/**
* Calls eval() on the PHP code in $eval which came from the file $filename. It supplements PHP's regular error reporting by
* displaying/logging (as appropriate) the original source filename, if an error occurred when evaluating the code.
* @param $eval
* @param $filename
*/
function
qa_eval_from_file
(
$eval
,
$filename
)
{
...
...
@@ -655,6 +693,9 @@ function qa_eval_from_file($eval, $filename)
/**
* Call $function with the arguments in the $args array (doesn't work with call-by-reference functions)
* @param $function
* @param $args
* @return mixed
*/
function
qa_call
(
$function
,
$args
)
{
...
...
@@ -709,6 +750,9 @@ function qa_to_override($function)
/**
* Call the function which immediately overrides $function with the arguments in the $args array
* @param $function
* @param $args
* @return mixed
*/
function
qa_call_override
(
$function
,
$args
)
{
...
...
@@ -729,6 +773,7 @@ function qa_call_override($function, $args)
/**
* Exit PHP immediately after reporting a shutdown with $reason to any installed process modules
* @param string $reason
*/
function
qa_exit
(
$reason
=
null
)
{
...
...
@@ -741,6 +786,8 @@ function qa_exit($reason = null)
/**
* Display $message in the browser, write it to server error log, and then stop abruptly
* @param $message
* @return mixed
*/
function
qa_fatal_error
(
$message
)
{
...
...
@@ -784,6 +831,8 @@ function qa_list_module_types()
/**
* Return a list of names of registered modules of $type
* @param $type
* @return array
*/
function
qa_list_modules
(
$type
)
{
...
...
@@ -793,6 +842,9 @@ function qa_list_modules($type)
/**
* Return an array containing information about the module of $type named $name
* @param $type
* @param $name
* @return
*/
function
qa_get_module_info
(
$type
,
$name
)
{
...
...
@@ -802,6 +854,9 @@ function qa_get_module_info($type, $name)
/**
* Return an instantiated class for module of $type named $name, whose functions can be called, or null if it doesn't exist
* @param $type
* @param $name
* @return mixed|null
*/
function
qa_load_module
(
$type
,
$name
)
{
...
...
@@ -833,6 +888,8 @@ function qa_load_module($type, $name)
/**
* Return an array of instantiated clases for modules which have defined $method
* (all modules are loaded but not included in the returned array)
* @param $method
* @return array
*/
function
qa_load_all_modules_with
(
$method
)
{
...
...
@@ -855,6 +912,9 @@ function qa_load_all_modules_with($method)
/**
* Return an array of instantiated clases for modules of $type which have defined $method
* (other modules of that type are also loaded but not included in the returned array)
* @param $type
* @param $method
* @return array
*/
function
qa_load_modules_with
(
$type
,
$method
)
{
...
...
@@ -877,6 +937,9 @@ function qa_load_modules_with($type, $method)
/**
* Return HTML representation of $string, work well with blocks of text if $multiline is true
* @param $string
* @param bool $multiline
* @return mixed|string
*/
function
qa_html
(
$string
,
$multiline
=
false
)
{
...
...
@@ -897,8 +960,12 @@ function qa_html($string, $multiline = false)
* Return $html after ensuring it is safe, i.e. removing Javascripts and the like - uses htmLawed library
* Links open in a new window if $linksnewwindow is true. Set $storage to true if sanitization is for
* storing in the database, rather than immediate display to user - some think this should be less strict.
* @param $html
* @param bool $linksnewwindow
* @param bool $storage
* @return mixed|string
*/
function
qa_sanitize_html
(
$html
,
$linksnewwindow
=
false
,
$storage
=
false
)
function
qa_sanitize_html
(
$html
,
$linksnewwindow
=
false
,
$storage
=
false
)
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
...
...
@@ -923,6 +990,9 @@ function qa_sanitize_html($html, $linksnewwindow=false, $storage=false)
/**
* htmLawed hook function used to process tags in qa_sanitize_html(...)
* @param $element
* @param array $attributes
* @return string
*/
function
qa_sanitize_html_hook_tag
(
$element
,
$attributes
=
null
)
{
...
...
@@ -950,6 +1020,8 @@ function qa_sanitize_html_hook_tag($element, $attributes = null)
/**
* Return XML representation of $string, which is similar to HTML but ASCII control characters are also disallowed
* @param $string
* @return string
*/
function
qa_xml
(
$string
)
{
...
...
@@ -960,6 +1032,9 @@ function qa_xml($string)
/**
* Return JavaScript representation of $value, putting in quotes if non-numeric or if $forcequotes is true. In the
* case of boolean values they are returned as the appropriate true or false string
* @param $value
* @param bool $forcequotes
* @return string
*/
function
qa_js
(
$value
,
$forcequotes
=
false
)
{
...
...
@@ -984,8 +1059,12 @@ function qa_js($value, $forcequotes = false)
/**
* Inform Q2A that the current request is $request (slash-separated, independent of the url scheme chosen),
* that the relative path to the Q2A root apperas to be $relativeroot, and the url scheme appears to be $usedformat
* @param $request
* @param $relativeroot
* @param $usedformat
* @return mixed
*/
function
qa_set_request
(
$request
,
$relativeroot
,
$usedformat
=
null
)
function
qa_set_request
(
$request
,
$relativeroot
,
$usedformat
=
null
)
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
...
...
@@ -1011,6 +1090,8 @@ function qa_request()
/**
* Returns the indexed $part (as separated by slashes) of the current Q2A request, or null if it doesn't exist
* @param $part
* @return
*/
function
qa_request_part
(
$part
)
{
...
...
@@ -1021,6 +1102,8 @@ function qa_request_part($part)
/**
* Returns an array of parts (as separated by slashes) of the current Q2A request, starting at part $start
* @param int $start
* @return array
*/
function
qa_request_parts
(
$start
=
0
)
{
...
...
@@ -1030,6 +1113,8 @@ function qa_request_parts($start = 0)
/**
* Return string for incoming GET/POST/COOKIE value, stripping slashes if appropriate
* @param $string
* @return mixed|string
*/
function
qa_gpc_to_string
(
$string
)
{
...
...
@@ -1041,6 +1126,8 @@ function qa_gpc_to_string($string)
/**
* Return string with slashes added, if appropriate for later removal by qa_gpc_to_string()
* @param $string
* @return mixed|string
*/
function
qa_string_to_gpc
(
$string
)
{
...
...
@@ -1052,6 +1139,8 @@ function qa_string_to_gpc($string)
/**
* Return string for incoming GET field, or null if it's not defined
* @param $field
* @return mixed|null|string
*/
function
qa_get
(
$field
)
{
...
...
@@ -1064,6 +1153,8 @@ function qa_get($field)
/**
* Return string for incoming POST field, or null if it's not defined.
* While we're at it, trim() surrounding white space and converted to Unix line endings.
* @param $field
* @return mixed|null
*/
function
qa_post_text
(
$field
)
{
...
...
@@ -1075,6 +1166,8 @@ function qa_post_text($field)
/**
* Return an array for incoming POST field, or null if it's not an array or not defined.
* While we're at it, trim() surrounding white space for each value and convert them to Unix line endings.
* @param $field
* @return array|mixed|null
*/
function
qa_post_array
(
$field
)
{
...
...
@@ -1095,6 +1188,8 @@ function qa_post_array($field)
/**
* Return true if form button $name was clicked (as type=submit/image) to create this page request, or if a
* simulated click was sent for the button (via 'qa_click' POST field)
* @param $name
* @return bool|mixed
*/
function
qa_clicked
(
$name
)
{
...
...
@@ -1254,6 +1349,8 @@ function qa_is_mobile_probably()
* loading an option now will cause a problem (see issue in qa_default_option()). The part of
* $identifier before the slash (/) replaces the * in the qa-lang-*.php file references, and the
* part after the / is the key of the array element to be taken from that file's returned result.
* @param $identifier
* @return string
*/
function
qa_lang
(
$identifier
)
{
...
...
@@ -1302,6 +1399,10 @@ function qa_lang($identifier)
/**
* Return the translated string for $identifier, with $symbol substituted for $textparam
* @param $identifier
* @param $textparam
* @param string $symbol
* @return mixed
*/
function
qa_lang_sub
(
$identifier
,
$textparam
,
$symbol
=
'^'
)
{
...
...
@@ -1311,6 +1412,8 @@ function qa_lang_sub($identifier, $textparam, $symbol = '^')
/**
* Return the translated string for $identifier, converted to HTML
* @param $identifier
* @return mixed|string
*/
function
qa_lang_html
(
$identifier
)
{
...
...
@@ -1320,6 +1423,10 @@ function qa_lang_html($identifier)
/**
* Return the translated string for $identifier converted to HTML, with $symbol *then* substituted for $htmlparam
* @param $identifier
* @param $htmlparam
* @param string $symbol
* @return mixed
*/
function
qa_lang_html_sub
(
$identifier
,
$htmlparam
,
$symbol
=
'^'
)
{
...
...
@@ -1330,6 +1437,10 @@ function qa_lang_html_sub($identifier, $htmlparam, $symbol = '^')
/**
* Return an array containing the translated string for $identifier converted to HTML, then split into three,
* with $symbol substituted for $htmlparam in the 'data' element, and obvious 'prefix' and 'suffix' elements
* @param $identifier
* @param $htmlparam
* @param string $symbol
* @return array
*/
function
qa_lang_html_sub_split
(
$identifier
,
$htmlparam
,
$symbol
=
'^'
)
{
...
...
@@ -1378,8 +1489,14 @@ function qa_get_request_map()
* Slashes in $request will not be urlencoded, but any other characters will.
* If $neaturls is set, use that, otherwise retrieve the option. If $rooturl is set, take
* that as the root of the Q2A site, otherwise use path to root which was set elsewhere.
* @param $request
* @param array $params
* @param string $rooturl
* @param int $neaturls
* @param string $anchor
* @return string
*/
function
qa_path
(
$request
,
$params
=
null
,
$rooturl
=
null
,
$neaturls
=
null
,
$anchor
=
null
)
function
qa_path
(
$request
,
$params
=
null
,
$rooturl
=
null
,
$neaturls
=
null
,
$anchor
=
null
)
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
...
...
@@ -1447,6 +1564,12 @@ function qa_path($request, $params=null, $rooturl=null, $neaturls=null, $anchor=
/**
* Return HTML representation of relative URI path for $request - see qa_path() for other parameters
* @param $request
* @param array $params
* @param string $rooturl
* @param int $neaturls
* @param string $anchor
* @return mixed|string
*/
function
qa_path_html
(
$request
,
$params
=
null
,
$rooturl
=
null
,
$neaturls
=
null
,
$anchor
=
null
)
{
...
...
@@ -1456,6 +1579,10 @@ function qa_path_html($request, $params = null, $rooturl = null, $neaturls = nul
/**
* Return the absolute URI for $request - see qa_path() for other parameters
* @param $request
* @param array $params
* @param string $anchor
* @return string
*/
function
qa_path_absolute
(
$request
,
$params
=
null
,
$anchor
=
null
)
{
...
...
@@ -1486,6 +1613,9 @@ function qa_q_request($questionid, $title)
/**
* Return the HTML anchor that should be used for post $postid with $basetype (Q/A/C)
* @param $basetype
* @param $postid
* @return mixed|string
*/
function
qa_anchor
(
$basetype
,
$postid
)
{
...
...
@@ -1498,6 +1628,12 @@ function qa_anchor($basetype, $postid)
/**
* Return the URL for question $questionid with $title, possibly using $absolute URLs.
* To link to a specific answer or comment in a question, set $showtype and $showid accordingly.
* @param $questionid
* @param $title
* @param bool $absolute
* @param string $showtype
* @param int $showid
* @return mixed|string
*/
function
qa_q_path
(
$questionid
,
$title
,
$absolute
=
false
,
$showtype
=
null
,
$showid
=
null
)
{
...
...
@@ -1518,6 +1654,12 @@ function qa_q_path($questionid, $title, $absolute = false, $showtype = null, $sh
/**
* Return the HTML representation of the URL for $questionid - other parameters as for qa_q_path()
* @param $questionid
* @param $title
* @param bool $absolute
* @param string $showtype
* @param int $showid
* @return mixed|string
*/
function
qa_q_path_html
(
$questionid
,
$title
,
$absolute
=
false
,
$showtype
=
null
,
$showid
=
null
)
{
...
...
@@ -1527,6 +1669,8 @@ function qa_q_path_html($questionid, $title, $absolute = false, $showtype = null
/**
* Return the request for the specified $feed
* @param $feed
* @return mixed|string
*/
function
qa_feed_request
(
$feed
)
{
...
...
@@ -1552,8 +1696,14 @@ function qa_self_html()
/**
* Return HTML for hidden fields to insert into a <form method="get"...> on the page.
* This is needed because any parameters on the URL will be lost when the form is submitted.
* @param $request
* @param array $params
* @param string $rooturl
* @param int $neaturls
* @param string $anchor
* @return mixed|string
*/
function
qa_path_form_html
(
$request
,
$params
=
null
,
$rooturl
=
null
,
$neaturls
=
null
,
$anchor
=
null
)
function
qa_path_form_html
(
$request
,
$params
=
null
,
$rooturl
=
null
,
$neaturls
=
null
,
$anchor
=
null
)
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
...
...
@@ -1575,8 +1725,14 @@ function qa_path_form_html($request, $params=null, $rooturl=null, $neaturls=null
/**
* Redirect the user's web browser to $request and then we're done - see qa_path() for other parameters
* @param $request
* @param array $params
* @param string $rooturl
* @param int $neaturls
* @param string $anchor
* @return mixed
*/
function
qa_redirect
(
$request
,
$params
=
null
,
$rooturl
=
null
,
$neaturls
=
null
,
$anchor
=
null
)
function
qa_redirect
(
$request
,
$params
=
null
,
$rooturl
=
null
,
$neaturls
=
null
,
$anchor
=
null
)
{
if
(
qa_to_override
(
__FUNCTION__
))
{
$args
=
func_get_args
();
return
qa_call_override
(
__FUNCTION__
,
$args
);
}
...
...
@@ -1586,6 +1742,8 @@ function qa_redirect($request, $params=null, $rooturl=null, $neaturls=null, $anc
/**
* Redirect the user's web browser to page $path which is already a URL
* @param $url
* @return mixed
*/
function
qa_redirect_raw
(
$url
)
{
...
...
@@ -1600,6 +1758,8 @@ function qa_redirect_raw($url)
/**
* Return the contents of remote $url, using file_get_contents() if possible, otherwise curl functions
* @param $url
* @return mixed|string
*/
function
qa_retrieve_url
(
$url
)
{
...
...
@@ -1626,6 +1786,9 @@ function qa_retrieve_url($url)
/**
* Shortcut to get or set an option value without specifying database
* @param $name
* @param mixed $value
* @return
*/
function
qa_opt
(
$name
,
$value
=
null
)
{
...
...
@@ -1646,6 +1809,7 @@ function qa_opt($name, $value = null)
/**
* Simple method to output a preformatted variable
* @param $var
*/
function
qa_debug
(
$var
)
{
...
...
@@ -1660,6 +1824,7 @@ function qa_debug($var)
/**
* Suspend the reporting of events to event modules via qa_report_event(...) if $suspend is
* true, otherwise reinstate it. A counter is kept to allow multiple calls.
* @param bool $suspend
*/
function
qa_suspend_event_reports
(
$suspend
=
true
)
{
...
...
@@ -1671,6 +1836,12 @@ function qa_suspend_event_reports($suspend = true)
/**
* Send a notification of event $event by $userid, $handle and $cookieid to all event modules, with extra $params
* @param $event
* @param $userid
* @param $handle
* @param $cookieid
* @param array $params
* @return mixed|void
*/
function
qa_report_event
(
$event
,
$userid
,
$handle
,
$cookieid
,
$params
=
array
())
{
...
...
qa-include/qa-feed.php
View file @
c20678fb
...
...
@@ -36,6 +36,10 @@ require_once QA_INCLUDE_DIR . 'app/options.php';
/**
* Database failure handler function for RSS feeds - outputs HTTP and text errors
* @param $type
* @param int $errno
* @param string $error
* @param string $query
*/
function
qa_feed_db_fail_handler
(
$type
,
$errno
=
null
,
$error
=
null
,
$query
=
null
)
{
...
...
@@ -58,6 +62,15 @@ function qa_feed_not_found()
/**
* Common function to load appropriate set of questions for requested feed, check category exists, and set up page title
* @param array $categoryslugs
* @param string $allkey
* @param string $catkey
* @param string $title
* @param array $questionselectspec1
* @param array $questionselectspec2
* @param array $questionselectspec3
* @param array $questionselectspec4
* @return array
*/
function
qa_feed_load_ifcategory
(
$categoryslugs
,
$allkey
,
$catkey
,
&
$title
,
$questionselectspec1
=
null
,
$questionselectspec2
=
null
,
$questionselectspec3
=
null
,
$questionselectspec4
=
null
)
...
...
qa-include/qa-theme-base.php
View file @
c20678fb
...
...
@@ -58,6 +58,10 @@ class qa_html_theme_base
/**
* Initialize the object and assign local variables.
* @param $template
* @param $content
* @param $rooturl
* @param $request
*/
public
function
__construct
(
$template
,
$content
,
$rooturl
,
$request
)
{
...
...
@@ -72,6 +76,10 @@ class qa_html_theme_base
/**
* @deprecated PHP4-style constructor deprecated from 1.7; please use proper `__construct`
* function instead.
* @param $template
* @param $content
* @param $rooturl
* @param $request
*/
public
function
qa_html_theme_base
(
$template
,
$content
,
$rooturl
,
$request
)
{
...
...
@@ -83,6 +91,7 @@ class qa_html_theme_base
* Output each element in $elements on a separate line, with automatic HTML indenting.
* This should be passed markup which uses the <tag/> form for unpaired tags, to help keep
* track of indenting, although its actual output converts these to <tag> for W3C validation.
* @param $elements
*/
public
function
output_array
(
$elements
)
{
...
...
@@ -125,6 +134,7 @@ class qa_html_theme_base
/**
* Output $html at the current indent level, but don't change indent level based on the markup within.
* Useful for user-entered HTML which is unlikely to follow the rules we need to track indenting.
* @param $html
*/
public
function
output_raw
(
$html
)
{
...
...
@@ -136,8 +146,13 @@ class qa_html_theme_base
/**
* Output the three elements ['prefix'], ['data'] and ['suffix'] of $parts (if they're defined),
* with appropriate CSS classes based on $class, using $outertag and $innertag in the markup.
* @param $parts
* @param $class
* @param string $outertag
* @param string $innertag
* @param string $extraclass
*/
public
function
output_split
(
$parts
,
$class
,
$outertag
=
'span'
,
$innertag
=
'span'
,
$extraclass
=
null
)
public
function
output_split
(
$parts
,
$class
,
$outertag
=
'span'
,
$innertag
=
'span'
,
$extraclass
=
null
)
{
if
(
empty
(
$parts
)
&&
strtolower
(
$outertag
)
!=
'td'
)
return
;
...
...
@@ -154,6 +169,8 @@ class qa_html_theme_base
/**
* Set some context, which be accessed via $this->context for a function to know where it's being used on the page.
* @param $key
* @param $value
*/
public
function
set_context
(
$key
,
$value
)
{
...
...
@@ -163,6 +180,7 @@ class qa_html_theme_base
/**
* Clear some context (used at the end of the appropriate loop).
* @param $key
*/
public
function
clear_context
(
$key
)
{
...
...
@@ -173,8 +191,11 @@ class qa_html_theme_base
/**
* Reorder the parts of the page according to the $parts array which contains part keys in their new order. Call this
* before main_parts(). See the docs for qa_array_reorder() in util/sort.php for the other parameters.
* @param $parts
* @param string $beforekey
* @param bool $reorderrelative
*/
public
function
reorder_parts
(
$parts
,
$beforekey
=
null
,
$reorderrelative
=
true
)
public
function
reorder_parts
(
$parts
,
$beforekey
=
null
,
$reorderrelative
=
true
)
{
require_once
QA_INCLUDE_DIR
.
'util/sort.php'
;
...
...
@@ -184,6 +205,8 @@ class qa_html_theme_base
/**
* Output the widgets (as provided in $this->content['widgets']) for $region and $place.
* @param $region
* @param $place
*/
public
function
widgets
(
$region
,
$place
)
{
...
...
@@ -992,8 +1015,12 @@ class qa_html_theme_base
/**
* Reorder the fields of $form according to the $keys array which contains the field keys in their new order. Call
* before any fields are output. See the docs for qa_array_reorder() in util/sort.php for the other parameters.
* @param $form
* @param $keys
* @param mixed $beforekey
* @param bool $reorderrelative
*/
public
function
form_reorder_fields
(
&
$form
,
$keys
,
$beforekey
=
null
,
$reorderrelative
=
true
)
public
function
form_reorder_fields
(
&
$form
,
$keys
,
$beforekey
=
null
,
$reorderrelative
=
true
)
{
require_once
QA_INCLUDE_DIR
.
'util/sort.php'
;
...
...
@@ -1175,8 +1202,12 @@ class qa_html_theme_base
/**
* Reorder the buttons of $form according to the $keys array which contains the button keys in their new order. Call
* before any buttons are output. See the docs for qa_array_reorder() in util/sort.php for the other parameters.
* @param $form
* @param $keys
* @param mixed $beforekey
* @param bool $reorderrelative
*/
public
function
form_reorder_buttons
(
&
$form
,
$keys
,
$beforekey
=
null
,
$reorderrelative
=
true
)
public
function
form_reorder_buttons
(
&
$form
,
$keys
,
$beforekey
=
null
,
$reorderrelative
=
true
)
{
require_once
QA_INCLUDE_DIR
.
'util/sort.php'
;
...
...
@@ -1308,6 +1339,8 @@ class qa_html_theme_base
* tags: any attributes to be added to the select.
* value: the selected value from the 'options' parameter.
* match_by: whether to match the 'value' (default) or 'key' of each option to determine if it is to be selected.
* @param $field
* @param $style
*/
public
function
form_select
(
$field
,
$style
)
{
...
...
@@ -1437,6 +1470,8 @@ class qa_html_theme_base
* @deprecated Table-based layout of users/tags is deprecated from 1.7 onwards and may be
* removed in a future version. Themes can switch to the new layout by setting the member
* variable $ranking_block_layout to false.
* @param $ranking
* @param $class
*/
public
function
ranking_table
(
$ranking
,
$class
)
{
...
...
@@ -1465,6 +1500,9 @@ class qa_html_theme_base
/**
* @deprecated See ranking_table above.
* @param $item
* @param $class
* @param $spacer
*/
public
function
ranking_table_item
(
$item
,
$class
,
$spacer
)
{
...
...
@@ -1491,6 +1529,7 @@ class qa_html_theme_base
/**
* @deprecated See ranking_table above.
* @param $class
*/
public
function
ranking_spacer
(
$class
)
{
...
...
@@ -1798,7 +1837,7 @@ class qa_html_theme_base
$this
->
output_split
(
@
$post
[
'views'
],
'qa-view-count'
);
}
public
function
avatar
(
$item
,
$class
,
$prefix
=
null
)
public
function
avatar
(
$item
,
$class
,
$prefix
=
null
)
{
if
(
isset
(
$item
[
'avatar'
]))
{
if
(
isset
(
$prefix
))
...
...
@@ -1851,13 +1890,16 @@ class qa_html_theme_base
/**
* @deprecated Deprecated from 1.7; please use avatar() instead.
* @param $post
* @param $class
* @param string $prefix
*/
public
function
post_avatar
(
$post
,
$class
,
$prefix
=
null
)
public
function
post_avatar
(
$post
,
$class
,
$prefix
=
null
)
{
$this
->
avatar
(
$post
,
$class
,
$prefix
);
}
public
function
post_meta
(
$post
,
$class
,
$prefix
=
null
,
$separator
=
'<br/>'
)
public
function
post_meta
(
$post
,
$class
,
$prefix
=
null
,
$separator
=
'<br/>'
)
{
$this
->
output
(
'<span class="'
.
$class
.
'-meta">'
);
...
...
@@ -2426,8 +2468,10 @@ class qa_html_theme_base
/**
* Generic method to output a basic list of question links.
* @param array $q_list
* @param string $attrs
*/
public
function
q_title_list
(
$q_list
,
$attrs
=
null
)
public
function
q_title_list
(
$q_list
,
$attrs
=
null
)
{
$this
->
output
(
'<ul class="qa-q-title-list">'
);
foreach
(
$q_list
as
$q
)
{
...
...
@@ -2442,8 +2486,10 @@ class qa_html_theme_base
/**
* Output block of similar questions when asking.
* @param array $q_list
* @param string $pretext
*/
public
function
q_ask_similar
(
$q_list
,
$pretext
=
''
)
public
function
q_ask_similar
(
$q_list
,
$pretext
=
''
)
{
if
(
!
count
(
$q_list
))
return
;
...
...
@@ -2451,7 +2497,7 @@ class qa_html_theme_base
$this
->
output
(
'<div class="qa-ask-similar">'
);
if
(
strlen
(
$pretext
)
>
0
)
$this
->
output
(
'<p class="qa-ask-similar-title">'
.
$pretext
.
'</p>'
);
$this
->
output
(
'<p class="qa-ask-similar-title">'
.
$pretext
.
'</p>'
);
$this
->
q_title_list
(
$q_list
,
'target="_blank"'
);
$this
->
output
(
'</div>'
);
...
...
qa-include/util/sort.php
View file @
c20678fb
...
...
@@ -27,6 +27,9 @@ if (!defined('QA_VERSION')) { // don't allow this page to be requested directly
/**
* Sort the $array of inner arrays by sub-element $by1 of each inner array, and optionally then by sub-element $by2
* @param $array
* @param $by1
* @param null $by2
*/
function
qa_sort_by
(
&
$array
,
$by1
,
$by2
=
null
)
{
...
...
@@ -41,6 +44,9 @@ function qa_sort_by(&$array, $by1, $by2 = null)
/**
* Function used in uasort to implement qa_sort_by()
* @param $a
* @param $b
* @return int
*/
function
qa_sort_by_fn
(
$a
,
$b
)
{
...
...
@@ -67,6 +73,9 @@ function qa_sort_by_fn($a, $b)
/**
* General comparison function for two values, textual or numeric
* @deprecated
* @param $a
* @param $b
* @return int
*/
function
qa_sort_cmp
(
$a
,
$b
)
{
...
...
@@ -80,6 +89,9 @@ function qa_sort_cmp($a, $b)
/**
* Inserts $addelements into $array, preserving their keys, before $beforekey in that array.
* If $beforekey cannot be found, the elements are appended at the end of the array.
* @param $array
* @param $beforekey
* @param $addelements
*/
function
qa_array_insert
(
&
$array
,
$beforekey
,
$addelements
)
{
...
...
@@ -118,6 +130,10 @@ define('QA_ARRAY_AT_END', 0.9); // place all the elements at the end of the arra
* element by passing the key of that element in $beforekey (if $beforekey is not found, the elements are moved to the
* end of the array). Any of the QA_ARRAY_* values defined above can also be passed in the $beforekey parameter.
* If $reorderrelative is true, the relative ordering between the elements will also be set by the order in $keys.
* @param $array
* @param $keys
* @param mixed $beforekey
* @param bool $reorderrelative
*/
function
qa_array_reorder
(
&
$array
,
$keys
,
$beforekey
=
null
,
$reorderrelative
=
true
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment