当前位置: 首页>>代码示例>>PHP>>正文


PHP arraySearchByKey函数代码示例

本文整理汇总了PHP中arraySearchByKey函数的典型用法代码示例。如果您正苦于以下问题:PHP arraySearchByKey函数的具体用法?PHP arraySearchByKey怎么用?PHP arraySearchByKey使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了arraySearchByKey函数的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: surveyFixDuplicateColumns

/**
 * Checks for duplicate column names and fixes them
 * Returns true if a correction has been made and false if not
 *
 * @param $surveyid - The Survey Identifier
 * @return bool
 */
function surveyFixDuplicateColumns($surveyid)
{
    list($duplicates, $fieldmap) = surveyCheckUniqueColumns($surveyid);
    if (!empty($duplicates)) {
        foreach ($duplicates as $dup) {
            $badquestion = arraySearchByKey($dup, $fieldmap, "fieldname", 1);
            surveyFixQuestionNumbering($badquestion['qid']);
        }
        return true;
    }
    return false;
}
开发者ID:himanshu12k,项目名称:ce-www,代码行数:19,代码来源:surveytable_functions.php

示例2: vvexport

 public function vvexport()
 {
     $iSurveyID = sanitize_int(Yii::app()->request->getParam('surveyid'));
     $subaction = Yii::app()->request->getParam('subaction');
     //Exports all responses to a survey in special "Verified Voting" format.
     $clang = $this->getController()->lang;
     if (!hasSurveyPermission($iSurveyID, 'responses', 'export')) {
         return;
     }
     if ($subaction != "export") {
         $selecthide = "";
         $selectshow = "";
         $selectinc = "";
         if (incompleteAnsFilterState() == "incomplete") {
             $selectinc = "selected='selected'";
         } elseif (incompleteAnsFilterState() == "complete") {
             $selecthide = "selected='selected'";
         } else {
             $selectshow = "selected='selected'";
         }
         $data['selectinc'] = $selectinc;
         $data['selecthide'] = $selecthide;
         $data['selectshow'] = $selectshow;
         $data['surveyid'] = $iSurveyID;
         $data['display']['menu_bars']['browse'] = $clang->gT("Export VV file");
         $this->_renderWrappedTemplate('export', 'vv_view', $data);
     } elseif (isset($iSurveyID) && $iSurveyID) {
         //Export is happening
         $extension = sanitize_paranoid_string(returnGlobal('extension'));
         $fn = "vvexport_{$iSurveyID}." . $extension;
         $this->_addHeaders($fn, "text/comma-separated-values", 0, "cache");
         $s = "\t";
         $fieldmap = createFieldMap($iSurveyID, 'full', false, false, getBaseLanguageFromSurveyID($iSurveyID));
         $surveytable = "{{survey_{$iSurveyID}}}";
         Survey::model()->findByPk($iSurveyID)->language;
         $fieldnames = Yii::app()->db->schema->getTable($surveytable)->getColumnNames();
         //Create the human friendly first line
         $firstline = "";
         $secondline = "";
         foreach ($fieldnames as $field) {
             $fielddata = arraySearchByKey($field, $fieldmap, "fieldname", 1);
             if (count($fielddata) < 1) {
                 $firstline .= $field;
             } else {
                 $firstline .= preg_replace('/\\s+/', ' ', strip_tags($fielddata['question']));
             }
             $firstline .= $s;
             $secondline .= $field . $s;
         }
         $vvoutput = $firstline . "\n";
         $vvoutput .= $secondline . "\n";
         $query = "SELECT * FROM " . Yii::app()->db->quoteTableName($surveytable);
         if (incompleteAnsFilterState() == "incomplete") {
             $query .= " WHERE submitdate IS NULL ";
         } elseif (incompleteAnsFilterState() == "complete") {
             $query .= " WHERE submitdate >= '01/01/1980' ";
         }
         $result = Yii::app()->db->createCommand($query)->query();
         foreach ($result->readAll() as $row) {
             foreach ($fieldnames as $field) {
                 if (is_null($row[$field])) {
                     $value = '{question_not_shown}';
                 } else {
                     $value = trim($row[$field]);
                     // sunscreen for the value. necessary for the beach.
                     // careful about the order of these arrays:
                     // lbrace has to be substituted *first*
                     $value = str_replace(array("{", "\n", "\r", "\t"), array("{lbrace}", "{newline}", "{cr}", "{tab}"), $value);
                 }
                 // one last tweak: excel likes to quote values when it
                 // exports as tab-delimited (esp if value contains a comma,
                 // oddly enough).  So we're going to encode a leading quote,
                 // if it occurs, so that we can tell the difference between
                 // strings that "really are" quoted, and those that excel quotes
                 // for us.
                 $value = preg_replace('/^"/', '{quote}', $value);
                 // yay!  that nasty soab won't hurt us now!
                 if ($field == "submitdate" && !$value) {
                     $value = "NULL";
                 }
                 $sun[] = $value;
             }
             $beach = implode($s, $sun);
             $vvoutput .= $beach;
             unset($sun);
             $vvoutput .= "\n";
         }
         echo $vvoutput;
         exit;
     }
 }
