<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.mipt.ru/index.php?action=history&amp;feed=atom&amp;title=Development%3ADo_we_need_named_parameters</id>
	<title>Development:Do we need named parameters - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.mipt.ru/index.php?action=history&amp;feed=atom&amp;title=Development%3ADo_we_need_named_parameters"/>
	<link rel="alternate" type="text/html" href="http://wiki.mipt.ru/index.php?title=Development:Do_we_need_named_parameters&amp;action=history"/>
	<updated>2026-05-07T16:24:54Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>http://wiki.mipt.ru/index.php?title=Development:Do_we_need_named_parameters&amp;diff=11050&amp;oldid=prev</id>
		<title>Олег Давидович: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://wiki.mipt.ru/index.php?title=Development:Do_we_need_named_parameters&amp;diff=11050&amp;oldid=prev"/>
		<updated>2024-10-21T08:51:11Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 08:51, 21 октября 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Олег Давидович</name></author>
	</entry>
	<entry>
		<id>http://wiki.mipt.ru/index.php?title=Development:Do_we_need_named_parameters&amp;diff=11049&amp;oldid=prev</id>
		<title>1&gt;Jmouneyrac в 01:23, 3 февраля 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.mipt.ru/index.php?title=Development:Do_we_need_named_parameters&amp;diff=11049&amp;oldid=prev"/>
		<updated>2009-02-03T01:23:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Many Moodle functions end up to have 4 or (a lot) more parameters. It could be good to study if we could group most of these parameters into an object. Following a refactor of datalib.php/get_users()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
