$longitud_maxima ) { $valido = 0; echo aicc_admin_notice( __( 'Title is too long.', 'ai-content-creator' ), 'error' ); } return $valido; } function aicc_sanea_titulo( $titulo ) { // El título es obligatorio, se limita su longitud // Por lo demás, se aceptan comillas, código, etc., es legítimo. $longitud_maxima = 255; $titulo = trim ( $titulo ); if ( ! $titulo ) { $titulo = ''; } elseif ( mb_strlen( $titulo, 'UTF-8' ) > $longitud_maxima ) { $titulo = mb_substr( $titulo, 0, $longitud_maxima, 'UTF-8' ); } // Filtra caracteres nulos $titulo = preg_replace( '/\x00/', '', $titulo ); return $titulo; } function aicc_sanea_contexto( $contexto ) { // Nada que filtrar, se aceptan comillas, código, etc. $longitud_maxima = 512; $contexto = trim ( $contexto ); if ( mb_strlen( $contexto, 'UTF-8' ) > $longitud_maxima ) { $contexto = mb_substr( $contexto, 0, $longitud_maxima, 'UTF-8' ); echo aicc_admin_notice( __( 'Additional guidelines are too long.', 'ai-content-creator' ), 'warn' ); } // Filtra caracteres nulos $contexto = preg_replace( '/\x00/', '', $contexto ); return $contexto; } function aicc_sanea_directrices_adicionales( $directrices_adicionales ) { // Nada que filtrar, se aceptan comillas, código, etc. $longitud_maxima = 1024; $directrices_adicionales = trim ( $directrices_adicionales ); if ( mb_strlen( $directrices_adicionales, 'UTF-8' ) > $longitud_maxima ) { $directrices_adicionales = mb_substr( $directrices_adicionales, 0, $longitud_maxima, 'UTF-8' ); echo aicc_admin_notice( __( 'Additional guidelines are too long.', 'ai-content-creator' ), 'warn' ); } // Filtra caracteres nulos $directrices_adicionales = preg_replace( '/\x00/', '', $directrices_adicionales ); return $directrices_adicionales; } function aicc_modelos() { // Lista de modelos habilitados $modelos = array( 'gpt-4', 'gpt-3.5-turbo', 'text-davinci-003', //'text-davinci-002', //'davinci', //'ai21', 'abcdatos-postproduccion', 'abcdatos-creacion', 'abcdatos-seo' ); return $modelos; } function aicc_denominacion_modelo( $modelo ) { $nombre = $modelo; if ( 'gpt-4' == $modelo ) { $nombre = 'GPT-4'; } elseif ( 'gpt-3.5-turbo' == $modelo ) { $nombre = 'GPT-3.5'; } elseif ( 'text-davinci-003' == $modelo ) { $nombre = 'Davinci-3'; } elseif ( 'text-davinci-002' == $modelo ) { $nombre = 'Davinci-2'; } elseif ( 'davinci' == $modelo ) { $nombre = 'Davinci'; } elseif ( 'ai21' == $modelo ) { $nombre = 'AI21'; } return $nombre; } function aicc_es_valido_modelo( $modelo ) { // Devuelve un booleano indicando si el modelo es correcto o no return in_array( $modelo, aicc_modelos() ); } function aicc_modelo_disabled( $modelo ) { // Devuelve la cadena ' disabled' si un modelo no está habiltado $disabled = ''; if ( ! aicc_es_valido_modelo( $modelo ) ) { $disabled = ' disabled'; } return $disabled; } function aicc_tonos() { // Códigos de tonos y su representación legible en idiomas // No le pongo tilde a los códigos para diferenciarlos del texto formal $tonos = array( 'neutral' => __( 'neutral', 'ai-content-creator' ), 'informativo' => __( 'informative', 'ai-content-creator' ), 'seguro' => __( 'secure', 'ai-content-creator' ), 'persuasivo' => __( 'persuasive', 'ai-content-creator' ), 'humoristico' => __( 'humorous', 'ai-content-creator' ), 'emocional' => __( 'emotional', 'ai-content-creator' ), 'entusiasta' => __( 'enthusiastic', 'ai-content-creator' ), 'optimista' => __( 'optimistic', 'ai-content-creator' ), 'objetivo' => __( 'objective', 'ai-content-creator' ), 'simple' => __( 'simple', 'ai-content-creator' ), 'formal' => __( 'formal', 'ai-content-creator' ), 'informal' => __( 'informal', 'ai-content-creator' ), 'preocupado' => __( 'concerned', 'ai-content-creator' ), 'critico' => __( 'critical', 'ai-content-creator' ), 'triste' => __( 'sad', 'ai-content-creator' ) ); return $tonos; } function aicc_es_valido_tono( $tono ) { // Devuelve un booleano indicando si el tono es correcto o no return in_array( $tono, aicc_tonos() ); } function aicc_filtra_accion( $accion ) { // Filtra las acciones permitidas en la página de artículos if ( 'reprocesar' != $accion && 'reprocesar_todo' != $accion //&& 'regenerar' != $accion // Lo hace en la página de crear, ya no en la de articulos && 'ver' != $accion && 'borrar' != $accion && 'borrar_confirmado' != $accion && 'borrador' != $accion ) { $accion =''; } return $accion; } function aicc_tipo_modelo( $modelo ) { if ( 'gpt-3.5-turbo' == $modelo || 'gpt-4' == $modelo || 'gpt-4-32k' == $modelo ){ $tipo ='chat'; } else { $tipo ='completar'; } return $tipo; } function aicc_admin_notice ( $message, $type = 'error', $dismissible = false ) { // Vieja función que requiere echo // $type: The type of message. This can be one of 'error', 'notice', or 'warning'. If no type is provided, the function will default to 'error'. // Hay cuatro tipos de notificaciones: notice-success, notice-warning, notice-error y notice-info. Puedes usar la clase que se ajuste a tus necesidades. if ( 'notice' == $type ) { $type ='notice-info'; } elseif ( 'success' == $type ) { $type ='notice-success'; } elseif ( 'warning' == $type ) { $type ='notice-warning'; } else { $type ='notice-error'; } $html_error = '

'. $message . "

\n"; return $html_error; } function aicc_mostrar_notificacion ( $message, $type = 'error', $dismissible = false ) { if ( 'notice' == $type ) { $type ='notice-info'; } elseif ( 'success' == $type ) { $type ='notice-success'; } elseif ( 'warning' == $type ) { $type ='notice-warning'; } else { $type ='notice-error'; } $html_error = '
\n"; echo $html_error; } function aicc_cabecera_pagina_admin() { echo '

' . "\n"; echo '';
	echo esc_attr( __( 'AI Content Creator', 'ai-content-creator' ) );
	echo '' . "\n"; echo __( 'AI Content Creator', 'ai-content-creator' ); echo "

\n"; }