开发者ID:ryu1inaba,项目名称:LimeSurvey,代码行数:91,代码来源:export.php

示例3: getArrayFilterExcludesCascadesForGroup

/**
* getArrayFilterExcludesCascadesForGroup() queries the database and produces a list of array_filter_exclude questions and targets with in the same group
* @return returns a keyed nested array, keyed by the qid of the question, containing cascade information
*/
function getArrayFilterExcludesCascadesForGroup($surveyid, $gid = "", $output = "qid")
{
    $surveyid = sanitize_int($surveyid);
    $gid = sanitize_int($gid);
    $cascaded = array();
    $sources = array();
    $qidtotitle = array();
    $fieldmap = createFieldMap($surveyid, 'full', false, false, getBaseLanguageFromSurveyID($surveyid));
    if ($gid != "") {
        $qrows = arraySearchByKey($gid, $fieldmap, 'gid');
    } else {
        $qrows = $fieldmap;
    }
    $grows = array();
    //Create an empty array in case query not return any rows
    // Store each result as an array with in the $grows array
    foreach ($qrows as $qrow) {
        if (isset($qrow['gid']) && !empty($qrow['gid'])) {
            $grows[$qrow['qid']] = array('qid' => $qrow['qid'], 'type' => $qrow['type'], 'mandatory' => $qrow['mandatory'], 'title' => $qrow['title'], 'gid' => $qrow['gid']);
        }
    }
    $attrmach = array();
    // Stores Matches of filters that have their values as questions within current group
    foreach ($grows as $qrow) {
        $qidtotitle[$qrow['qid']] = $qrow['title'];
        $qresult = getQuestionAttributeValues($qrow['qid']);
        if (isset($qresult['array_filter_exclude'])) {
            $val = $qresult['array_filter_exclude'];
            // Get the Value of the Attribute ( should be a previous question's title in same group )
            foreach ($grows as $avalue) {
                if ($avalue['title'] == $val) {
                    /* This question ($avalue) is the question that provides the source information we use
                     * to determine which answers show up in the question we're looking at, which is $qrow['qid']
                     * So, in other words, we're currently working on question $qrow['qid'], trying to find out more
                     * information about question $avalue['qid'], because that's the source */
                    $sources[$qrow['qid']] = $avalue['qid'];
                    /* This question ($qrow['qid']) relies on answers in $avalue['qid'] */
                    if (isset($cascades)) {
                        unset($cascades);
                    }
                    $cascades = array();
                    /* Create an empty array */
                    /* At this stage, we know for sure that this question relies on one other question for the filter */
                    /* But this function wants to send back information about questions that rely on multiple other questions for the filter */
                    /* So we don't want to do anything yet */
                    /* What we need to do now, is check whether the question this one relies on, also relies on another */
                    /* The question we are now checking is $avalue['qid'] */
                    $keepgoing = 1;
                    $questiontocheck = $avalue['qid'];
                    /* If there is a key in the $sources array that is equal to $avalue['qid'] then we want to add that
                     * to the $cascades array */
                    while ($keepgoing > 0) {
                        if (!empty($sources[$questiontocheck])) {
                            $cascades[] = $sources[$questiontocheck];
                            /* Now we need to move down the chain */
                            /* We want to check the $sources[$questiontocheck] question */
                            $questiontocheck = $sources[$questiontocheck];
                        } else {
                            /* Since it was empty, there must not be any more questions down the cascade */
                            $keepgoing = 0;
                        }
                    }
                    /* Now add all that info */
                    if (count($cascades) > 0) {
                        $cascaded[$qrow['qid']] = $cascades;
                    }
                }
            }
        }
    }
    $cascade2 = array();
    if ($output == "title") {
        foreach ($cascaded as $key => $cascade) {
            foreach ($cascade as $item) {
                $cascade2[$key][] = $qidtotitle[$item];
            }
        }
        $cascaded = $cascade2;
    }
    return $cascaded;
}
开发者ID:GuillaumeSmaha,项目名称:LimeSurvey,代码行数:85,代码来源:common_helper.php

示例4: checkQuestions


