public function newQuestion()
 {
     // POST İLE GÖNDERİLEN DEĞERLERİ ALALIM.
     $postData = Input::all();
     // FORM KONTROLLERİNİ BELİRLEYELİM
     $rules = array('title' => 'required|between:3,256', 'content' => 'required');
     // HATA MESAJLARINI OLUŞTURALIM
     $messages = array('title.required' => 'Lütfen sorunuzun başlığını yazın', 'title.between' => 'Soru başlığı minumum 3 maksimum 256 karakterden oluşabilir', 'content.required' => 'Lütfen sorunuza ait detayları yazın');
     // KONTROL (VALIDATION) İŞLEMİNİ GERÇEKLEŞTİRELİM
     $validator = Validator::make($postData, $rules, $messages);
     // EĞER VALİDASYON BAŞARISIZ OLURSA HATALARI GÖSTERELİM
     if ($validator->fails()) {
         // HATA MESAJLARI VE INPUT DEĞERLERİYLE FORMA  YÖNLENDİRELİM
         return Redirect::route('newQuestionForm')->withInput()->withErrors($validator->messages());
     } else {
         // SORUYU VERİTABANINA EKLEYELİM
         $question = new Questions();
         $question->user_id = Auth::user()->id;
         $question->title = e(trim($postData['title']));
         $question->content = e(trim($postData['content']));
         $question->created_at = date('Y-m-d H:i:s');
         $question->created_ip = Request::getClientIp();
         $question->save();
         // KULLANICIYI SORULARIN LİSTELENDİĞİ SAYFAYA YÖNLENDİRELİM
         return Redirect::route('allQuestions');
     }
 }
Exemplo n.º 2
0
 public function createAction()
 {
     if ($this->request->isPost()) {
         $question = new Questions();
         $question->question = $this->request->getPost('question');
         $question->save();
         $this->response->redirect('poll/index');
     }
 }
Exemplo n.º 3
0
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $model = new Questions();
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['Questions'])) {
         $model->attributes = $_POST['Questions'];
         if ($model->save()) {
             $this->redirect(array('view', 'id' => $model->id));
         }
     }
     $this->render('create', array('model' => $model));
 }
Exemplo n.º 4
0
 public function actionAskQuestion()
 {
     $model = new Questions();
     if (isset($_POST['title'])) {
         $model->title = $_REQUEST['title'];
         $model->question = $_REQUEST['question'];
         $model->user_id = Yii::app()->session['userId'];
         if ($model->save(false)) {
             $id = Yii::app()->db->getLastInsertID();
             $this->redirect(array('front/questionDetail/' . $id . ''));
         }
     }
     $this->render('askQuestion');
 }
 public function newAction()
 {
     $response = new ApiResponse();
     if ($this->request->isPost()) {
         $question = new Questions();
         $question->id = uniqid();
         $question->tags = $this->request->getPost('tags');
         $question->title = $this->request->getPost('title');
         $question->content = $this->request->getPost('content');
         $question->users_id = $this->request->getPost('users_id');
         if ($this->request->hasFiles() == true) {
             $baseLocation = 'files/';
             foreach ($this->request->getUploadedFiles() as $file) {
                 $photos = new Photos();
                 $unique_filename = $question->id;
                 $photos->size = $file->getSize();
                 $photos->original_name = $file->getName();
                 $photos->file_name = $unique_filename;
                 $photos->extension = $file->getExtension();
                 $location = $baseLocation . $unique_filename . "." . $file->getExtension();
                 $photos->public_link = $location;
                 try {
                     if (!$photos->save()) {
                         $response->setResponseError($photos->getMessages());
                     } else {
                         //Move the file into the application
                         $file->moveTo($location);
                         $question->photo = $photos->public_link;
                     }
                 } catch (PDOException $e) {
                     $response->setResponseError($e->getMessage());
                 }
             }
         }
         try {
             if ($question->save() == false) {
                 $response->setResponseError($question->getMessages());
             } else {
                 $response->setResponseMessage($question->id);
             }
         } catch (PDOException $e) {
             $response->setResponseError($e->getMessage());
         }
     } else {
         $response->setResponseError('Wrong HTTP Method');
     }
     return $response;
 }
 public function store()
 {
     // Validate
     // read more on validation at http://laravel.com/docs/validation
     $rules = array('que_name' => 'required');
     $validator = Validator::make(Input::all(), $rules);
     // process the login
     if ($validator->fails()) {
         return Redirect::to('questions/create')->withErrors($validator);
     } else {
         // store
         $questions = new Questions();
         $questions->que_name = Input::get('que_name');
         $questions->save();
         // Redirect
         Session::flash('message', 'Successfully created Questions!');
         return Redirect::to('questions');
     }
 }
 public function store()
 {
     $validator = Validator::make(Input::all(), Questions::$rules);
     if ($validator->passes()) {
         $question = new Questions();
         $question->order = Input::get('order');
         $question->doctor_type = Input::get('doctor_type');
         $question->title = substr(strip_tags(Input::get('title')), 0, 100);
         $question->question = Input::get('question');
         $question->answer = Input::get('answer');
         $question->is_branding = Input::get('is_branding');
         $question->is_true = Input::get('is_true');
         $question->save();
         $json_request['responseText'] = "Вопрос добавлен";
         $json_request['redirect'] = URL::route('questions.index');
         $json_request['status'] = TRUE;
     } else {
         $json_request['responseText'] = 'Неверно заполнены поля';
         $json_request['responseErrorText'] = implode($validator->messages()->all(), '<br />');
     }
     return Response::json($json_request, 200);
 }