//named parameters function call&lt;br /&gt;
$parameters = new object();&lt;br /&gt;
$parameters-&amp;gt;search = &amp;#039;arthur&amp;#039;;&lt;br /&gt;
namedparams_get_users($parameters, &amp;#039;firstname ASC&amp;#039;, &amp;#039;&amp;#039;, $fields=&amp;#039;id, username&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
//current function call&lt;br /&gt;
get_users(true, &amp;#039;arthur&amp;#039;, false, null, &amp;#039;firstname ASC&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;id, username&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Returns a subset of users (DO NOT COUNT)&lt;br /&gt;
 * @global object $DB&lt;br /&gt;
 * @param string $sort A SQL snippet for the sorting criteria to use&lt;br /&gt;
 * @param string $recordsperpage how many records do pages have&lt;br /&gt;
 * @param string $page which page to return (starts from 0)&lt;br /&gt;
 * @param string $fields A comma separated list of fields to be returned from the chosen table.&lt;br /&gt;
 * @param object $selectioncriteria:&lt;br /&gt;
 *      -&amp;gt;search         string     A simple string to search for&lt;br /&gt;
 *      -&amp;gt;confirmed      bool       A switch to allow/disallow unconfirmed users&lt;br /&gt;
 *      -&amp;gt;exceptions     array(int) A list of IDs to ignore, eg 2,4,5,8,9,10&lt;br /&gt;
 *      -&amp;gt;firstinitial   string     ?&lt;br /&gt;
 *      -&amp;gt;lastinitial    string     ?&lt;br /&gt;
 * @return array|false Array of {@link $USER} objects. False is returned if an error is encountered.&lt;br /&gt;
 */&lt;br /&gt;
function namedparams_get_users($sort=&amp;#039;firstname ASC&amp;#039;, $recordsperpage=999999, $page=0, $fields=&amp;#039;*&amp;#039;, $selectioncriteria=NULL) {&lt;br /&gt;
    global $DB;&lt;br /&gt;
&lt;br /&gt;
    if (empty($selectioncriteria-&amp;gt;recordsperpage)){&lt;br /&gt;
        $selectioncriteria-&amp;gt;recordsperpage=&amp;#039;&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $LIKE      = $DB-&amp;gt;sql_ilike();&lt;br /&gt;
    $fullname  = $DB-&amp;gt;sql_fullname();&lt;br /&gt;
&lt;br /&gt;
    $select = &amp;quot; username &amp;lt;&amp;gt; :guest AND deleted = 0&amp;quot;;&lt;br /&gt;
    $params = array(&amp;#039;guest&amp;#039;=&amp;gt;&amp;#039;guest&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    if (!empty($selectioncriteria-&amp;gt;search)){&lt;br /&gt;
        $selectioncriteria-&amp;gt;search = trim($selectioncriteria-&amp;gt;search);&lt;br /&gt;
        $select .= &amp;quot; AND ($fullname $LIKE :search1 OR email $LIKE :search2 OR username = :search3)&amp;quot;;&lt;br /&gt;
        $params[&amp;#039;search1&amp;#039;] = &amp;quot;%&amp;quot;.$selectioncriteria-&amp;gt;search.&amp;quot;%&amp;quot;;&lt;br /&gt;
        $params[&amp;#039;search2&amp;#039;] = &amp;quot;%&amp;quot;.$selectioncriteria-&amp;gt;search.&amp;quot;%&amp;quot;;&lt;br /&gt;
        $params[&amp;#039;search3&amp;#039;] = $selectioncriteria-&amp;gt;search;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (!empty($selectioncriteria-&amp;gt;confirmed)) {&lt;br /&gt;
        $select .= &amp;quot; AND confirmed = 1&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (!empty($selectioncriteria-&amp;gt;exceptions)) {&lt;br /&gt;
        list($selectioncriteria-&amp;gt;exceptions, $eparams) = $DB-&amp;gt;get_in_or_equal($selectioncriteria-&amp;gt;exceptions, SQL_PARAMS_NAMED, &amp;#039;ex0000&amp;#039;, false);&lt;br /&gt;
        $params = $params + $eparams;&lt;br /&gt;
        $except = &amp;quot; AND id &amp;quot;.$selectioncriteria-&amp;gt;exceptions;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (!empty($selectioncriteria-&amp;gt;firstinitial)) {&lt;br /&gt;
        $select .= &amp;quot; AND firstname $LIKE :fni&amp;quot;;&lt;br /&gt;
        $params[&amp;#039;fni&amp;#039;] = $selectioncriteria-&amp;gt;firstinitial.&amp;quot;%&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if (!empty($selectioncriteria-&amp;gt;lastinitial)) {&lt;br /&gt;
        $select .= &amp;quot; AND lastname $LIKE :lni&amp;quot;;&lt;br /&gt;
        $params[&amp;#039;lni&amp;#039;] = $selectioncriteria-&amp;gt;lastinitial.&amp;quot;%&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (!empty($selectioncriteria-&amp;gt;extraselect)) {&lt;br /&gt;
        $select .= &amp;quot; AND &amp;quot;.$selectioncriteria-&amp;gt;extraselect;&lt;br /&gt;
        if (empty($selectioncriteria-&amp;gt;extraparams)){&lt;br /&gt;
            $params = $params + (array)$selectioncriteria-&amp;gt;extraparams;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return $DB-&amp;gt;get_records_select(&amp;#039;user&amp;#039;, $select, $params, $sort, $fields, $page, $selectioncriteria-&amp;gt;recordsperpage);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Returns a subset of users&lt;br /&gt;
 *&lt;br /&gt;
 * @uses $CFG&lt;br /&gt;
 * @param bool $get If false then only a count of the records is returned&lt;br /&gt;
 * @param string $search A simple string to search for&lt;br /&gt;
 * @param bool $confirmed A switch to allow/disallow unconfirmed users&lt;br /&gt;
 * @param array(int) $exceptions A list of IDs to ignore, eg 2,4,5,8,9,10&lt;br /&gt;
 * @param string $sort A SQL snippet for the sorting criteria to use&lt;br /&gt;
 * @param string $firstinitial ?&lt;br /&gt;
 * @param string $lastinitial ?&lt;br /&gt;
 * @param string $page ?&lt;br /&gt;
 * @param string $recordsperpage ?&lt;br /&gt;
 * @param string $fields A comma separated list of fields to be returned from the chosen table.&lt;br /&gt;
 * @return object|false|int  {@link $USER} records unless get is false in which case the integer count of the records found is returned. False is returned if an error is encountered.&lt;br /&gt;
 */&lt;br /&gt;
function get_users($get=true, $search=&amp;#039;&amp;#039;, $confirmed=false, array $exceptions=null, $sort=&amp;#039;firstname ASC&amp;#039;,&lt;br /&gt;
                   $firstinitial=&amp;#039;&amp;#039;, $lastinitial=&amp;#039;&amp;#039;, $page=&amp;#039;&amp;#039;, $recordsperpage=&amp;#039;&amp;#039;, $fields=&amp;#039;*&amp;#039;, $extraselect=&amp;#039;&amp;#039;, array $extraparams=null) {&lt;br /&gt;
    global $DB;&lt;br /&gt;
&lt;br /&gt;
    if ($get &amp;amp;&amp;amp; !$recordsperpage) {&lt;br /&gt;
        debugging(&amp;#039;Call to get_users with $get = true no $recordsperpage limit. &amp;#039; .&lt;br /&gt;
                &amp;#039;On large installations, this will probably cause an out of memory error. &amp;#039; .&lt;br /&gt;
                &amp;#039;Please think again and change your code so that it does not try to &amp;#039; .&lt;br /&gt;
                &amp;#039;load so much data into memory.&amp;#039;, DEBUG_DEVELOPER);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $LIKE      = $DB-&amp;gt;sql_ilike();&lt;br /&gt;
    $fullname  = $DB-&amp;gt;sql_fullname();&lt;br /&gt;
&lt;br /&gt;
    $select = &amp;quot; username &amp;lt;&amp;gt; :guest AND deleted = 0&amp;quot;;&lt;br /&gt;
    $params = array(&amp;#039;guest&amp;#039;=&amp;gt;&amp;#039;guest&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    if (!empty($search)){&lt;br /&gt;
        $search = trim($search);&lt;br /&gt;
        $select .= &amp;quot; AND ($fullname $LIKE :search1 OR email $LIKE :search2 OR username = :search3)&amp;quot;;&lt;br /&gt;
        $params[&amp;#039;search1&amp;#039;] = &amp;quot;%$search%&amp;quot;;&lt;br /&gt;
        $params[&amp;#039;search2&amp;#039;] = &amp;quot;%$search%&amp;quot;;&lt;br /&gt;
        $params[&amp;#039;search3&amp;#039;] = &amp;quot;$search&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if ($confirmed) {&lt;br /&gt;
        $select .= &amp;quot; AND confirmed = 1&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if ($exceptions) {&lt;br /&gt;
        list($exceptions, $eparams) = $DB-&amp;gt;get_in_or_equal($exceptions, SQL_PARAMS_NAMED, &amp;#039;ex0000&amp;#039;, false);&lt;br /&gt;
        $params = $params + $eparams;&lt;br /&gt;
        $except = &amp;quot; AND id $exceptions&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if ($firstinitial) {&lt;br /&gt;
        $select .= &amp;quot; AND firstname $LIKE :fni&amp;quot;;&lt;br /&gt;
        $params[&amp;#039;fni&amp;#039;] = &amp;quot;$firstinitial%&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if ($lastinitial) {&lt;br /&gt;
        $select .= &amp;quot; AND lastname $LIKE :lni&amp;quot;;&lt;br /&gt;
        $params[&amp;#039;lni&amp;#039;] = &amp;quot;$lastinitial%&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if ($extraselect) {&lt;br /&gt;
        $select .= &amp;quot; AND $extraselect&amp;quot;;&lt;br /&gt;
        $params = $params + (array)$extraparams;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if ($get) {&lt;br /&gt;
        return $DB-&amp;gt;get_records_select(&amp;#039;user&amp;#039;, $select, $params, $sort, $fields, $page, $recordsperpage);&lt;br /&gt;
    } else {&lt;br /&gt;
        return $DB-&amp;gt;count_records_select(&amp;#039;user&amp;#039;, $select, $params);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>1&gt;Jmouneyrac</name></author>
	</entry>
</feed>