//.........这里部分代码省略.........
            $chaquery = "SELECT * FROM {{questions}} WHERE parent_qid = {$chkrow['qid']} ORDER BY question_order";
            $charesult = Yii::app()->db->createCommand($chaquery)->query()->readAll();
            $chacount = count($charesult);
            if ($chacount == 0) {
                $failedcheck[] = array($chkrow['qid'], $chkrow['question'], ": " . $clang->gT("This question has no subquestions."), $chkrow['gid']);
            }
        }
        if ($qtypes[$chkrow['type']]['answerscales'] > 0) {
            $chaquery = "SELECT * FROM {{answers}} WHERE qid = {$chkrow['qid']} ORDER BY sortorder, answer";
            $charesult = Yii::app()->db->createCommand($chaquery)->query()->readAll();
            $chacount = count($charesult);
            if ($chacount == 0) {
                $failedcheck[] = array($chkrow['qid'], $chkrow['question'], ": " . $clang->gT("This question has no answers."), $chkrow['gid']);
            }
        }
    }
    //NOW CHECK THAT ALL QUESTIONS HAVE A 'QUESTION TYPE' FIELD SET
    $chkquery = "SELECT qid, question, gid FROM {{questions}} WHERE sid={$iSurveyID} AND type = ''";
    $chkresult = Yii::app()->db->createCommand($chkquery)->query()->readAll();
    foreach ($chkresult as $chkrow) {
        $failedcheck[] = array($chkrow['qid'], $chkrow['question'], ": " . $clang->gT("This question does not have a question 'type' set."), $chkrow['gid']);
    }
    //Check that certain array question types have answers set
    $chkquery = "SELECT q.qid, question, gid FROM {{questions}} as q WHERE (select count(*) from {{answers}} as a where a.qid=q.qid and scale_id=0)=0 and sid={$iSurveyID} AND type IN ('F', 'H', 'W', 'Z', '1') and q.parent_qid=0";
    $chkresult = Yii::app()->db->createCommand($chkquery)->query()->readAll();
    foreach ($chkresult as $chkrow) {
        $failedcheck[] = array($chkrow['qid'], $chkrow['question'], ": " . $clang->gT("This question requires answers, but none are set."), $chkrow['gid']);
    }
    // while
    //CHECK THAT DUAL Array has answers set
    $chkquery = "SELECT q.qid, question, gid FROM {{questions}} as q WHERE (select count(*) from {{answers}} as a where a.qid=q.qid and scale_id=1)=0 and sid={$iSurveyID} AND type='1' and q.parent_qid=0";
    $chkresult = Yii::app()->db->createCommand($chkquery)->query()->readAll();
    foreach ($chkresult as $chkrow) {
        $failedcheck[] = array($chkrow['qid'], $chkrow['question'], ": " . $clang->gT("This question requires a second answer set but none is set."), $chkrow['gid']);
    }
    // while
    //TO AVOID NATURAL SORT ORDER ISSUES, FIRST GET ALL QUESTIONS IN NATURAL SORT ORDER, AND FIND OUT WHICH NUMBER IN THAT ORDER THIS QUESTION IS
    $qorderquery = "SELECT * FROM {{questions}} WHERE sid={$iSurveyID} AND type not in ('S', 'D', 'T', 'Q')";
    $qorderresult = Yii::app()->db->createCommand($qorderquery)->query()->readAll();
    $qrows = array();
    //Create an empty array in case FetchRow does not return any rows
    foreach ($qorderresult as $qrow) {
        $qrows[] = $qrow;
    }
    // Get table output into array
    usort($qrows, 'groupOrderThenQuestionOrder');
    // Perform a case insensitive natural sort on group name then question title of a multidimensional array
    $c = 0;
    foreach ($qrows as $qr) {
        $qidorder[] = array($c, $qrow['qid']);
        $c++;
    }
    $qordercount = "";
    //1: Get each condition's question id
    $conquery = "SELECT {{conditions}}.qid, cqid, {{questions}}.question, " . "{{questions}}.gid " . "FROM {{conditions}}, {{questions}}, {{groups}} " . "WHERE {{conditions}}.qid={{questions}}.qid " . "AND {{questions}}.gid={{groups}}.gid ORDER BY {{conditions}}.qid";
    $conresult = Yii::app()->db->createCommand($conquery)->query()->readAll();
    //2: Check each conditions cqid that it occurs later than the cqid
    foreach ($conresult as $conrow) {
        $cqidfound = 0;
        $qidfound = 0;
        $b = 0;
        while ($b < $qordercount) {
            if ($conrow['cqid'] == $qidorder[$b][1]) {
                $cqidfound = 1;
                $b = $qordercount;
            }
            if ($conrow['qid'] == $qidorder[$b][1]) {
                $qidfound = 1;
                $b = $qordercount;
            }
            if ($qidfound == 1) {
                $failedcheck[] = array($conrow['qid'], $conrow['question'], ": " . $clang->gT("This question has a condition set, however the condition is based on a question that appears after it."), $conrow['gid']);
            }
            $b++;
        }
    }
    //CHECK THAT ALL THE CREATED FIELDS WILL BE UNIQUE
    $fieldmap = createFieldMap($iSurveyID, 'full', false, false, getBaseLanguageFromSurveyID($iSurveyID));
    if (isset($fieldmap)) {
        foreach ($fieldmap as $fielddata) {
            $fieldlist[] = $fielddata['fieldname'];
        }
        $fieldlist = array_reverse($fieldlist);
        //let's always change the later duplicate, not the earlier one
    }
    $checkKeysUniqueComparison = create_function('$value', 'if ($value > 1) return true;');
    @($duplicates = array_keys(array_filter(array_count_values($fieldlist), $checkKeysUniqueComparison)));
    if (isset($duplicates)) {
        foreach ($duplicates as $dup) {
            $badquestion = arraySearchByKey($dup, $fieldmap, "fieldname", 1);
            $fix = "[<a href='{$scriptname}?action=activate&amp;sid={$iSurveyID}&amp;fixnumbering=" . $badquestion['qid'] . "'>Click Here to Fix</a>]";
            $failedcheck[] = array($badquestion['qid'], $badquestion['question'], ": Bad duplicate fieldname {$fix}", $badquestion['gid']);
        }
    }
    if (isset($failedcheck)) {
        return $failedcheck;
    } else {
        return false;
    }
}
开发者ID:rawaludin,项目名称:LimeSurvey,代码行数:101,代码来源:activate_helper.php

