format = EDIT_FORMAT_FILE; } 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); $multiple = ""; if( !isIOS() && $this->pageObject->pSetEdit->getMaxNumberOfFiles($this->field) != 1 ) $multiple = "multiple "; 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, $legacy1, $legacy2, &$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)) { if( $this->connection->dbType == nDATABASE_Informix ) { if(IsTextType($this->pageObject->pSetEdit->getFieldType($this->field))) $blobfields[] = $this->field; } $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) ) { $gstrField = $this->getFieldSQLDecrypt(); if( !$this->pageObject->cipherer->isFieldPHPEncrypted($this->field) && $this->pageObject->pSetEdit->getNCSearch() ) { // search is case-insensitive $gstrField = $this->connection->upper( $gstrField ); } } elseif( $strSearchOption == "Contains" || $strSearchOption == "Starts with" ) { $gstrField = $this->connection->field2char($this->getFieldSQLDecrypt(), $this->type); } else { $gstrField = $this->getFieldSQLDecrypt(); } if( $strSearchOption == "Contains" || $strSearchOption == "Starts with" ) $SearchFor = $this->connection->escapeLIKEpattern( $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 = $this->connection->prepareString('%searchStr":"'.$value.':sStrEnd"%'); $notLikeVal = $this->connection->prepareString($value); if( IsCharType($this->type) && $this->pageObject->pSetEdit->getNCSearch() ) { // search is case-insensitive $likeVal = $this->connection->upper( $likeVal ); $notLikeVal = $this->connection->upper( $notLikeVal); } if( $this->connection->dbType == nDATABASE_Access ) $testSymbols = "'_{%}_'"; else $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]); } /** * @param String fieldValue * @return String */ function getFieldValueCopy( $fieldValue ) { $this->initUploadHandler(); $uploadFolder = $this->pageObject->pSetEdit->getUploadFolder( $this->field ); $absoluteUploadDirPath = $this->pageObject->pSetEdit->getFinalUploadFolder( $this->field ); $filesData = my_json_decode( $fieldValue ); if( !is_array($filesData) || count($filesData) == 0 ) return $fieldValue; foreach( $filesData as $idx => $fileData ) { $info = $this->upload_handler->pathinfo_local( $fileData["usrName"] ); $newFieldName = $this->upload_handler->tempnam_sfx( $absoluteUploadDirPath, $info['filename'], $info['extension'] ); runner_copy_file( getabspath($fileData["name"]), $absoluteUploadDirPath.$newFieldName ); $filesData[ $idx ]["name"] = $uploadFolder.$newFieldName; if( $this->pageObject->pSetEdit->getCreateThumbnail( $this->field ) ) { $thumbnailPrefix = $this->pageObject->pSetEdit->getStrThumbnail( $this->field ); $newThumbName = $this->upload_handler->tempnam_sfx( $absoluteUploadDirPath, $thumbnailPrefix.$info['filename'], $info['extension'] ); runner_copy_file( getabspath($fileData["thumbnail"]), $absoluteUploadDirPath.$newThumbName ); $filesData[ $idx ]["thumbnail"] = $uploadFolder.$newThumbName; } } return my_json_encode( $filesData ); } } ?>