Exemplo n.º 8
0
/**
* This function imports a LimeSurvey .lsq question XML file
*
* @param mixed $sFullFilepath  The full filepath of the uploaded file
* @param mixed $iNewSID The new survey id
* @param mixed $newgid The new question group id -the question will always be added after the last question in the group
*/
function XMLImportQuestion($sFullFilepath, $iNewSID, $newgid)
{
    $clang = Yii::app()->lang;
    $aLanguagesSupported = array();
    // this array will keep all the languages supported for the survey
    $sBaseLanguage = Survey::model()->findByPk($iNewSID)->language;
    $aLanguagesSupported[] = $sBaseLanguage;
    // adds the base language to the list of supported languages
    $aLanguagesSupported = array_merge($aLanguagesSupported, Survey::model()->findByPk($iNewSID)->additionalLanguages);
    $xml = simplexml_load_file($sFullFilepath);
    if ($xml->LimeSurveyDocType != 'Question') {
        safeDie('This is not a valid LimeSurvey question structure XML file.');
    }
    $iDBVersion = (int) $xml->DBVersion;
    $aQIDReplacements = array();
    $aSQIDReplacements = array(0 => 0);
    $results['defaultvalues'] = 0;
    $results['answers'] = 0;
    $results['question_attributes'] = 0;
    $results['subquestions'] = 0;
    $importlanguages = array();
    foreach ($xml->languages->language as $language) {
        $importlanguages[] = (string) $language;
    }
    if (!in_array($sBaseLanguage, $importlanguages)) {
        $results['fatalerror'] = $clang->gT("The languages of the imported question file must at least include the base language of this survey.");
        return $results;
    }
    // First get an overview of fieldnames - it's not useful for the moment but might be with newer versions
    /*
        $fieldnames=array();
        foreach ($xml->questions->fields->fieldname as $fieldname )
        {
        $fieldnames[]=(string)$fieldname;
        };*/
    // Import questions table ===================================================================================
    // We have to run the question table data two times - first to find all main questions
    // then for subquestions (because we need to determine the new qids for the main questions first)
    $query = "SELECT MAX(question_order) AS maxqo FROM {{questions}} WHERE sid={$iNewSID} AND gid={$newgid}";
    $res = Yii::app()->db->createCommand($query)->query();
    $resrow = $res->read();
    $newquestionorder = $resrow['maxqo'] + 1;
    if (is_null($newquestionorder)) {
        $newquestionorder = 0;
    } else {
        $newquestionorder++;
    }
    foreach ($xml->questions->rows->row as $row) {
        $insertdata = array();
        foreach ($row as $key => $value) {
            $insertdata[(string) $key] = (string) $value;
        }
        $iOldSID = $insertdata['sid'];
        $insertdata['sid'] = $iNewSID;
        $insertdata['gid'] = $newgid;
        $insertdata['question_order'] = $newquestionorder;
        $oldqid = $insertdata['qid'];
        unset($insertdata['qid']);
        // save the old qid
        // now translate any links
        $insertdata['title'] = translateLinks('survey', $iOldSID, $iNewSID, $insertdata['title']);
        $insertdata['question'] = translateLinks('survey', $iOldSID, $iNewSID, $insertdata['question']);
        $insertdata['help'] = translateLinks('survey', $iOldSID, $iNewSID, $insertdata['help']);
        // Insert the new question
        if (isset($aQIDReplacements[$oldqid])) {
            $insertdata['qid'] = $aQIDReplacements[$oldqid];
        }
        $ques = new Questions();
        if ($insertdata) {
            XSSFilterArray($insertdata);
        }
        foreach ($insertdata as $k => $v) {
            $ques->{$k} = $v;
        }
        $result = $ques->save();
        if (!isset($aQIDReplacements[$oldqid])) {
            $newqid = Yii::app()->db->getCommandBuilder()->getLastInsertID($ques->tableName());
            $aQIDReplacements[$oldqid] = $newqid;
            // add old and new qid to the mapping array
        }
    }
    // Import subquestions --------------------------------------------------------------
    if (isset($xml->subquestions)) {
        foreach ($xml->subquestions->rows->row as $row) {
            $insertdata = array();
            foreach ($row as $key => $value) {
                $insertdata[(string) $key] = (string) $value;
            }
            $insertdata['sid'] = $iNewSID;
            $insertdata['gid'] = $newgid;
            $oldsqid = (int) $insertdata['qid'];
            unset($insertdata['qid']);
            // save the old qid
            $insertdata['parent_qid'] = $aQIDReplacements[(int) $insertdata['parent_qid']];
            // remap the parent_qid
            // now translate any links
            $insertdata['question'] = translateLinks('survey', $iOldSID, $iNewSID, $insertdata['question']);
            if (isset($insertdata['help'])) {
                $insertdata['help'] = translateLinks('survey', $iOldSID, $iNewSID, $insertdata['help']);
            }
            if (isset($aQIDReplacements[$oldsqid])) {
                $insertdata['qid'] = $aQIDReplacements[$oldsqid];
            }
            if ($insertdata) {
                XSSFilterArray($insertdata);
            }
            $ques = new Questions();
            foreach ($insertdata as $k => $v) {
                $ques->{$k} = $v;
            }
            $result = $ques->save();
            $newsqid = Yii::app()->db->getCommandBuilder()->getLastInsertID($ques->tableName());
            if (!isset($insertdata['qid'])) {
                $aQIDReplacements[$oldsqid] = $newsqid;
                // add old and new qid to the mapping array
            }
            $results['subquestions']++;
        }
    }
    // Import answers --------------------------------------------------------------
    if (isset($xml->answers)) {
        foreach ($xml->answers->rows->row as $row) {
            $insertdata = array();
            foreach ($row as $key => $value) {
                $insertdata[(string) $key] = (string) $value;
            }
            $insertdata['qid'] = $aQIDReplacements[(int) $insertdata['qid']];
            // remap the parent_qid
            // now translate any links
            $answers = new Answers();
            if ($insertdata) {
                XSSFilterArray($insertdata);
            }
            foreach ($insertdata as $k => $v) {
                $answers->{$k} = $v;
            }
            $result = $answers->save();
            $results['answers']++;
        }
    }
    // Import questionattributes --------------------------------------------------------------
    if (isset($xml->question_attributes)) {
        $aAllAttributes = questionAttributes(true);
        foreach ($xml->question_attributes->rows->row as $row) {
            $insertdata = array();
            foreach ($row as $key => $value) {
                $insertdata[(string) $key] = (string) $value;
            }
            unset($insertdata['qaid']);
            $insertdata['qid'] = $aQIDReplacements[(int) $insertdata['qid']];
            // remap the parent_qid
            if ($iDBVersion < 148 && isset($aAllAttributes[$insertdata['attribute']]['i18n']) && $aAllAttributes[$insertdata['attribute']]['i18n']) {
                foreach ($importlanguages as $sLanguage) {
                    $insertdata['language'] = $sLanguage;
                    $attributes = new Question_attributes();
                    if ($insertdata) {
                        XSSFilterArray($insertdata);
                    }
                    foreach ($insertdata as $k => $v) {
                        $attributes->{$k} = $v;
                    }
                    $result = $attributes->save();
                }
            } else {
                $attributes = new Question_attributes();
                if ($insertdata) {
                    XSSFilterArray($insertdata);
                }
                foreach ($insertdata as $k => $v) {
                    $attributes->{$k} = $v;
                }
                $result = $attributes->save();
            }
            $results['question_attributes']++;
        }
    }
    // Import defaultvalues --------------------------------------------------------------
    if (isset($xml->defaultvalues)) {
        $results['defaultvalues'] = 0;
        foreach ($xml->defaultvalues->rows->row as $row) {
            $insertdata = array();
            foreach ($row as $key => $value) {
                $insertdata[(string) $key] = (string) $value;
            }
            $insertdata['qid'] = $aQIDReplacements[(int) $insertdata['qid']];
            // remap the qid
            $insertdata['sqid'] = $aSQIDReplacements[(int) $insertdata['sqid']];
            // remap the subquestion id
            // now translate any links
            $default = new Defaultvalues();
            if ($insertdata) {
                XSSFilterArray($insertdata);
            }
            foreach ($insertdata as $k => $v) {
                $default->{$k} = $v;
            }
            $result = $default->save();
            $results['defaultvalues']++;
        }
    }
    LimeExpressionManager::SetDirtyFlag();
    // so refreshes syntax highlighting
    $results['newqid'] = $newqid;
    $results['questions'] = 1;
    $results['labelsets'] = 0;
    $results['labels'] = 0;
    return $results;
}
Exemplo n.º 9
0
 /**
  * Load only subquestion specific screen only.
  *
  * @access public
  * @param int $surveyid
  * @param int $gid
  * @param int $qid
  * @return void
  */
 public function _editsubquestion($surveyid, $gid, $qid)
 {
     $surveyid = sanitize_int($surveyid);
     $qid = sanitize_int($qid);
     $gid = sanitize_int($gid);
     $clang = $this->getController()->lang;
     // Get languages select on survey.
     $anslangs = Survey::model()->findByPk($surveyid)->additionalLanguages;
     $baselang = Survey::model()->findByPk($surveyid)->language;
     $resultrow = Questions::model()->findByPk(array('qid' => $qid, 'language' => $baselang))->attributes;
     $sQuestiontype = $resultrow['type'];
     $aQuestiontypeInfo = getQuestionTypeList($sQuestiontype, 'array');
     $iScaleCount = $aQuestiontypeInfo[$sQuestiontype]['subquestions'];
     for ($iScale = 0; $iScale < $iScaleCount; $iScale++) {
         $subquestiondata = Questions::model()->findAllByAttributes(array('parent_qid' => $qid, 'language' => $baselang, 'scale_id' => $iScale));
         if (empty($subquestiondata)) {
             //Questions::model()->insert();
             $data = array('sid' => $surveyid, 'gid' => $gid, 'parent_qid' => $qid, 'title' => 'SQ001', 'question' => $clang->gT('Some example subquestion'), 'question_order' => 1, 'language' => $baselang, 'scale_id' => $iScale);
             Questions::model()->insertRecords($data);
             $subquestiondata = Questions::model()->findAllByAttributes(array('parent_qid' => $qid, 'language' => $baselang, 'scale_id' => $iScale));
         }
         // Check that there are subquestions for every language supported by the survey
         foreach ($anslangs as $language) {
             foreach ($subquestiondata as $row) {
                 $qrow = Questions::model()->count('
                 parent_qid = :qid AND
                 language = :language AND
                 qid = ' . $row->qid . ' AND
                 scale_id = :iScale', array(':qid' => $qid, ':language' => $language, ':iScale' => $iScale));
                 // Means that no record for the language exists in the questions table
                 if (empty($qrow)) {
                     switchMSSQLIdentityInsert('questions', true);
                     $question = new Questions();
                     $question->qid = $row->qid;
                     $question->sid = $surveyid;
                     $question->gid = $row->gid;
                     $question->parent_qid = $qid;
                     $question->title = $row->title;
                     $question->question = $row->question;
                     $question->question_order = $row->question_order;
                     $question->language = $language;
                     $question->scale_id = $iScale;
                     $question->save();
                     /** //activerecord is not not new bugfix!
                         Questions::model()->insert(array(
                         'qid' => $row->qid,
                         'sid' => $surveyid,
                         'gid' => $row->gid,
                         'parent_qid' => $qid,
                         'title' => $row->title,
                         'question' => $row->question,
                         'question_order' => $row->question_order,
                         'language' => $language,
                         'scale_id' => $iScale,
                         ));
                         */
                     switchMSSQLIdentityInsert('questions', false);
                 }
             }
         }
     }
     array_unshift($anslangs, $baselang);
     // Delete the subquestions in languages not supported by the survey
     $criteria = new CDbCriteria();
     $criteria->addColumnCondition(array('parent_qid' => $qid));
     $criteria->addNotInCondition('language', $anslangs);
     Questions::model()->deleteAll($criteria);
     // Check sort order for subquestions
     $qresult = Questions::model()->findByAttributes(array('qid' => $qid, 'language' => $baselang));
     if (!is_null($qresult)) {
         $qtype = $qresult->type;
     }
     if (!empty($_POST['ansaction'])) {
         // Check if any nulls exist. If they do, redo the sortorders
         $cacount = Questions::model()->count(array('parent_qid' => $qid, 'question_order' => null, 'language' => $baselang));
         if ($cacount) {
             Answers::model()->updateSortOrder($qid, Survey::model()->findByPk($surveyid)->language);
         }
     }
     Yii::app()->loadHelper('admin/htmleditor');
     // Print Key Control JavaScript
     $result = Questions::model()->findAllBYAttributes(array('parent_qid' => $qid, 'language' => Survey::model()->findByPk($surveyid)->language), array('order' => 'question_order desc'));
     $aData['anscount'] = $anscount = count($result);
     $row = $result[0]->attributes;
     $aData['row'] = $row;
     $maxsortorder = $row['question_order'] + 1;
     /**
      * The following line decides if the assessment input fields are visible or not
      * for some question types the assessment values is set in the label set instead of the answers
      */
     $qtypes = getQuestionTypeList('', 'array');
     Yii::app()->loadHelper('surveytranslator');
     $aData['scalecount'] = $scalecount = $qtypes[$qtype]['subquestions'];
     $sumresult1 = Survey::model()->with(array('languagesettings' => array('condition' => 'surveyls_language=language')))->together()->findByAttributes(array('sid' => $surveyid));
     if ($sumresult1 == null) {
         $this->getController()->error('Invalid survey id');
     }
     $surveyinfo = $sumresult1->attributes;
     $surveyinfo = array_merge($surveyinfo, $sumresult1->languagesettings[0]->attributes);
     $surveyinfo = array_map('flattenText', $surveyinfo);
     $aData['activated'] = $activated = $surveyinfo['active'];
     $aData['surveyid'] = $surveyid;
     $aData['gid'] = $gid;
     $aData['qid'] = $qid;
     $aData['anslangs'] = $anslangs;
     $aData['maxsortorder'] = $maxsortorder;
     foreach ($anslangs as $anslang) {
         for ($scale_id = 0; $scale_id < $scalecount; $scale_id++) {
             $criteria = new CDbCriteria();
             $criteria->condition = 'parent_qid = :pqid AND language = :language AND scale_id = :scale_id';
             $criteria->order = 'question_order, title ASC';
             $criteria->params = array(':pqid' => $qid, ':language' => $anslang, ':scale_id' => $scale_id);
             $aData['results'][$anslang][$scale_id] = Questions::model()->findAll($criteria);
         }
     }
     $aViewUrls['subQuestion_view'][] = $aData;
     return $aViewUrls;
 }
Exemplo n.º 10
0
 /**
  * Add a question to the FAQ database
  *
  * @param $submitter
  * @param $text
  * @param $socCode
  *
  * @return \Questions
  */
 public function addQuestion($submitter, $text, $socCode)
 {
     $question = new \Questions();
     $question->setSocCode($socCode);
     $question->setQuestion($text);
     $question->setSubmitter($submitter);
     $question->save();
     $eligibleExperts = $this->findExperts($socCode);
     $this->addQuestionToExpertQueue($question, $eligibleExperts);
     return $question;
 }
 public function addquestion($post)
 {
     $status = true;
     if (!Yii::app()->user->isGuest) {
         $role = Yii::app()->user->role;
         $userid = Yii::app()->user->getId();
     } else {
         $role = $post['q_role'];
         if ($role == 'homeowner') {
             $email = $post['q_hemail'];
             $count_email = Homeowners::model()->countByAttributes(array('email' => $email));
             if ($count_email > 0) {
                 $details = Homeowners::model()->findByAttributes(array('email' => $email));
                 $userid = $details->homeowner_id;
             } else {
                 $password = Yii::app()->Ini->generate_password();
                 $huser = new Homeowners();
                 $huser->firstname = $post['q_firstname'];
                 $huser->lastname = $post['q_lastname'];
                 $huser->email = $post['q_hemail'];
                 $huser->username = $post['q_husername'];
                 $huser->password = $password;
                 if ($huser->save()) {
                     Yii::app()->Ini->savetovnoc($email);
                     $userid = Yii::app()->db->getLastInsertId();
                     Yii::app()->Ini->savetoaffiliate($userid, 'homeowner');
                     $this->SendMailAfterSignUp($userid);
                 } else {
                     $status = false;
                     $return['message'] = $huser->getErrors();
                 }
             }
         } else {
             $email = $post['q_cemail'];
             $password = $post['q_password'];
             $count_email = Contractors::model()->countByAttributes(array('Email' => $email));
             if ($count_email > 0) {
                 $details = Contractors::model()->findByAttributes(array('Email' => $email));
                 $userid = $details->ContractorId;
             } else {
                 $cont = new Contractors();
                 $cont->Name = $post['q_company'];
                 $cont->ContactName = $post['q_contactname'];
                 $cont->Email = $post['q_cemail'];
                 $cont->Username = $post['q_cusername'];
                 $cont->Password = $post['q_password'];
                 if ($cont->save()) {
                     Yii::app()->Ini->savetovnoc($email);
                     $userid = Yii::app()->db->getLastInsertId();
                 } else {
                     $status = false;
                     $return['message'] = $cont->getErrors();
                 }
             }
         }
     }
     if ($status) {
         if (Yii::app()->user->isGuest) {
             $identity = new UserIdentity($email, $password, $role);
             if ($identity->authenticate()) {
                 Yii::app()->user->login($identity);
                 $owner_id = Yii::app()->user->getId();
                 Yii::app()->Ini->savetoaffiliate($owner_id, $role);
             }
         }
         $q = new Questions();
         $q->title = $post['q_title'];
         $q->content = $post['q_content'];
         $q->owner_id = $userid;
         $q->owner_user_type = $role;
         $q->project_type_id = $post['q_category'];
         if ($q->save()) {
             $return['url'] = 'questions/details/id/' . Yii::app()->db->getLastInsertId() . '/n/' . Yii::app()->Ini->slugstring($q->title);
         } else {
             $status = false;
             $return['message'] = $q->getErrors();
         }
     }
     $return['status'] = $status;
     $this->renderJSON($return, $status);
 }