示例5: sanitize_paranoid_string

 //Export is happening
 $extension = sanitize_paranoid_string(returnglobal('extension'));
 header("Content-Disposition: attachment; filename=vvexport_{$surveyid}." . $extension);
 header("Content-type: text/comma-separated-values; charset=UTF-8");
 header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
 header("Pragma: cache");
 $s = "\t";
 $fieldmap = createFieldMap($surveyid, "full");
 $surveytable = "{$dbprefix}survey_{$surveyid}";
 GetBaseLanguageFromSurveyID($surveyid);
 $fieldnames = array_values($connect->MetaColumnNames($surveytable, true));
 //Create the human friendly first line
 $firstline = "";
 $secondline = "";
 foreach ($fieldnames as $field) {
     $fielddata = arraySearchByKey($field, $fieldmap, "fieldname", 1);
     //$vvoutput .= "<pre>";print_r($fielddata);$vvoutput .= "</pre>";
     if (count($fielddata) < 1) {
         $firstline .= $field;
     } else {
         $firstline .= preg_replace('/\\s+/', ' ', strip_tags($fielddata['question']));
     }
     $firstline .= $s;
     $secondline .= $field . $s;
 }
 $vvoutput = $firstline . "\n";
 $vvoutput .= $secondline . "\n";
 $query = "SELECT * FROM {$surveytable}";
 if (incompleteAnsFilterstate() == "inc") {
     $query .= " WHERE submitdate IS NULL ";
 } elseif (incompleteAnsFilterstate() == "filter") {
开发者ID:himanshu12k,项目名称:ce-www,代码行数:31,代码来源:vvexport.php

示例6: vvexport

 public function vvexport()
 {
     $iSurveyId = sanitize_int(Yii::app()->request->getParam('surveyid'));
     $subaction = Yii::app()->request->getParam('subaction');
     //Exports all responses to a survey in special "Verified Voting" format.
     if (!Permission::model()->hasSurveyPermission($iSurveyId, 'responses', 'export')) {
         Yii::app()->session['flashmessage'] = gT("You do not have sufficient rights to access this page.");
         $this->getController()->redirect($this->getController()->createUrl("/admin/survey/sa/view/surveyid/{$iSurveyId}"));
     }
     if ($subaction != "export") {
         $aData['selectincansstate'] = incompleteAnsFilterState();
         $aData['surveyid'] = $iSurveyId;
         $aData['display']['menu_bars']['browse'] = gT("Export VV file");
         $fieldmap = createFieldMap($iSurveyId, 'full', false, false, getBaseLanguageFromSurveyID($iSurveyId));
         Survey::model()->findByPk($iSurveyId)->language;
         $surveytable = "{{survey_{$iSurveyId}}}";
         // Control if fieldcode are unique
         $fieldnames = Yii::app()->db->schema->getTable($surveytable)->getColumnNames();
         foreach ($fieldnames as $field) {
             $fielddata = arraySearchByKey($field, $fieldmap, "fieldname", 1);
             $fieldcode[] = viewHelper::getFieldCode($fielddata, array("LEMcompat" => true));
         }
         $aData['uniquefieldcode'] = count(array_unique($fieldcode)) == count($fieldcode);
         // Did we need more control ?
         $aData['vvversionseleted'] = $aData['uniquefieldcode'] ? 2 : 1;
         $this->_renderWrappedTemplate('export', 'vv_view', $aData);
     } elseif (isset($iSurveyId) && $iSurveyId) {
         //Export is happening
         $extension = sanitize_paranoid_string(returnGlobal('extension'));
         $vvVersion = (int) Yii::app()->request->getPost('vvversion');
         $vvVersion = in_array($vvVersion, array(1, 2)) ? $vvVersion : 2;
         // Only 2 version actually, default to 2
         $fn = "vvexport_{$iSurveyId}." . $extension;
         $this->_addHeaders($fn, "text/comma-separated-values", 0, "cache");
         $s = "\t";
         $fieldmap = createFieldMap($iSurveyId, 'full', false, false, getBaseLanguageFromSurveyID($iSurveyId));
         $surveytable = "{{survey_{$iSurveyId}}}";
         Survey::model()->findByPk($iSurveyId)->language;
         $fieldnames = Yii::app()->db->schema->getTable($surveytable)->getColumnNames();
         //Create the human friendly first line
         $firstline = "";
         $secondline = "";
         foreach ($fieldnames as $field) {
             $fielddata = arraySearchByKey($field, $fieldmap, "fieldname", 1);
             if (count($fielddata) < 1) {
                 $firstline .= $field;
             } else {
                 $firstline .= preg_replace('/\\s+/', ' ', strip_tags($fielddata['question']));
             }
             $firstline .= $s;
             if ($vvVersion == 2) {
                 $fieldcode = viewHelper::getFieldCode($fielddata, array("LEMcompat" => true));
                 $fieldcode = $fieldcode ? $fieldcode : $field;
                 // $fieldcode is empty for token if there are no token table
             } else {
                 $fieldcode = $field;
             }
             $secondline .= $fieldcode . $s;
         }
         $vvoutput = $firstline . "\n";
         $vvoutput .= $secondline . "\n";
         $query = "SELECT * FROM " . Yii::app()->db->quoteTableName($surveytable);
         if (incompleteAnsFilterState() == "incomplete") {
             $query .= " WHERE submitdate IS NULL ";
         } elseif (incompleteAnsFilterState() == "complete") {
             $query .= " WHERE submitdate >= '01/01/1980' ";
         }
         $result = Yii::app()->db->createCommand($query)->query();
         echo $vvoutput;
         foreach ($result as $row) {
             foreach ($fieldnames as $field) {
                 if (is_null($row[$field])) {
                     $value = '{question_not_shown}';
                 } else {
                     $value = trim($row[$field]);
                     // sunscreen for the value. necessary for the beach.
                     // careful about the order of these arrays:
                     // lbrace has to be substituted *first*
                     $value = str_replace(array("{", "\n", "\r", "\t"), array("{lbrace}", "{newline}", "{cr}", "{tab}"), $value);
                 }
                 // one last tweak: excel likes to quote values when it
                 // exports as tab-delimited (esp if value contains a comma,
                 // oddly enough).  So we're going to encode a leading quote,
                 // if it occurs, so that we can tell the difference between
                 // strings that "really are" quoted, and those that excel quotes
                 // for us.
                 $value = preg_replace('/^"/', '{quote}', $value);
                 // yay!  that nasty soab won't hurt us now!
                 if ($field == "submitdate" && !$value) {
                     $value = "NULL";
                 }
                 $sun[] = $value;
             }
             /* it is important here to stream output data, line by line
              * in order to avoid huge memory consumption when exporting large
              * quantities of answers */
             echo implode($s, $sun) . "\n";
             unset($sun);
         }
         exit;
//.........这里部分代码省略.........
开发者ID:ambientelivre,项目名称:LimeSurvey,代码行数:101,代码来源:export.php

示例7: GetBaseLanguageFromSurveyID

 //Get the questions for this group
 $baselang = GetBaseLanguageFromSurveyID($surveyid);
 $oqquery = "SELECT * FROM " . db_table_name('questions') . " WHERE sid={$surveyid} AND gid={$gid} AND language='" . $baselang . "' and parent_qid=0 order by question_order";
 $oqresult = db_execute_assoc($oqquery);
 $orderquestions = "<div class='header ui-widget-header'>" . $clang->gT("Change Question Order") . "</div>";
 $questioncount = $oqresult->RecordCount();
 $oqarray = $oqresult->GetArray();
 $minioqarray = $oqarray;
 // Get the condition dependecy array for all questions in this array and group
 $questdepsarray = GetQuestDepsForConditions($surveyid, $gid);
 if (!is_null($questdepsarray)) {
     $orderquestions .= "<br/><div class='movableNode' style='margin:0 auto;'><strong><font color='orange'>" . $clang->gT("Warning") . ":</font> " . $clang->gT("Current group is using conditional questions") . "</strong><br /><br /><i>" . $clang->gT("Re-ordering questions in this group is restricted to ensure that questions on which conditions are based aren't reordered after questions having the conditions set") . "</i></strong><br /><br/>" . $clang->gT("See the conditions marked on the following questions") . ":<ul>\n";
     foreach ($questdepsarray as $depqid => $depquestrow) {
         foreach ($depquestrow as $targqid => $targcid) {
             $listcid = implode("-", $targcid);
             $question = arraySearchByKey($depqid, $oqarray, "qid", 1);
             $orderquestions .= "<li><a href='#' onclick=\"window.open('admin.php?sid=" . $surveyid . "&amp;gid=" . $gid . "&amp;qid=" . $depqid . "&amp;action=conditions&amp;markcid=" . $listcid . "','_top')\">" . $question['title'] . ": " . FlattenText($question['question']) . " [QID: " . $depqid . "] </a> ";
         }
         $orderquestions .= "</li>\n";
     }
     $orderquestions .= "</ul></div>";
 }
 $orderquestions .= "<form method='post' action=''><ul class='movableList'>";
 for ($i = 0; $i < $questioncount; $i++) {
     $downdisabled = "";
     $updisabled = "";
     //Check if question is relied on as a condition dependency by the next question, and if so, don't allow moving down
     if (!is_null($questdepsarray) && $i < $questioncount - 1 && array_key_exists($oqarray[$i + 1]['qid'], $questdepsarray) && array_key_exists($oqarray[$i]['qid'], $questdepsarray[$oqarray[$i + 1]['qid']])) {
         $downdisabled = "disabled=\"true\" class=\"disabledUpDnBtn\"";
     }
     //Check if question has a condition dependency on the preceding question, and if so, don't allow moving up
开发者ID:portokallidis,项目名称:Metamorphosis-Meducator,代码行数:31,代码来源:questionhandling.php

示例8: returnQuestionResults

function returnQuestionResults($surveyid, $questionfields, $sql = null)
{
    global $connect;
    //Returns uninterpreted raw results from survey table for question(s)
    //$table = survcey table name (ie: "survey_1")
    //$questionfields should contain an array of the question fields that are being returned
    //$sql is any additional "filtering" sql code
    $details = array();
    $output = array();
    foreach ($questionfields as $questionfield) {
        $detailsarray = arraySearchByKey($questionfield, createFieldMap($surveyid), "fieldname");
        foreach ($detailsarray as $dt) {
            $details[] = $dt;
        }
    }
    $table = "survey_" . $surveyid;
    if (count($questionfields) > 1) {
        $selects = "`" . implode("`, `", $questionfields) . "`";
    } else {
        $selects = "`" . $questionfields[0] . "`";
    }
    $query = "SELECT {$selects}\n\t\t\t  FROM {$table}";
    if (!empty($sql)) {
        $query .= "\nWHERE {$sql}";
    }
    $result = db_execute_assoc($query) or safe_diee("error getting results in returnQuestionResults<br />{$query}<br />" . $connect->ErrorMsg());
    while ($row = $result->FetchRow()) {
        $output[] = $row;
    }
    // while
    return array($details, $output);
}
开发者ID:himanshu12k,项目名称:ce-www,代码行数:32,代码来源:results.php

示例9: checkQuestions


//.........这里部分代码省略.........
            if ($chacount == 0) {
                $failedcheck[] = array($chkrow['qid'], $chkrow['question'], ": " . $clang->gT("This question is a multiple answer type question but has no answers."), $chkrow['gid']);
            }
        }
    }
    //NOW CHECK THAT ALL QUESTIONS HAVE A 'QUESTION TYPE' FIELD SET
    $chkquery = "SELECT qid, question, gid FROM {$dbprefix}questions WHERE sid={$_GET['sid']} AND type = ''";
    $chkresult = db_execute_assoc($chkquery) or safe_die("Couldn't check questions for missing types<br />{$chkquery}<br />" . $connect->ErrorMsg());
    while ($chkrow = $chkresult->FetchRow()) {
        $failedcheck[] = array($chkrow['qid'], $chkrow['question'], ": " . $clang->gT("This question does not have a question 'type' set."), $chkrow['gid']);
    }
    //ChECK THAT certain array question types have answers set
    $chkquery = "SELECT q.qid, question, gid FROM {$dbprefix}questions as q WHERE (select count(*) from {$dbprefix}answers as a where a.qid=q.qid and scale_id=0)=0 and sid={$_GET['sid']} AND type IN ('F', 'H', 'W', 'Z', '1') and q.parent_qid=0";
    $chkresult = db_execute_assoc($chkquery) or safe_die("Couldn't check questions for missing answers<br />{$chkquery}<br />" . $connect->ErrorMsg());
    while ($chkrow = $chkresult->FetchRow()) {
        $failedcheck[] = array($chkrow['qid'], $chkrow['question'], ": " . $clang->gT("This question requires answers, but none are set."), $chkrow['gid']);
    }
    // while
    //CHECK THAT DUAL Array has answers set
    $chkquery = "SELECT q.qid, question, gid FROM {$dbprefix}questions as q WHERE (select count(*) from {$dbprefix}answers as a where a.qid=q.qid and scale_id=1)=0 and sid={$_GET['sid']} AND type='1' and q.parent_qid=0";
    $chkresult = db_execute_assoc($chkquery) or safe_die("Couldn't check questions for missing 2nd answer set<br />{$chkquery}<br />" . $connect->ErrorMsg());
    while ($chkrow = $chkresult->FetchRow()) {
        $failedcheck[] = array($chkrow['qid'], $chkrow['question'], ": " . $clang->gT("This question requires a second answer set but none is set."), $chkrow['gid']);
    }
    // while
    //CHECK THAT ALL CONDITIONS SET ARE FOR QUESTIONS THAT PRECEED THE QUESTION CONDITION
    //A: Make an array of all the qids in order of appearance
    //	$qorderquery="SELECT * FROM {$dbprefix}questions, {$dbprefix}groups WHERE {$dbprefix}questions.gid={$dbprefix}groups.gid AND {$dbprefix}questions.sid={$_GET['sid']} ORDER BY {$dbprefix}groups.sortorder, {$dbprefix}questions.title";
    //	$qorderresult=$connect->Execute($qorderquery) or safe_die("Couldn't generate a list of questions in order<br />$qorderquery<br />".$connect->ErrorMsg());
    //	$qordercount=$qorderresult->RecordCount();
    //	$c=0;
    //	while ($qorderrow=$qorderresult->FetchRow())
    //		{
    //		$qidorder[]=array($c, $qorderrow['qid']);
    //		$c++;
    //		}
    //TO AVOID NATURAL SORT ORDER ISSUES, FIRST GET ALL QUESTIONS IN NATURAL SORT ORDER, AND FIND OUT WHICH NUMBER IN THAT ORDER THIS QUESTION IS
    $qorderquery = "SELECT * FROM {$dbprefix}questions WHERE sid={$surveyid} AND type not in ('S', 'D', 'T', 'Q')";
    $qorderresult = db_execute_assoc($qorderquery) or safe_die("{$qorderquery}<br />" . $connect->ErrorMsg());
    $qrows = array();
    //Create an empty array in case FetchRow does not return any rows
    while ($qrow = $qorderresult->FetchRow()) {
        $qrows[] = $qrow;
    }
    // Get table output into array
    usort($qrows, 'GroupOrderThenQuestionOrder');
    // Perform a case insensitive natural sort on group name then question title of a multidimensional array
    $c = 0;
    foreach ($qrows as $qr) {
        $qidorder[] = array($c, $qrow['qid']);
        $c++;
    }
    $qordercount = "";
    //1: Get each condition's question id
    $conquery = "SELECT {$dbprefix}conditions.qid, cqid, {$dbprefix}questions.question, " . "{$dbprefix}questions.gid " . "FROM {$dbprefix}conditions, {$dbprefix}questions, {$dbprefix}groups " . "WHERE {$dbprefix}conditions.qid={$dbprefix}questions.qid " . "AND {$dbprefix}questions.gid={$dbprefix}groups.gid ORDER BY {$dbprefix}conditions.qid";
    $conresult = db_execute_assoc($conquery) or safe_die("Couldn't check conditions for relative consistency<br />{$conquery}<br />" . $connect->ErrorMsg());
    //2: Check each conditions cqid that it occurs later than the cqid
    while ($conrow = $conresult->FetchRow()) {
        $cqidfound = 0;
        $qidfound = 0;
        $b = 0;
        while ($b < $qordercount) {
            if ($conrow['cqid'] == $qidorder[$b][1]) {
                $cqidfound = 1;
                $b = $qordercount;
            }
            if ($conrow['qid'] == $qidorder[$b][1]) {
                $qidfound = 1;
                $b = $qordercount;
            }
            if ($qidfound == 1) {
                $failedcheck[] = array($conrow['qid'], $conrow['question'], ": " . $clang->gT("This question has a condition set, however the condition is based on a question that appears after it."), $conrow['gid']);
            }
            $b++;
        }
    }
    //CHECK THAT ALL THE CREATED FIELDS WILL BE UNIQUE
    $fieldmap = createFieldMap($surveyid, "full");
    if (isset($fieldmap)) {
        foreach ($fieldmap as $fielddata) {
            $fieldlist[] = $fielddata['fieldname'];
        }
        $fieldlist = array_reverse($fieldlist);
        //let's always change the later duplicate, not the earlier one
    }
    $checkKeysUniqueComparison = create_function('$value', 'if ($value > 1) return true;');
    @($duplicates = array_keys(array_filter(array_count_values($fieldlist), $checkKeysUniqueComparison)));
    if (isset($duplicates)) {
        foreach ($duplicates as $dup) {
            $badquestion = arraySearchByKey($dup, $fieldmap, "fieldname", 1);
            $fix = "[<a href='{$scriptname}?action=activate&amp;sid={$surveyid}&amp;fixnumbering=" . $badquestion['qid'] . "'>Click Here to Fix</a>]";
            $failedcheck[] = array($badquestion['qid'], $badquestion['question'], ": Bad duplicate fieldname {$fix}", $badquestion['gid']);
        }
    }
    if (isset($failedcheck)) {
        return $failedcheck;
    } else {
        return false;
    }
}
开发者ID:portokallidis,项目名称:Metamorphosis-Meducator,代码行数:101,代码来源:activate_functions.php

示例10: getArrayFiltersExcludesOutGroup

/**
 * getArrayFiltersExcludesOutGroup($qid) finds out if a question is in the current group or not for array filter exclude
 * @global string $qid
 * @return returns true if its not in currect group and false if it is..
 */
function getArrayFiltersExcludesOutGroup($qid)
{
    // TODO: Check list_filter values to make sure questions are previous?
    global $surveyid, $dbprefix, $gid;
    $qid = sanitize_int($qid);
    $attributes = getQuestionAttributes($qid);
    if (isset($attributes['array_filter_exclude'])) {
        $val = $attributes['array_filter_exclude'];
        // Get the Value of the Attribute ( should be a previous question's title in same group )
        // we found the target question, now we need to know what the answers where, we know its a multi!
        $surveyid = returnglobal('sid');
        $fieldmap = createFieldMap($surveyid, 'full');
        $val2 = arraySearchByKey($val, $fieldmap, 'title', 1);
        if ($val2['gid'] != $gid) {
            return true;
        }
        if ($val2['gid'] == $gid) {
            return false;
        }
    }
    return false;
}
开发者ID:karime7gezly,项目名称:OpenConextApps-LimeSurvey,代码行数:27,代码来源:common_functions.php

示例11: getsidgidqidaidtype

function getsidgidqidaidtype($fieldcode)
{
    // use simple parsing to get {sid}, {gid}
    // and what may be {qid} or {qid}{aid} combination
    list($fsid, $fgid, $fqid) = explode('X', $fieldcode);
    $fsid = sanitize_int($fsid);
    $fgid = sanitize_int($fgid);
    if (!$fqid) {
        $fqid = 0;
    }
    $fqid = sanitize_int($fqid);
    // try a true parsing of fieldcode (can separate qid from aid)
    // but fails for type M and type P multiple choice
    // questions because the SESSION fieldcode is combined
    // and we want here to pass only the sidXgidXqid for type M and P
    $fields = arraySearchByKey($fieldcode, createFieldMap($fsid), "fieldname", 1);
    if (count($fields) != 0) {
        $aRef['sid'] = $fields['sid'];
        $aRef['gid'] = $fields['gid'];
        $aRef['qid'] = $fields['qid'];
        $aRef['aid'] = $fields['aid'];
        $aRef['type'] = $fields['type'];
    } else {
        // either the fielcode doesn't match a question
        // or it is a type M or P question
        $aRef['sid'] = $fsid;
        $aRef['gid'] = $fgid;
        $aRef['qid'] = sanitize_int($fqid);
        $s_lang = GetBaseLanguageFromSurveyID($fsid);
        $query = "SELECT type FROM " . db_table_name('questions') . " WHERE qid=" . $fqid . " AND language='" . $s_lang . "'";
        $result = db_execute_assoc($query) or safe_die("Couldn't get question type - getsidgidqidaidtype() in common.php<br />" . $connect->ErrorMsg());
        //Checked
        if ($result->RecordCount() == 0) {
            // question doesn't exist
            return array();
        } else {
            // certainly is type M or P
            while ($row = $result->FetchRow()) {
                $aRef['type'] = $row['type'];
            }
        }
    }
    //return array('sid'=>$fsid, "gid"=>$fgid, "qid"=>$fqid);
    return $aRef;
}
开发者ID:ddrmoscow,项目名称:queXS,代码行数:45,代码来源:common_functions.php


注:本文中的arraySearchByKey函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。