芝麻web文件管理V1.00
编辑当前文件:/home/freeclou/optimyar/wp-content/plugins/wpdiscuz/forms/wpdFormAttr/Row.php
"full", "row_order" => 0 ]; $data = wp_parse_args($args, $defaultArgs); $columnType = $data["column_type"]; $rowOrder = $data["row_order"]; ?>
" class="fas fa-columns wpd-form-columns-">
|
">
|
">
renderRow($id, $data); ?>
"> renderCol($id, "left", $leftData); $this->renderCol($id, "right", $rightData); } else { $fullData = $args["full"]; $this->renderCol($id, "full", $fullData); } ?>
allowedFieldsType(); foreach ($fields as $name => $fieldData) { $fieldType = $fieldData["type"]; if (!in_array($fieldType, $allowedFieldsType, true)) { continue; } $field = call_user_func($fieldType . "::getInstance"); $field->dashboardFormHtml($id, $colName, $name, $fieldData); } } ?>
" class="fas fa-plus">
renderFrontFormCol("left", $left, $options, $currentUser, $uniqueId, $isMainForm); $this->renderFrontFormCol("right", $right, $options, $currentUser, $uniqueId, $isMainForm); } else { $full = $args["full"]; $this->renderFrontFormCol("full", $full, $options, $currentUser, $uniqueId, $isMainForm); } ?>
allowedFieldsType(); foreach ($fields as $fieldName => $fieldData) { $fieldType = $fieldData["type"]; if (in_array($fieldType, $allowedFieldsType, true)) { $field = call_user_func($fieldType . "::getInstance"); $field->frontFormHtml($fieldName, $fieldData, $options, $currentUser, $uniqueId, $isMainForm); } } ?>
callFieldSanitize($data["full"], $fields); $data["column_type"] = "full"; } else if (isset($data["left"]) || isset($data["right"])) { $data["left"] = isset($data["left"]) && is_array($data["left"]) ? $data["left"] : []; $data["right"] = isset($data["right"]) && is_array($data["right"]) ? $data["right"] : []; $data["left"] = $this->callFieldSanitize($data["left"], $fields); $data["right"] = $this->callFieldSanitize($data["right"], $fields); $data["column_type"] = "two"; } else { return null; } if (isset($data["row_order"])) { $data["row_order"] = intval($data["row_order"]); } else { $data["row_order"] = "0"; } return $data; } private function callFieldSanitize($args, &$fields) { $allowedFieldsType = $this->allowedFieldsType(); foreach ($args as $fieldName => $fieldData) { if (!isset($fieldData["type"]) && !$fieldData["type"]) { continue; } $callableClass = str_replace("\\\\", "\\", $fieldData["type"]); if (in_array($callableClass, $allowedFieldsType, true) && is_callable($callableClass . "::getInstance")) { $field = call_user_func($callableClass . "::getInstance"); $fieldNewName = $this->changeFieldName($fieldName, $fieldData); if ($fieldNewName !== $fieldName) { $args = $this->chageArrayKey($args, $fieldName, $fieldNewName); $args[$fieldNewName] = $field->sanitizeFieldData($fieldData); $fields[$fieldNewName] = $field->sanitizeFieldData($fieldData); } else { $args[$fieldName] = $field->sanitizeFieldData($fieldData); $fields[$fieldName] = $field->sanitizeFieldData($fieldData); } } } return $args; } private function changeFieldName($fieldName, $fieldData) { if (isset($fieldData["meta_key"])) { $metaKey = sanitize_text_field(trim($fieldData["meta_key"])); if ($metaKey && $fieldName !== $metaKey) { $newName = str_replace(['-', ' '], '_', remove_accents($metaKey)); $this->replaceMetaKeyInDB($fieldName, $newName, $fieldData); $this->chagePostRatingKey($fieldName, $newName, $fieldData); $fieldName = $newName; } } return $fieldName; } private function chagePostRatingKey($oldName, $newName, $fieldData) { if (str_replace("\\\\", "\\", $fieldData["type"]) === "wpdFormAttr\Field\RatingField" && isset($fieldData["meta_key_replace"]) && $fieldData["meta_key_replace"]) { if ($wpdiscuzRatingCount = $this->getPostRatingMeta()) { foreach ($wpdiscuzRatingCount as $k => $row) { $metaData = maybe_unserialize($row["meta_value"]); if (is_array($metaData) && key_exists($oldName, $metaData)) { $metaData = $this->chageArrayKey($metaData, $oldName, $newName); update_post_meta($row["post_id"], wpdFormConst::WPDISCUZ_RATING_COUNT, $metaData); } } } } } private function replaceMetaKeyInDB($oldKey, $newKey, $fieldData) { global $wpdb; if (isset($fieldData["meta_key_replace"]) && $fieldData["meta_key_replace"]) { $sql = $wpdb->prepare("UPDATE `{$wpdb->commentmeta}` SET `meta_key` = %s WHERE `meta_key` = %s", $newKey, $oldKey); $wpdb->query($sql); $sql = $wpdb->prepare("UPDATE `{$wpdb->postmeta}` SET `meta_key` = %s WHERE `meta_key` = %s", wpdFormConst::WPDISCUZ_RATING_SEPARATE_AVG . $newKey, wpdFormConst::WPDISCUZ_RATING_SEPARATE_AVG . $oldKey); $wpdb->query($sql); $sql = $wpdb->prepare("UPDATE `{$wpdb->postmeta}` SET `meta_key` = %s WHERE `meta_key` = %s", wpdFormConst::WPDISCUZ_RATING_SEPARATE_COUNT . $newKey, wpdFormConst::WPDISCUZ_RATING_SEPARATE_COUNT . $oldKey); $wpdb->query($sql); } } private function getPostRatingMeta() { global $wpdb; $sql = $wpdb->prepare("SELECT `post_id`,`meta_value` FROM `{$wpdb->postmeta}` WHERE `meta_key` = %s", wpdFormConst::WPDISCUZ_RATING_COUNT); return $wpdb->get_results($sql, ARRAY_A); } private function chageArrayKey($array, $oldKey, $newKey) { $keys = array_keys($array); $values = array_values($array); $oldKeyIndex = array_search($oldKey, $keys); if (is_numeric($oldKeyIndex)) { $keys[$oldKeyIndex] = $newKey; $array = array_combine($keys, $values); } return $array; } public function allowedFieldsType() { $allowedFieldsType = [ "wpdFormAttr\Field\DefaultField\Name", "wpdFormAttr\Field\DefaultField\Email", "wpdFormAttr\Field\DefaultField\Website", "wpdFormAttr\Field\DefaultField\Captcha", "wpdFormAttr\Field\DefaultField\Submit", "wpdFormAttr\Field\AgreementCheckbox", "wpdFormAttr\Field\CheckboxField", "wpdFormAttr\Field\ColorField", "wpdFormAttr\Field\CookiesConsent", "wpdFormAttr\Field\DateField", "wpdFormAttr\Field\HTMLField", "wpdFormAttr\Field\NumberField", "wpdFormAttr\Field\RadioField", "wpdFormAttr\Field\RatingField", "wpdFormAttr\Field\SelectField", "wpdFormAttr\Field\TextAreaField", "wpdFormAttr\Field\TextField", "wpdFormAttr\Field\UrlField", ]; return apply_filters("wpdiscuz_allowed_form_field", $allowedFieldsType); } }