format = EDIT_FORMAT_FILE; global $conn; $this->conn = $conn; } function addJSFiles() { if($this->pageObject->pageType == PAGE_ADD || $this->pageObject->pageType == PAGE_EDIT || $this->pageObject->pageType == PAGE_REGISTER){ $this->pageObject->AddJSFile("include/mupload.js"); $this->pageObject->AddJSFile("include/zoombox/zoombox.js"); } } function addCSSFiles() { if($this->pageObject->pageType == PAGE_ADD || $this->pageObject->pageType == PAGE_EDIT || $this->pageObject->pageType == PAGE_REGISTER){ $this->pageObject->AddCSSFile("include/zoombox/zoombox.css"); } } function buildControl($value, $mode, $fieldNum, $validate, $additionalCtrlParams, $data) { parent::buildControl($value, $mode, $fieldNum, $validate, $additionalCtrlParams, $data); if($this->pageObject->pageType == PAGE_SEARCH || $this->pageObject->pageType == PAGE_LIST) { echo 'inputStyle.' type="text" ' .($mode == MODE_SEARCH ? 'autocomplete="off" ' : '') .(($mode==MODE_INLINE_EDIT || $mode==MODE_INLINE_ADD) && $this->is508==true ? 'alt="'.$this->strLabel.'" ' : '') .'name="'.$this->cfield.'" '.$this->pageObject->pSetEdit->getEditParams($this->field).' value="' .runner_htmlspecialchars($value).'">'; $this->buildControlEnd($validate); return; } if($mode == MODE_SEARCH) $this->format = ""; $this->formStamp = generatePassword(15); $this->initUploadHandler(); $this->upload_handler->formStamp = $this->formStamp; $filesArray = my_json_decode($value); if(!is_array($filesArray) || count($filesArray) == 0) { if(!$value) $jsonValue = "[]"; else { $uploadedFile = $this->upload_handler->get_file_object($value); if(is_null($uploadedFile)) $filesArray = array(); else $filesArray = array(my_json_decode(my_json_encode($uploadedFile))); } } if($this->pageObject->pageType == PAGE_EDIT) { if(count($this->pageObject->keys) > 0) { $i = 1; foreach($this->pageObject->keys as $keyName => $keyValue) { $this->upload_handler->tkeys .= "&key".$i."=".rawurlencode($keyValue); $i++; } } } $_SESSION["mupload_".$this->formStamp] = array(); $userFilesArray = array(); if(is_array($filesArray)) { foreach ($filesArray as $file) { $sessionArray = array(); $sessionArray["file"] = $file; $sessionArray["fromDB"] = true; $sessionArray["deleted"] = false; $_SESSION["mupload_".$this->formStamp][$file["usrName"]] = $sessionArray; $userFile = $this->upload_handler->buildUserFile($file); if(!$userFile["isImg"]){ $userFile["isImg"] = true; $userFile["isIco"] = true; $userFile["thumbnail_url"] = $userFile["url"]."&icon=1"; } $userFilesArray[] = $userFile; } } $jsonValue = my_json_encode($userFilesArray); echo '
' .mlang_message("ADD_FILES") .' ' .($this->pageObject->pSetEdit->isAutoUpload($this->field) ? '' : ' ' .mlang_message("START_UPLOAD") .' ' .mlang_message("CANCEL") .' ') .'
 

'; if(!isset($this->container->globalVals["muploadTemplateIncluded"])) { echo ' '; $this->container->globalVals["muploadTemplateIncluded"] = true; } $this->buildControlEnd($validate); } /** * Create CSS code for specifying control's width */ function makeWidthStyle($widthPx) { if(0 == $widthPx) return ""; return "min-width: ".$widthPx."px"; } function initUploadHandler() { if(is_null($this->upload_handler)) { require_once getabspath("classes/uploadhandler.php"); $this->upload_handler = new UploadHandler(getOptionsForMultiUpload($this->pageObject->pSet, $this->field)); $this->upload_handler->pSet = $this->pageObject->pSetEdit; $this->upload_handler->field = $this->field; $this->upload_handler->table = $this->pageObject->tName; $this->upload_handler->pageType = $this->pageObject->pageType; } } function readWebValue(&$avalues, &$blobfields, $strWhereClause, $oldValuesRead, &$filename_values) { $this->getPostValueAndType(); $this->formStamp = postvalue("formStamp_".$this->goodFieldName."_".$this->id); if (FieldSubmitted($this->goodFieldName."_".$this->id) && $this->formStamp != "") { $filesArray = my_json_decode($this->webValue); if(!is_array($filesArray) || count($filesArray) == 0) $this->webValue = ""; else { if(count($_SESSION["mupload_".$this->formStamp]) > 0) { foreach($_SESSION["mupload_".$this->formStamp] as $fileArray) $fileArray["deleted"] = true; } $result = array(); $uploadDir = $this->pageObject->pSetEdit->getLinkPrefix($this->field); $searchStr = ""; foreach ($filesArray as $file) { if(isset($_SESSION["mupload_".$this->formStamp][$file["name"]])) { $sessionFile = $_SESSION["mupload_".$this->formStamp][$file["name"]]["file"]; $searchStr .= $file["name"].",!"; $result[] = array("name" => $sessionFile["name"], "usrName" => $file["name"], "size" => $sessionFile["size"], "type" => $sessionFile["type"] ); if($this->pageObject->pSetEdit->getCreateThumbnail($this->field) && $sessionFile["thumbnail"] != "") { $lastIndex = count($result) - 1; $result[$lastIndex]["thumbnail"] = $sessionFile["thumbnail"]; $result[$lastIndex]["thumbnail_type"] = $sessionFile["thumbnail_type"]; $result[$lastIndex]["thumbnail_size"] = $sessionFile["thumbnail_size"]; } $_SESSION["mupload_".$this->formStamp][$file["name"]]["deleted"] = false; } } if(count($result) > 0) { $result[0]["searchStr"] = $searchStr.":sStrEnd"; $this->webValue = my_json_encode_unescaped_unicode($result); } else $this->webValue = ""; } } else $this->webValue = false; if(!($this->webValue===false)) { $avalues[$this->field] = $this->webValue; } } public function showDBValue($value, $keyLink) { $imageValue = ""; $this->initUploadHandler(); $this->upload_handler->tkeys = $keyLink; $filesArray = my_json_decode($value); if(!is_array($filesArray) || count($filesArray) == 0) { if($value == "") $filesArray = array(); else { $uploadedFile = $this->upload_handler->get_file_object($value); if(is_null($uploadedFile)) $filesArray = array(); else $filesArray = array($uploadedFile); } } foreach ($filesArray as $imageFile) { $userFile = $this->upload_handler->buildUserFile($imageFile); if($this->pageObject->pSetEdit->getViewFormat($this->field) == FORMAT_FILE) { $imageValue .= ($imageValue != "" ? "
" : ""); $imageValue .= '' .runner_htmlspecialchars($imageFile["usrName"] != "" ? $imageFile["usrName"] : $imageFile["name"]).''; } else if(CheckImageExtension($imageFile["name"])) { $imageValue .= ($imageValue != "" ? "
" : ""); if($this->pageObject->pSetEdit->showThumbnail($this->field)) { $thumbname = $userFile["thumbnail_url"]; $imageValue .= ""; $imageValue .= "pageObject->pSetEdit->getImageWidth($this->field); $imageValue .=($imgWidth ? " width=".$imgWidth : ""); $imgHeight = $this->pageObject->pSetEdit->getImageHeight($this->field); $imageValue .=($imgHeight ? " height=".$imgHeight : ""); } $imageValue .= " border=0"; if($this->is508) $imageValue .= " alt=\"".runner_htmlspecialchars($userFile["name"])."\""; $imageValue .= " src=\"".runner_htmlspecialchars($userFile["thumbnail_url"])."\">"; } else { $imageValue .= "pageObject->pSetEdit->getImageWidth($this->field); $imageValue.=($imgWidth ? " width=".$imgWidth : ""); $imgHeight = $this->pageObject->pSetEdit->getImageHeight($this->field); $imageValue .=($imgHeight ? " height=".$imgHeight : ""); $imageValue .= " border=0"; if($this->is508) $imageValue.= " alt=\"".runner_htmlspecialchars($userFile["name"])."\""; $imageValue .= " src=\"".runner_htmlspecialchars($userFile["url"])."\">"; } } } return $imageValue; } function SQLWhere($SearchFor, $strSearchOption, $SearchFor2, $etype, $isSuggest) { $baseResult = $this->baseSQLWhere($strSearchOption); if($baseResult === false) return ""; if($baseResult != "") return $baseResult; if(IsCharType($this->type)) { if(!$this->pageObject->cipherer->isFieldPHPEncrypted($this->field)) $gstrField = $this->pageObject->pSetEdit->isEnableUpper(GetFullFieldName($this->field, "", false)); else $gstrField = GetFullFieldName($this->field, "", false); } elseif($strSearchOption=="Contains" || $strSearchOption=="Starts with") { $gstrField = db_field2char(GetFullFieldName($this->field, "", false), $this->type); } else { $gstrField = GetFullFieldName($this->field, "", false); } $ret=""; if ($strSearchOption=="Contains" || $strSearchOption=="Starts with") $SearchFor = db_escape_likepattern($SearchFor); if($strSearchOption=="Contains") $SearchFor = "%".$SearchFor."%"; else if($strSearchOption=="Starts with") $SearchFor = $SearchFor."%"; if($strSearchOption=="Contains" || $strSearchOption=="Starts with" || $strSearchOption == "Equals") return $this->buildWhere($gstrField, $SearchFor, $strSearchOption == "Equals"); return ""; } function buildWhere($gstrField, $value, $equals = false) { $likeVal = db_prepare_string('%searchStr":"'.$value.':sStrEnd"%'); $notLikeVal = db_prepare_string($value); if(IsCharType($this->type)) { $likeVal = $this->pageObject->pSetEdit->isEnableUpper($likeVal); $notLikeVal = $this->pageObject->pSetEdit->isEnableUpper($notLikeVal); } $testSymbols = "'[{%'"; return "((".$gstrField." ".$this->like." ".$testSymbols." and ".$gstrField." ".$this->like." ".$likeVal.") or (". $gstrField." not ".$this->like." ".$testSymbols." and ".$gstrField." ".($equals ? "=" : $this->like)." ".$notLikeVal."))"; } /** * Form the control specified search options array and built the control's search options markup * @param String selOpt The search option value * @param Boolean not It indicates if the search option negation is set * @param Boolean both It indicates if the control needs 'NOT'-options * @return String A string containing options markup */ function getSearchOptions($selOpt, $not, $both) { $optionsArray = array(); $isPHPEncripted = $this->pageObject->cipherer->isFieldPHPEncrypted($this->field); if(!$isPHPEncripted){ $optionsArray[] = CONTAINS; $optionsArray[] = EQUALS; } $optionsArray[] = EMPTY_SEARCH; if($both) { if(!$isPHPEncripted){ $optionsArray[] = NOT_CONTAINS; $optionsArray[] = NOT_EQUALS; } $optionsArray[] = NOT_EMPTY; } return $this->buildSearchOptions($optionsArray, $selOpt, $not, $both); } /** * Fill the response array with the suggest values * * @param String value * Note: the real value is preceeded with "_" so It's necessary to remove * the first character before json decoding . Also It's important to add "_" * to the beggining of the response suggest value because Searchsuggest * expects that it starts with this character. * @param String searchFor * @param &Array response * @param &Array row */ function suggestValue($value, $searchFor, &$response, &$row) { if(!$value) return; //value is preceeded with "_" $value = substr($value, 1); $filesArray = my_json_decode($value); if(!is_array($filesArray) || count($filesArray) == 0) $response[ "_".$value ] = "_".$value; else { for($i = 0; $i < count($filesArray) && count($response) < 10; $i++) { if($this->pageObject->pSetEdit->getNCSearch()) $pos = stripos($filesArray[$i]["usrName"], $searchFor); else $pos = strpos($filesArray[$i]["usrName"], $searchFor); if($pos !== false) $response[ "_".$filesArray[$i]["usrName"] ] = "_".$filesArray[$i]["usrName"]; } } } function afterSuccessfulSave() { if(count($_SESSION["mupload_".$this->formStamp]) > 0) { foreach($_SESSION["mupload_".$this->formStamp] as $fileArray) { if($fileArray["deleted"] === true) { $file_path = $fileArray["file"]["name"]; if (is_file($file_path)) { unlink($file_path); } if ($fileArray["file"]["thumbnail"] != "") { $file_path = $fileArray["file"]["thumbnail"]; if (is_file($file_path)) { unlink($file_path); } } } } } unset($_SESSION["mupload_".$this->formStamp]); } } ?>