Fix for version 6.0.1 for password fields

Talk about Password fields

Moderator: alexandrleonenko

administrator
Site Admin
Site Admin
Posts: 6067
Joined: Jan 7th, '09, 23:18
Contact:

Fix for version 6.0.1 for password fields

Postby administrator » Aug 16th, '09, 22:06

Copy and replace AddRow() and UpdateRow() methods with placed in this example:


Code: Select all

    //--------------------------------------------------------------------------
    // Update row
    //--------------------------------------------------------------------------
    protected function UpdateRow($rid){
        $req_operation_randomize_code = $this->GetVariable("_operation_randomize_code", true, "post");
        if(!$this->CheckF5CaseValidation($req_operation_randomize_code)) return false;
        if(!$this->CheckSecurityCaseValidation("edit", "update", "updating")) return false;       
       
        $unique_field_found = false;
        $field_header = "";
        $field_count = "0";       
       
        // check for unique fields
        foreach($this->columnsEditMode as $fldName => $fldValue){
            if(($fldName != "") && ($this->GetFieldProperty($fldName, "unique") == true)){
                $field_prefix = "syy";                   
                if(isset($fldValue['req_type'])){
                    if(strlen(trim($fldValue['req_type'])) == 3){ $field_prefix = $fldValue['req_type']; }
                    else if(strlen(trim($fldValue['req_type'])) == 2){ $field_prefix = $fldValue['req_type']."y"; }
                }               
                $field_header =     (isset($fldValue['header'])) ? $fldValue['header'] : $fldName;
                $unique_condition = (isset($fldValue['unique_condition'])) ? trim($fldValue['unique_condition']) : "" ;
                $field_value =      (isset($_POST[$field_prefix.$fldName])) ? $_POST[$field_prefix.$fldName] : "";                                 
                $sql = "SELECT COUNT(*) as count FROM $this->tblName WHERE $this->primaryKey <> '$rid' AND $fldName = '$field_value'";
                if($unique_condition != "") $sql .= " AND ".$unique_condition." ";
                if(($field_count = $this->SelectSqlItem($sql)) > 0){
                    $unique_field_found = true;
                    break;
                }
            }           
        }
        // create update statment
        if(!$unique_field_found){
            $sql = "UPDATE $this->tblName SET ";
                $ind = 0;
                $this->AddCheckBoxesValues();           
                $max = count($_POST);
                foreach($_POST as $fldName => $fldValue){
                    // update all fields, excepting uploading fields                   
                    if(!$this->isExceptedField($fldName)){
                        $fldName = substr($fldName, 3, strlen($fldName));
                        $fldValue = $this->IsDatePrepare($fldName,$fldValue);
                        if(!$this->IsReadonly($fldName) && !$this->IsValidator($fldName)){
                            if (intval($ind) >= 1) $sql .= ", ";                           
                            if($this->IsDate($fldName)) {
                                if(trim($fldValue) != ""){
                                    $sql .= "$fldName = '".$fldValue."'";
                                }else{
                                    $sql .= "$fldName = NULL";   
                                }                       
                            }else if($this->IsPassword($fldName)){
                                $fldValue_new = $this->IsPasswordCrypted($fldName, $fldValue);
                                $sql .= "$fldName = ".$fldValue_new." ";
                            }else if($this->IsText($fldName)){                               
                                $fldValue_new = $fldValue;
                                if(is_array($fldValue)){    // it was a multiple enum
                                    $count = 0; $fldValue_new = "";
                                    foreach ($fldValue as $val){ if($count++ > 0) $fldValue_new .= ","; $fldValue_new .= $val; }
                                }
                                $sql .= "$fldName = '".$this->SetRealEscapeStringByDbType($fldValue_new)."' ";
                            }else{
                                if(trim($fldValue) != ""){
                                    $sql .= "$fldName = '".$fldValue."'";
                                }else if($this->IsFieldRequired($fldName)){
                                    $sql .= "$fldName = '0'";   
                                }else{
                                    $sql .= "$fldName = 'NULL'";   
                                }                       
                            }
                            $ind++;                           
                        }                       
                    }
                }
            $sql .= " WHERE $this->primaryKey = '$rid' ";
            if(!$this->isDemo){
                $this->dbHandler->query($sql);
                $affectedRows = $this->dbHandler->affectedRows();
            }else{
                $dSet = null;
                $affectedRows = -1;
            }           
            if($affectedRows >= 0){
                $this->actMsg = ($this->arrDgMessages['update'] != "") ? $this->arrDgMessages['update'] : $this->lang['updating_operation_completed'];               
                if(isset($_SESSION)) { $_SESSION[$this->uniquePrefix.'_operation_randomize_code'] = $req_operation_randomize_code; }
                $this->isOperationCompleted = true;               
            }else{
                $this->isWarning = true;
                if(!$this->isDemo) $this->actMsg = $this->lang['updating_operation_uncompleted'];
                else $this->actMsg = "Updating operation is blocked in demo version";               
                if(isset($_SESSION)) { $_SESSION[$this->uniquePrefix.'_operation_randomize_code'] = ""; }
                $this->isOperationCompleted = false;   
            }
            if($this->debug) $this->sqlStatements[] = "<table width='".$this->tblWidth[$this->mode]."'><tr><td align='left' class='".$this->cssClass."_dg_error_message no_print' style='COLOR: #333333;'><b>update sql (".Helper::ConvertCase($this->lang['total'],"lower",$this->langName).": ".$affectedRows.") </b>".$sql."</td></tr></table>";                   
        }else{
            $this->isWarning = true;           
            $this->actMsg = str_replace("_FIELD_", $field_header, $this->lang['unique_field_error']);               
            if($this->debug) $this->sqlStatements[] = "<table width='".$this->tblWidth[$this->mode]."'><tr><td align='left' class='".$this->cssClass."_dg_error_message no_print' style='COLOR: #333333;'><b>select sql (".Helper::ConvertCase($this->lang['total'],"lower",$this->langName).": ".$field_count.") </b>".$sql."</td></tr></table>";                   
        }
        if($this->debug) $this->actMsg .= " ".$this->lang['record_n']." ".$this->rid;       
    }

    //--------------------------------------------------------------------------
    // Add row
    //--------------------------------------------------------------------------
    protected function AddRow(){
        $req_operation_randomize_code = $this->GetVariable("_operation_randomize_code", true, "post");
        if(!$this->CheckF5CaseValidation($req_operation_randomize_code)) return false;
        if(!$this->CheckSecurityCaseValidation("add", "add_new", "adding")) return false;       
       
        $unique_field_found = false;
        $field_header = "";
        $field_count = "0";
        $dSet = "";
       
        // check for unique fields
        foreach($this->columnsEditMode as $fldName => $fldValue){
            if(($fldName != "") && ($this->GetFieldProperty($fldName, "unique") == true)){
                $field_prefix = "syy";                   
                if(isset($fldValue['req_type'])){
                    if(strlen(trim($fldValue['req_type'])) == 3){ $field_prefix = $fldValue['req_type']; }
                    else if(strlen(trim($fldValue['req_type'])) == 2){ $field_prefix = $fldValue['req_type']."y"; }
                }               
                $field_header =     (isset($fldValue['header'])) ? $fldValue['header'] : $fldName;
                $unique_condition = (isset($fldValue['unique_condition'])) ? trim($fldValue['unique_condition']) : "" ;
                $field_value =      (isset($_POST[$field_prefix.$fldName])) ? $_POST[$field_prefix.$fldName] : "";                                 
                $sql = "SELECT COUNT(*) as count FROM $this->tblName WHERE $fldName = '$field_value' ";
                if($unique_condition != "") $sql .= " AND ".$unique_condition." ";
                if(($field_count = $this->SelectSqlItem($sql)) > 0){
                    $unique_field_found = true;
                    break;
                }
            }           
        }
        // create insert statment
        if(!$unique_field_found){
            $this->AddCheckBoxesValues();                   
            $sql = "INSERT INTO $this->tblName (";
                $ind = 0;
                $max = count($_POST);
                foreach($_POST as $fldName => $fldValue){
                    $ind ++;
                    // all fields, excepting uploading fields
                    if(!$this->isExceptedField($fldName)){
                        if(!$this->IsValidator($fldName)){
                            $fldName = substr($fldName, 3, strlen($fldName));
                            $sql .= "$fldName";
                            if (intval($ind) < intval($max) ) $sql .= ", ";
                        }
                    }
                }
            $sql .= ") VALUES (";
                $ind = 0;
                $max = count($_POST);
                foreach($_POST as $fldName => $fldValue){
                    $ind ++;
                    // all fields, excepting uploading fields
                    if(!$this->isExceptedField($fldName)){
                        if(!$this->IsValidator($fldName)){
                            $fldName = substr($fldName, 3, strlen($fldName));                   
                            $fldValue = $this->IsDatePrepare($fldName, $fldValue);                                                       
                            if($this->IsDate($fldName)) {
                                if(trim($fldValue) != ""){
                                    $sql .=  "'".$fldValue."'";
                                }else{
                                    $sql .= 'NULL';   
                                }                                                       
                            }else if($this->IsPassword($fldName)){
                                $fldValue_new = $this->IsPasswordCrypted($fldName, $fldValue);
                                $sql .= "".$fldValue_new." ";
                            }else if($this->IsText($fldName)) {                           
                                if($fldValue != ""){
                                    $fldValue_new = $fldValue;
                                    if(is_array($fldValue)){    // it was a multiple enum
                                        $count = 0; $fldValue_new = "";
                                        foreach ($fldValue as $val){ if($count++ > 0) $fldValue_new .= ","; $fldValue_new .= $val; }
                                    }                                       
                                    $sql .=  "'".$this->SetRealEscapeStringByDbType($fldValue_new)."'";
                                }else if($this->IsFieldRequired($fldName)){
                                    $sql .= "' '";   
                                }else{
                                    $sql .= "''";   
                                }
                            }else{
                                if(trim($fldValue) != ""){
                                    $sql .=  "'".$fldValue."'";
                                }else if($this->IsFieldRequired($fldName)){
                                    $sql .= '0';   
                                }else{
                                    $sql .= 'NULL';   
                                }                       
                            }
                            if (intval($ind) < intval($max) ) $sql .= ", ";
                        }                       
                    }
                }
            $sql .= ") ";
            if(!$this->isDemo){
                $dSet = $this->dbHandler->query($sql);
            }else{
                $dSet = null;
            }           
            $affectedRows = $this->dbHandler->affectedRows();
            if($this->debug) $this->sqlStatements[] = "<table width='".$this->tblWidth[$this->mode]."'><tr><td align='left'><b>insert sql (".Helper::ConvertCase($this->lang['total'],"lower",$this->langName).": ".$affectedRows.") </b>".$sql."</td></tr></table>";
               
            if($affectedRows > 0){
                $this->actMsg = ($this->arrDgMessages['add'] != "") ? $this->arrDgMessages['add'] : $this->lang['adding_operation_completed'];               
                $res = $this->dbHandler->query("SELECT MAX(".$this->primaryKey.") as maximal_row FROM ".$this->tblName." ");
                $row = $res->fetchRow();
                $this->rid = $row[0];
                if($this->debug){
                    $this->actMsg .= " ".$this->lang['record_n']." ".$this->rid;
                } 
                if(isset($_SESSION)) { $_SESSION[$this->uniquePrefix.'_operation_randomize_code'] = $req_operation_randomize_code; }
                $this->isOperationCompleted = true;   
            }else{
                $this->isWarning = true;           
                if(!$this->isDemo) $this->actMsg = $this->lang['adding_operation_uncompleted'];
                else $this->actMsg = "Adding operation is blocked in demo version";
                if($this->dbHandler->isError($dSet) == 1){
                    $this->isError = true;
                    $this->AddErrors($dSet);
                }
                if(isset($_SESSION)) { $_SESSION[$this->uniquePrefix.'_operation_randomize_code'] = ""; }
                $this->isOperationCompleted = false;   
            }           
        }else{
            $this->isWarning = true;           
            $this->actMsg = str_replace("_FIELD_", $field_header, $this->lang['unique_field_error']);               
            if($this->debug) $this->sqlStatements[] = "<table width='".$this->tblWidth[$this->mode]."'><tr><td align='left'><b>select sql (".Helper::ConvertCase($this->lang['total'],"lower",$this->langName).": ".$field_count.") </b>".$sql."</td></tr></table>";                               
        }         

        $this->sql = "SELECT * FROM $this->tblName ";       
        $fsort = " ORDER BY " . $this->primaryKey . " DESC";       
        $this->GetDataSet($fsort);
    }   

Clark_Kent
Newbie
Newbie
Posts: 1
Joined: Oct 23rd, '13, 05:58

Re: Fix for version 6.0.1 for password fields

Postby Clark_Kent » Oct 23rd, '13, 06:02

bundle of thanks...!
It really helps...!


Return to “Field type: "password"”