Plugin Directory

Changeset 3285449


Ignore:
Timestamp:
05/01/2025 09:00:24 AM (8 months ago)
Author:
beautifulplugins
Message:

Release version refs/tags/v2.0.0

Location:
ai-content-writer/trunk
Files:
146 added
22 edited

Legend:

Unmodified
Added
Removed
  • ai-content-writer/trunk/ai-content-writer.php

    r3265465 r3285449  
    33 * Plugin Name:       AI Content Writer
    44 * Plugin URI:        https://beautifulplugins.com/ai-content-writer/
    5  * Description:       AI Content Writer is a powerful AI tool that helps you generate high-quality content for your blog or website in minutes using advanced AI technologies like ChatGPT, OpenAI, Google Gemini, and more.
    6  * Version:           1.6.0
     5 * Description:       AI Content Writer helps you automatically generate high-quality, SEO-optimized content for your blog or website in minutes using advanced AI technologies like ChatGPT, OpenAI, Google Gemini, and more.
     6 * Version:           2.0.0
    77 * Requires at least: 5.0
    88 * Requires PHP:      7.4
     
    1313 * Text Domain:       ai-content-writer
    1414 * Domain Path:       /languages
    15  * Tested up to:      6.7
     15 * Tested up to:      6.8
    1616 *
    1717 * @package AIContentWriter
     
    4747 */
    4848function ai_content_writer() {
    49     return Plugin::create( __FILE__, '1.6.0' );
     49    return Plugin::create( __FILE__, '2.0.0' );
    5050}
    5151
  • ai-content-writer/trunk/assets/css/aicw-admin-rtl.css

    r3252952 r3285449  
    1 .form-field .input-group{margin-top:5px}.form-field .input-group.range_slider{display:flex;gap:.25rem}.form-field input[type=color],.form-field input[type=date],.form-field input[type=datetime-local],.form-field input[type=datetime],.form-field input[type=email],.form-field input[type=month],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=time],.form-field input[type=url],.form-field input[type=week],.form-field select,.form-field textarea{border:1px solid #ddd;max-width:100%;padding:4px 8px;width:100%}.form-field input[type=range]{width:100%}.form-field abbr{text-decoration:none}.aicw-wrap .d-flex{display:flex}.aicw-wrap .flex-justify__space-between{justify-content:space-between}.aicw-wrap .w-100{width:100%}.aicw-wrap .text-center{text-align:center}.aicw-wrap .gap-1{gap:1rem}.aicw-wrap .aicw__body{display:flex;gap:1.25rem}.aicw-wrap .aicw__body__content{width:100%}.aicw-wrap .aicw__body__content.has-padding{background:#fff;padding:20px}.aicw-wrap .aicw__body__aside{display:flex;flex-direction:column;gap:1.25rem}.aicw-wrap #aicw-form{display:flex;gap:1.25rem}.aicw-wrap #aicw-form .aicw-form__content{width:70%}.aicw-wrap #aicw-form .aicw-form__content.has-padding{background:#fff;padding:20px}.aicw-wrap #aicw-form .aicw-form__aside{display:flex;flex-direction:column;gap:1.25rem;width:30%}@media(max-width:768px){.aicw-wrap #aicw-form{flex-direction:column}.aicw-wrap #aicw-form .aicw-form__aside,.aicw-wrap #aicw-form .aicw-form__content{width:100%}.aicw-wrap .page-title-action,.aicw-wrap .page-title-action:focus{font-size:12px;line-height:1.3rem;padding:5px 10px}}.aicw-card{background:#fff;border:1px solid #ddd;margin-bottom:1.25rem}.aicw-card__title{margin:0}.aicw-card__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-card__body,.aicw-card__footer{padding:10px 20px}.aicw-sidebar{background:#fff;border:1px solid #ddd}.aicw-sidebar h2{margin:0}.aicw-sidebar__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-sidebar__header sup{color:#4caf50;font-size:12px}.aicw-sidebar__body{padding:10px 20px}.aicw-sidebar__footer{border-top:1px solid #ddd;display:flex;justify-content:flex-end;padding:10px 20px}.aicw-sidebar__footer .submit{margin:0;padding:0}.aicw-sidebar .spinner{display:none;height:20px;vertical-align:middle;visibility:hidden;width:20px}.aicw-sidebar .spinner.active{display:inline-block;visibility:visible}.aicw-sidebar .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw-sidebar .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .heading sup{color:#f60;font-size:12px}.aicw_posts .actions,.aicw_posts .status{width:10%}.aicw_posts .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw_posts .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .progress-indicator{background:#eee;border-radius:5px;height:20px;overflow:hidden;width:100%}.aicw_posts .progress-indicator .progress-indicator-inner{background:#4caf50;color:#fff;font-weight:700;height:100%;line-height:20px;text-align:center}.aicw-total-processed .aicw-post-count{font-size:3rem;font-weight:700;margin:0}.aicw-total-processed .published-posts{background:rgba(54,162,235,.05)}.aicw-total-processed .published-posts .aicw-post-count{color:#36a2eb}.aicw-total-processed .pending-posts{background:rgba(255,99,132,.05)}.aicw-total-processed .pending-posts .aicw-post-count{color:#ff6384}.aicw-total-processed .draft-posts{background:rgba(255,206,86,.05)}.aicw-total-processed .draft-posts .aicw-post-count{color:#ffce56}@media(max-width:576px){.aicw-total-processed{flex-direction:column;gap:0!important}}.aicw-settings #aicw-form .aicw-form__content{background:rgba(0,0,0,0);padding-bottom:0;padding-right:0;padding-top:0}.aicw-settings .field-group{display:flex;flex-direction:row;gap:1rem;margin-bottom:20px}.aicw-settings .field-group .field-label{min-width:180px;width:180px}.aicw-settings .field-group.field-section{flex-direction:column;gap:0}.aicw__sidebar__header small,.wp-heading-inline small{color:#888;font-size:13px;vertical-align:super}.aicw-featured-image__content{padding-left:20px}.aicw-featured-image__images{display:-ms-grid;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.aicw-featured-image__images .aicw-featured-image__image{align-items:center;border:2px solid #ddd;display:flex;justify-content:center;padding:8px;transition:transform .2s ease}.aicw-featured-image__images .aicw-featured-image__image:hover{-ms-transform:scale(1.05);transform:scale(1.05)}.aicw-featured-image__images .aicw-featured-image__image img{border-radius:4px;display:block;height:auto;max-width:100%}.aicw-featured-image__images .aicw-featured-image__image.selected{border:2px solid #007cba}.aicw-featured-image__images .aicw-featured-image__image-label{cursor:pointer;display:block;text-align:center}.aicw-featured-image__images .aicw-featured-image__image-label input[type=radio]{display:none}.aicw-featured-image__footer{margin-top:50px}
     1.form-field{margin-bottom:.5rem}.form-field .input-group{margin-top:5px}.form-field .input-group.range_slider{display:flex;gap:.25rem}.form-field input[type=color],.form-field input[type=date],.form-field input[type=datetime-local],.form-field input[type=datetime],.form-field input[type=email],.form-field input[type=month],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=time],.form-field input[type=url],.form-field input[type=week],.form-field select,.form-field textarea{border:1px solid #ddd;max-width:100%;padding:4px 8px;width:100%}.form-field input[type=range]{width:100%}.form-field abbr{text-decoration:none}.form-field:last-child{margin-bottom:0}.aicw-wrap .d-flex{display:flex}.aicw-wrap .flex-justify__space-between{justify-content:space-between}.aicw-wrap .w-100{width:100%}.aicw-wrap .text-center{text-align:center}.aicw-wrap .gap-1{gap:1rem}.aicw-wrap .display-none{display:none}.aicw-wrap .aicw__body{display:flex;gap:1.25rem}.aicw-wrap .aicw__body__content{width:100%}.aicw-wrap .aicw__body__content.has-padding{background:#fff;padding:20px}.aicw-wrap .aicw__body__aside{display:flex;flex-direction:column;gap:1.25rem}.aicw-wrap #aicw-form{display:flex;gap:1.25rem;width:100%}.aicw-wrap #aicw-form .aicw-form__content{width:70%}.aicw-wrap #aicw-form .aicw-form__content.has-padding{background:#fff;padding:20px}.aicw-wrap #aicw-form .aicw-form__aside{display:flex;flex-direction:column;gap:1.25rem;width:30%}@media(max-width:768px){.aicw-wrap #aicw-form{flex-direction:column}.aicw-wrap #aicw-form .aicw-form__aside,.aicw-wrap #aicw-form .aicw-form__content{width:100%}.aicw-wrap .page-title-action,.aicw-wrap .page-title-action:focus{font-size:12px;line-height:1.3rem;padding:5px 10px}}.aicw-card{background:#fff;border:1px solid #ddd;margin-bottom:1.25rem}.aicw-card__title{margin:0}.aicw-card__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-card__body,.aicw-card__footer{padding:10px 20px}.aicw-sidebar{background:#fff;border:1px solid #ddd}.aicw-sidebar h2{margin:0}.aicw-sidebar__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-sidebar__header sup{color:#4caf50;font-size:12px}.aicw-sidebar__body{padding:10px 20px}.aicw-sidebar__footer{border-top:1px solid #ddd;display:flex;justify-content:flex-end;padding:10px 20px}.aicw-sidebar__footer .submit{margin:0;padding:0}.aicw-sidebar .spinner{display:none;height:20px;vertical-align:middle;visibility:hidden;width:20px}.aicw-sidebar .spinner.active{display:inline-block;visibility:visible}.aicw-sidebar .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw-sidebar .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .heading sup{color:#f60;font-size:12px}.aicw_posts .actions,.aicw_posts .status{width:10%}.aicw_posts .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw_posts .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .progress-indicator{background:#eee;border-radius:5px;height:20px;overflow:hidden;width:100%}.aicw_posts .progress-indicator .progress-indicator-inner{background:#4caf50;color:#fff;font-weight:700;height:100%;line-height:20px;text-align:center}.aicw-total-processed .aicw-post-count{font-size:3rem;font-weight:700;margin:0}.aicw-total-processed .published-posts{background:rgba(54,162,235,.05)}.aicw-total-processed .published-posts .aicw-post-count{color:#36a2eb}.aicw-total-processed .pending-posts{background:rgba(255,99,132,.05)}.aicw-total-processed .pending-posts .aicw-post-count{color:#ff6384}.aicw-total-processed .draft-posts{background:rgba(255,206,86,.05)}.aicw-total-processed .draft-posts .aicw-post-count{color:#ffce56}@media(max-width:576px){.aicw-total-processed{flex-direction:column;gap:0!important}}.aicw-settings #aicw-form .aicw-form__content{background:rgba(0,0,0,0);padding-bottom:0;padding-right:0;padding-top:0}.aicw-settings .field-group{display:flex;flex-direction:row;gap:1rem;margin-bottom:20px}.aicw-settings .field-group .field-label{min-width:180px;width:180px}.aicw-settings .field-group.field-section{flex-direction:column;gap:0}.aicw__sidebar__header small,.wp-heading-inline small{color:#888;font-size:13px;vertical-align:super}.aicw-featured-image__content{padding-left:20px}.aicw-featured-image__images{display:-ms-grid;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.aicw-featured-image__images .aicw-featured-image__image{align-items:center;border:2px solid #ddd;display:flex;justify-content:center;padding:8px;transition:transform .2s ease}.aicw-featured-image__images .aicw-featured-image__image:hover{-ms-transform:scale(1.05);transform:scale(1.05)}.aicw-featured-image__images .aicw-featured-image__image img{border-radius:4px;display:block;height:auto;max-width:100%}.aicw-featured-image__images .aicw-featured-image__image.selected{border:2px solid #007cba}.aicw-featured-image__images .aicw-featured-image__image-label{cursor:pointer;display:block;text-align:center}.aicw-featured-image__images .aicw-featured-image__image-label input[type=radio]{display:none}.aicw-featured-image__footer{margin-top:50px}
  • ai-content-writer/trunk/assets/css/aicw-admin.asset.php

    r3252952 r3285449  
    1 <?php return array('dependencies' => array(), 'version' => '9cedb5b731929f5b17a2');
     1<?php return array('dependencies' => array(), 'version' => 'ac8b5c693ab3101e0344');
  • ai-content-writer/trunk/assets/css/aicw-admin.css

    r3252952 r3285449  
    1 .form-field .input-group{margin-top:5px}.form-field .input-group.range_slider{display:flex;gap:.25rem}.form-field input[type=color],.form-field input[type=date],.form-field input[type=datetime-local],.form-field input[type=datetime],.form-field input[type=email],.form-field input[type=month],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=time],.form-field input[type=url],.form-field input[type=week],.form-field select,.form-field textarea{border:1px solid #ddd;max-width:100%;padding:4px 8px;width:100%}.form-field input[type=range]{width:100%}.form-field abbr{text-decoration:none}.aicw-wrap .d-flex{display:flex}.aicw-wrap .flex-justify__space-between{justify-content:space-between}.aicw-wrap .w-100{width:100%}.aicw-wrap .text-center{text-align:center}.aicw-wrap .gap-1{gap:1rem}.aicw-wrap .aicw__body{display:flex;gap:1.25rem}.aicw-wrap .aicw__body__content{width:100%}.aicw-wrap .aicw__body__content.has-padding{background:#fff;padding:20px}.aicw-wrap .aicw__body__aside{display:flex;flex-direction:column;gap:1.25rem}.aicw-wrap #aicw-form{display:flex;gap:1.25rem}.aicw-wrap #aicw-form .aicw-form__content{width:70%}.aicw-wrap #aicw-form .aicw-form__content.has-padding{background:#fff;padding:20px}.aicw-wrap #aicw-form .aicw-form__aside{display:flex;flex-direction:column;gap:1.25rem;width:30%}@media(max-width:768px){.aicw-wrap #aicw-form{flex-direction:column}.aicw-wrap #aicw-form .aicw-form__aside,.aicw-wrap #aicw-form .aicw-form__content{width:100%}.aicw-wrap .page-title-action,.aicw-wrap .page-title-action:focus{font-size:12px;line-height:1.3rem;padding:5px 10px}}.aicw-card{background:#fff;border:1px solid #ddd;margin-bottom:1.25rem}.aicw-card__title{margin:0}.aicw-card__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-card__body,.aicw-card__footer{padding:10px 20px}.aicw-sidebar{background:#fff;border:1px solid #ddd}.aicw-sidebar h2{margin:0}.aicw-sidebar__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-sidebar__header sup{color:#4caf50;font-size:12px}.aicw-sidebar__body{padding:10px 20px}.aicw-sidebar__footer{border-top:1px solid #ddd;display:flex;justify-content:flex-end;padding:10px 20px}.aicw-sidebar__footer .submit{margin:0;padding:0}.aicw-sidebar .spinner{display:none;height:20px;vertical-align:middle;visibility:hidden;width:20px}.aicw-sidebar .spinner.active{display:inline-block;visibility:visible}.aicw-sidebar .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw-sidebar .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .heading sup{color:#f60;font-size:12px}.aicw_posts .actions,.aicw_posts .status{width:10%}.aicw_posts .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw_posts .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .progress-indicator{background:#eee;border-radius:5px;height:20px;overflow:hidden;width:100%}.aicw_posts .progress-indicator .progress-indicator-inner{background:#4caf50;color:#fff;font-weight:700;height:100%;line-height:20px;text-align:center}.aicw-total-processed .aicw-post-count{font-size:3rem;font-weight:700;margin:0}.aicw-total-processed .published-posts{background:rgba(54,162,235,.05)}.aicw-total-processed .published-posts .aicw-post-count{color:#36a2eb}.aicw-total-processed .pending-posts{background:rgba(255,99,132,.05)}.aicw-total-processed .pending-posts .aicw-post-count{color:#ff6384}.aicw-total-processed .draft-posts{background:rgba(255,206,86,.05)}.aicw-total-processed .draft-posts .aicw-post-count{color:#ffce56}@media(max-width:576px){.aicw-total-processed{flex-direction:column;gap:0!important}}.aicw-settings #aicw-form .aicw-form__content{background:rgba(0,0,0,0);padding-bottom:0;padding-left:0;padding-top:0}.aicw-settings .field-group{display:flex;flex-direction:row;gap:1rem;margin-bottom:20px}.aicw-settings .field-group .field-label{min-width:180px;width:180px}.aicw-settings .field-group.field-section{flex-direction:column;gap:0}.aicw__sidebar__header small,.wp-heading-inline small{color:#888;font-size:13px;vertical-align:super}.aicw-featured-image__content{padding-right:20px}.aicw-featured-image__images{display:-ms-grid;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.aicw-featured-image__images .aicw-featured-image__image{align-items:center;border:2px solid #ddd;display:flex;justify-content:center;padding:8px;transition:transform .2s ease}.aicw-featured-image__images .aicw-featured-image__image:hover{-ms-transform:scale(1.05);transform:scale(1.05)}.aicw-featured-image__images .aicw-featured-image__image img{border-radius:4px;display:block;height:auto;max-width:100%}.aicw-featured-image__images .aicw-featured-image__image.selected{border:2px solid #007cba}.aicw-featured-image__images .aicw-featured-image__image-label{cursor:pointer;display:block;text-align:center}.aicw-featured-image__images .aicw-featured-image__image-label input[type=radio]{display:none}.aicw-featured-image__footer{margin-top:50px}
     1.form-field{margin-bottom:.5rem}.form-field .input-group{margin-top:5px}.form-field .input-group.range_slider{display:flex;gap:.25rem}.form-field input[type=color],.form-field input[type=date],.form-field input[type=datetime-local],.form-field input[type=datetime],.form-field input[type=email],.form-field input[type=month],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=time],.form-field input[type=url],.form-field input[type=week],.form-field select,.form-field textarea{border:1px solid #ddd;max-width:100%;padding:4px 8px;width:100%}.form-field input[type=range]{width:100%}.form-field abbr{text-decoration:none}.form-field:last-child{margin-bottom:0}.aicw-wrap .d-flex{display:flex}.aicw-wrap .flex-justify__space-between{justify-content:space-between}.aicw-wrap .w-100{width:100%}.aicw-wrap .text-center{text-align:center}.aicw-wrap .gap-1{gap:1rem}.aicw-wrap .display-none{display:none}.aicw-wrap .aicw__body{display:flex;gap:1.25rem}.aicw-wrap .aicw__body__content{width:100%}.aicw-wrap .aicw__body__content.has-padding{background:#fff;padding:20px}.aicw-wrap .aicw__body__aside{display:flex;flex-direction:column;gap:1.25rem}.aicw-wrap #aicw-form{display:flex;gap:1.25rem;width:100%}.aicw-wrap #aicw-form .aicw-form__content{width:70%}.aicw-wrap #aicw-form .aicw-form__content.has-padding{background:#fff;padding:20px}.aicw-wrap #aicw-form .aicw-form__aside{display:flex;flex-direction:column;gap:1.25rem;width:30%}@media(max-width:768px){.aicw-wrap #aicw-form{flex-direction:column}.aicw-wrap #aicw-form .aicw-form__aside,.aicw-wrap #aicw-form .aicw-form__content{width:100%}.aicw-wrap .page-title-action,.aicw-wrap .page-title-action:focus{font-size:12px;line-height:1.3rem;padding:5px 10px}}.aicw-card{background:#fff;border:1px solid #ddd;margin-bottom:1.25rem}.aicw-card__title{margin:0}.aicw-card__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-card__body,.aicw-card__footer{padding:10px 20px}.aicw-sidebar{background:#fff;border:1px solid #ddd}.aicw-sidebar h2{margin:0}.aicw-sidebar__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-sidebar__header sup{color:#4caf50;font-size:12px}.aicw-sidebar__body{padding:10px 20px}.aicw-sidebar__footer{border-top:1px solid #ddd;display:flex;justify-content:flex-end;padding:10px 20px}.aicw-sidebar__footer .submit{margin:0;padding:0}.aicw-sidebar .spinner{display:none;height:20px;vertical-align:middle;visibility:hidden;width:20px}.aicw-sidebar .spinner.active{display:inline-block;visibility:visible}.aicw-sidebar .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw-sidebar .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .heading sup{color:#f60;font-size:12px}.aicw_posts .actions,.aicw_posts .status{width:10%}.aicw_posts .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw_posts .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .progress-indicator{background:#eee;border-radius:5px;height:20px;overflow:hidden;width:100%}.aicw_posts .progress-indicator .progress-indicator-inner{background:#4caf50;color:#fff;font-weight:700;height:100%;line-height:20px;text-align:center}.aicw-total-processed .aicw-post-count{font-size:3rem;font-weight:700;margin:0}.aicw-total-processed .published-posts{background:rgba(54,162,235,.05)}.aicw-total-processed .published-posts .aicw-post-count{color:#36a2eb}.aicw-total-processed .pending-posts{background:rgba(255,99,132,.05)}.aicw-total-processed .pending-posts .aicw-post-count{color:#ff6384}.aicw-total-processed .draft-posts{background:rgba(255,206,86,.05)}.aicw-total-processed .draft-posts .aicw-post-count{color:#ffce56}@media(max-width:576px){.aicw-total-processed{flex-direction:column;gap:0!important}}.aicw-settings #aicw-form .aicw-form__content{background:rgba(0,0,0,0);padding-bottom:0;padding-left:0;padding-top:0}.aicw-settings .field-group{display:flex;flex-direction:row;gap:1rem;margin-bottom:20px}.aicw-settings .field-group .field-label{min-width:180px;width:180px}.aicw-settings .field-group.field-section{flex-direction:column;gap:0}.aicw__sidebar__header small,.wp-heading-inline small{color:#888;font-size:13px;vertical-align:super}.aicw-featured-image__content{padding-right:20px}.aicw-featured-image__images{display:-ms-grid;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.aicw-featured-image__images .aicw-featured-image__image{align-items:center;border:2px solid #ddd;display:flex;justify-content:center;padding:8px;transition:transform .2s ease}.aicw-featured-image__images .aicw-featured-image__image:hover{-ms-transform:scale(1.05);transform:scale(1.05)}.aicw-featured-image__images .aicw-featured-image__image img{border-radius:4px;display:block;height:auto;max-width:100%}.aicw-featured-image__images .aicw-featured-image__image.selected{border:2px solid #007cba}.aicw-featured-image__images .aicw-featured-image__image-label{cursor:pointer;display:block;text-align:center}.aicw-featured-image__images .aicw-featured-image__image-label input[type=radio]{display:none}.aicw-featured-image__footer{margin-top:50px}
  • ai-content-writer/trunk/assets/js/aicw-admin.asset.php

    r3249260 r3285449  
    1 <?php return array('dependencies' => array(), 'version' => '922fc08bdb9fccdf7678');
     1<?php return array('dependencies' => array(), 'version' => '12bf826ac0129fb4e6d7');
  • ai-content-writer/trunk/assets/js/aicw-admin.js

    r3249260 r3285449  
    1 !function(e){"use strict";e(document).ready((function(){e('.aicw-featured-image__image-label input[type="radio"]').on("change",(function(){e(".aicw-featured-image__image").removeClass("selected"),e(this).closest(".aicw-featured-image__image").addClass("selected")})),e("#generate_content").on("click",(function(){var t=e(".aicw__sidebar__footer .spinner");e(this).closest("form")[0].checkValidity()&&t.addClass("active").show()})),e('.range_slider input[type="range"]').on("input",(function(){var t=e(this).val();e(this).next(".range_slider_value").text(t)})),e(".aicw_delete_temp_post").on("click",(function(t){t.preventDefault();var a=e(this).data("post-id");confirm("Are you sure you want to delete this post? This action cannot be undone.")&&e.ajax({url:aicw_object.ajax_url,type:"POST",data:{action:"aicw_delete_temp_post",post_id:a,nonce:aicw_object.nonce},success:function(e){e.success?(alert(e.data.message),location.reload()):alert(e.data.message)},error:function(){alert("Something went wrong. Please try again later.")}})}))}))}(jQuery);
     1!function(e){"use strict";e(document).ready((function(){e('.aicw-featured-image__image-label input[type="radio"]').on("change",(function(){e(".aicw-featured-image__image").removeClass("selected"),e(this).closest(".aicw-featured-image__image").addClass("selected")})),e("#generate_content").on("click",(function(){var t=e(".aicw__sidebar__footer .spinner");e(this).closest("form")[0].checkValidity()&&t.addClass("active").show()}));var t=e("#campaign_type");function a(t){e(".hide-if__"+t).hide(),e(".show-if__"+t).show()}a(t.val()),t.on("change",(function(){a(t.val())})),e('.range_slider input[type="range"]').on("input",(function(){var t=e(this).val();e(this).next(".range_slider_value").text(t)})),e(".aicw_delete_temp_post").on("click",(function(t){t.preventDefault();var a=e(this).data("post-id");confirm("Are you sure you want to delete this post? This action cannot be undone.")&&e.ajax({url:aicw_object.ajax_url,type:"POST",data:{action:"aicw_delete_temp_post",post_id:a,nonce:aicw_object.nonce},success:function(e){e.success?(alert(e.data.message),location.reload()):alert(e.data.message)},error:function(){alert("Something went wrong. Please try again later.")}})}))}))}(jQuery);
  • ai-content-writer/trunk/includes/Admin/Actions.php

    r3252952 r3285449  
    4545        }
    4646
     47        $type     = isset( $_POST['campaign_type'] ) ? sanitize_text_field( wp_unslash( $_POST['campaign_type'] ) ) : 'articles';
    4748        $title    = isset( $_POST['title'] ) ? sanitize_text_field( wp_unslash( $_POST['title'] ) ) : '';
    4849        $keywords = isset( $_POST['keywords'] ) ? wp_kses_post( wp_unslash( $_POST['keywords'] ) ) : '';
    4950        $status   = isset( $_POST['status'] ) ? sanitize_text_field( wp_unslash( $_POST['status'] ) ) : 'publish';
     51        $rss_feed = isset( $_POST['rss_feed_link'] ) ? sanitize_text_field( wp_unslash( $_POST['rss_feed_link'] ) ) : '';
    5052
    5153        // Validate the input fields.
     
    5658        }
    5759
    58         if ( empty( $keywords ) ) {
     60        if ( empty( $type ) ) {
     61            ai_content_writer()->flash_notice( esc_html__( 'Campaign type is required. Please select the campaign type.', 'ai-content-writer' ), 'error' );
     62            wp_safe_redirect( $referer );
     63            exit();
     64        }
     65
     66        if ( empty( $keywords ) && 'rss-feed' !== $type ) {
    5967            ai_content_writer()->flash_notice( esc_html__( 'Keywords are required. Please enter the keywords.', 'ai-content-writer' ), 'error' );
     68            wp_safe_redirect( $referer );
     69            exit();
     70        }
     71
     72        if ( 'rss-feed' === $type && empty( $rss_feed ) ) {
     73            ai_content_writer()->flash_notice( esc_html__( 'RSS feed link is required. Please enter the RSS feed link.', 'ai-content-writer' ), 'error' );
    6074            wp_safe_redirect( $referer );
    6175            exit();
     
    7993
    8094        // Update the campaign meta.
     95        $host                  = isset( $_POST['campaign_host'] ) ? sanitize_text_field( wp_unslash( $_POST['campaign_host'] ) ) : 'https://bing.com';
     96        $source                = isset( $_POST['campaign_source'] ) ? sanitize_text_field( wp_unslash( $_POST['campaign_source'] ) ) : '';
    8197        $target                = isset( $_POST['target'] ) ? sanitize_text_field( wp_unslash( $_POST['target'] ) ) : '';
    8298        $generate_thumb        = isset( $_POST['generate_thumbnail'] ) ? 'yes' : '';
     
    84100        $completed_post_status = isset( $_POST['completed_post_status'] ) ? sanitize_text_field( wp_unslash( $_POST['completed_post_status'] ) ) : 'publish';
    85101
     102        update_post_meta( $campaign_id, '_aicw_campaign_type', $type );
     103        update_post_meta( $campaign_id, '_aicw_campaign_host', $host );
     104        update_post_meta( $campaign_id, '_aicw_campaign_source', $source );
     105        update_post_meta( $campaign_id, '_aicw_rss_feed_link', $rss_feed );
    86106        update_post_meta( $campaign_id, '_aicw_campaign_target', $target );
    87107        update_post_meta( $campaign_id, '_aicw_generate_thumbnail', $generate_thumb );
     
    115135
    116136        $id       = isset( $_POST['id'] ) ? absint( wp_unslash( $_POST['id'] ) ) : 0;
     137        $type     = isset( $_POST['campaign_type'] ) ? sanitize_text_field( wp_unslash( $_POST['campaign_type'] ) ) : 'articles';
    117138        $title    = isset( $_POST['title'] ) ? sanitize_text_field( wp_unslash( $_POST['title'] ) ) : '';
    118139        $keywords = isset( $_POST['keywords'] ) ? wp_kses_post( wp_unslash( $_POST['keywords'] ) ) : '';
    119140        $status   = isset( $_POST['status'] ) ? sanitize_text_field( wp_unslash( $_POST['status'] ) ) : 'publish';
     141        $rss_feed = isset( $_POST['rss_feed_link'] ) ? sanitize_text_field( wp_unslash( $_POST['rss_feed_link'] ) ) : '';
    120142
    121143        // Validate the input fields.
     
    132154        }
    133155
    134         if ( empty( $keywords ) ) {
     156        if ( empty( $type ) ) {
     157            ai_content_writer()->flash_notice( esc_html__( 'Campaign type is required. Please select the campaign type.', 'ai-content-writer' ), 'error' );
     158            wp_safe_redirect( $referer );
     159            exit();
     160        }
     161
     162        if ( empty( $keywords ) && 'rss-feed' !== $type ) {
    135163            ai_content_writer()->flash_notice( esc_html__( 'Keywords are required. Please enter the keywords.', 'ai-content-writer' ), 'error' );
     164            wp_safe_redirect( $referer );
     165            exit();
     166        }
     167
     168        if ( 'rss-feed' === $type && empty( $rss_feed ) ) {
     169            ai_content_writer()->flash_notice( esc_html__( 'RSS feed link is required. Please enter the RSS feed link.', 'ai-content-writer' ), 'error' );
    136170            wp_safe_redirect( $referer );
    137171            exit();
     
    155189
    156190        // Update the campaign meta.
     191        $host                  = isset( $_POST['campaign_host'] ) ? sanitize_text_field( wp_unslash( $_POST['campaign_host'] ) ) : 'https://bing.com';
     192        $source                = isset( $_POST['campaign_source'] ) ? sanitize_text_field( wp_unslash( $_POST['campaign_source'] ) ) : '';
    157193        $target                = isset( $_POST['target'] ) ? sanitize_text_field( wp_unslash( $_POST['target'] ) ) : '';
    158194        $generate_thumb        = isset( $_POST['generate_thumbnail'] ) ? 'yes' : '';
     
    160196        $completed_post_status = isset( $_POST['completed_post_status'] ) ? sanitize_text_field( wp_unslash( $_POST['completed_post_status'] ) ) : 'publish';
    161197
     198        update_post_meta( $campaign_id, '_aicw_campaign_type', $type );
     199        update_post_meta( $campaign_id, '_aicw_campaign_host', $host );
     200        update_post_meta( $campaign_id, '_aicw_campaign_source', $source );
     201        update_post_meta( $campaign_id, '_aicw_rss_feed_link', $rss_feed );
    162202        update_post_meta( $campaign_id, '_aicw_campaign_target', $target );
    163203        update_post_meta( $campaign_id, '_aicw_generate_thumbnail', $generate_thumb );
     
    186226        }
    187227
     228        /*
     229         * Allow third-party plugins to modify the settings before saving.
     230         *
     231         * @param array $settings The settings array.
     232         *
     233         * @since 1.7.0
     234         */
     235        do_action( 'aicw_before_update_settings', $_POST );
     236
     237        $allowed_hosts          = isset( $_POST['aicw_allowed_hosts'] ) ? sanitize_textarea_field( wp_unslash( $_POST['aicw_allowed_hosts'] ) ) : 'https://www.bing.com';
     238        $default_host           = isset( $_POST['aicw_default_host'] ) ? sanitize_text_field( wp_unslash( $_POST['aicw_default_host'] ) ) : 'https://www.bing.com/';
    188239        $api_model              = isset( $_POST['aicw_api_model'] ) ? sanitize_text_field( wp_unslash( $_POST['aicw_api_model'] ) ) : '';
    189240        $gemini_api_key         = isset( $_POST['aicw_gemini_api_key'] ) ? sanitize_text_field( wp_unslash( $_POST['aicw_gemini_api_key'] ) ) : '';
     
    194245        $pexels_api_key         = isset( $_POST['aicw_pexels_api_key'] ) ? sanitize_text_field( wp_unslash( $_POST['aicw_pexels_api_key'] ) ) : '';
    195246
     247        if ( 'https://www.bing.com' === $allowed_hosts ) {
     248            update_option( 'aicw_allowed_hosts', $allowed_hosts );
     249        }
     250        update_option( 'aicw_default_host', $default_host );
    196251        update_option( 'aicw_api_model', $api_model );
    197252        update_option( 'aicw_gemini_api_key', $gemini_api_key );
  • ai-content-writer/trunk/includes/Admin/views/add-campaign.php

    r3249260 r3285449  
    44 *
    55 * @since 1.0.0
    6  * @package CoPilot/Admin/Views
     6 * @package AIContentWriter/Admin/Views
    77 */
    88
     
    2121    </div>
    2222    <div class="aicw__body">
    23         <form id="aicw-form" class="inline-fields" method="POST" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>">
     23        <form id="aicw-form" method="POST" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>">
    2424            <div class="aicw-form__content">
    2525                <div class="aicw-card">
    2626                    <div class="aicw-card__body">
    2727                        <div class="form-field">
    28                             <label for="title"><strong><?php esc_html_e( 'Title', 'ai-content-writer' ); ?></strong><abbr title="required">*</abbr></label>
     28                            <label for="title"><strong><?php esc_html_e( 'Title', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label>
    2929                            <div class="input-group">
    3030                                <input type="text" name="title" id="title" class="regular-text" placeholder="Enter campaign title" required="required"/>
     
    4242                    <div class="aicw-card__body">
    4343                        <div class="form-field">
    44                             <label for="campaign_source"><strong><?php esc_html_e( 'Campaign Source', 'ai-content-writer' ); ?></strong><abbr title="required">*</abbr></label>
     44                            <label for="campaign_type"><strong><?php esc_html_e( 'Campaign Type', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label>
     45                            <div class="input-group">
     46                                <select name="campaign_type" id="campaign_type">
     47                                    <option value="articles"><?php esc_html_e( 'Articles', 'ai-content-writer' ); ?></option>
     48                                    <option value="rss-feed"><?php esc_html_e( 'RSS Feed', 'ai-content-writer' ); ?></option>
     49                                    <option value="gemini"><?php esc_html_e( 'Gemini', 'ai-content-writer' ); ?></option>
     50                                    <option value="chatgpt"><?php esc_html_e( 'ChatGPT', 'ai-content-writer' ); ?></option>
     51                                </select>
     52                            </div>
     53                            <p class="description">
     54                                <?php esc_html_e( 'Select the campaign type to generate the campaign content.', 'ai-content-writer' ); ?>
     55                            </p>
     56                        </div>
     57
     58                        <div class="form-field show-if__articles hide-if__rss-feed hide-if__gemini hide-if__chatgpt">
     59                            <label for="campaign_host"><strong><?php esc_html_e( 'Campaign Host', 'ai-content-writer' ); ?></strong></label>
     60                            <div class="input-group">
     61                                <input type="text" name="campaign_host" id="campaign_host" class="regular-text" placeholder="<?php esc_attr_e( 'https://www.bing.com/', 'ai-content-writer' ); ?>" value="<?php echo esc_attr( get_option( 'aicw_default_host', 'https://www.bing.com/' ) ); ?>"/>
     62                            </div>
     63                            <p class="description">
     64                                <?php esc_html_e( 'Enter the campaign host URL. This will be used to scrape the content from the allowed hosts. Configure the allowed hosts in the settings page. Currently, we allow only Bing as a host.', 'ai-content-writer' ); ?>
     65                            </p>
     66                        </div>
     67
     68                        <div class="form-field show-if__articles hide-if__rss-feed show-if__gemini show-if__chatgpt">
     69                            <label for="campaign_source"><strong><?php esc_html_e( 'Campaign Source', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label>
    4570                            <div class="input-group">
    4671                                <select name="campaign_source" id="campaign_source">
     
    5277                            </p>
    5378                        </div>
    54                         <div class="form-field">
    55                             <label for="keywords"><strong><?php esc_html_e( 'Keywords', 'ai-content-writer' ); ?></strong><abbr title="required">*</abbr></label>
     79                        <div class="form-field show-if__articles hide-if__rss-feed show-if__gemini show-if__chatgpt">
     80                            <label for="keywords"><strong><?php esc_html_e( 'Keywords', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label>
    5681                            <div class="input-group">
    5782                                <textarea name="keywords" id="keywords" class="regular-text" placeholder="<?php esc_attr_e( 'keyword, keyword 2, keyword 3, ...', 'ai-content-writer' ); ?>"></textarea>
     
    5984                            <p class="description">
    6085                                <?php esc_html_e( 'Enter the keywords to generate the campaign content. Separate each keyword with a comma.', 'ai-content-writer' ); ?>
     86                            </p>
     87                        </div>
     88                        <div class="form-field hide-if__articles show-if__rss-feed hide-if__gemini hide-if__chatgpt display-none">
     89                            <label for="rss_feed_link"><strong><?php esc_html_e( 'RSS Feed Link', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label>
     90                            <div class="input-group">
     91                                <input type="text" name="rss_feed_link" id="rss_feed_link" class="regular-text" placeholder="<?php esc_attr_e( 'https://www.example.com/feed', 'ai-content-writer' ); ?>"/>
     92                            </div>
     93                            <p class="description">
     94                                <?php esc_html_e( 'Enter the RSS feed link. This will be used to generate the content from the RSS feed.', 'ai-content-writer' ); ?>
    6195                            </p>
    6296                        </div>
     
    73107                            <label for="target"><strong><?php esc_html_e( 'Campaign Target', 'ai-content-writer' ); ?></strong></label>
    74108                            <div class="input-group range_slider">
    75                                 <input type="range" name="target" id="target" min="1" max="<?php echo esc_attr( aicw_get_campaign_target_max_limit() ); ?>" value="<?php echo esc_attr( '1' ); ?>"/>
    76                                 <span class="range_slider_value"><?php echo esc_html( '1' ); ?></span>
     109                                <input type="range" name="target" id="target" min="1" max="<?php echo esc_attr( aicw_get_campaign_target_max_limit() ); ?>" value="<?php echo esc_attr( '5' ); ?>"/>
     110                                <span class="range_slider_value"><?php echo esc_html( '5' ); ?></span>
    77111                            </div>
    78112                            <p class="description">
     
    113147                            <label for="post_type">
    114148                                <strong><?php esc_html_e( 'Post Type', 'ai-content-writer' ); ?></strong>
    115                                 <abbr title="required">*</abbr>
     149                                <abbr class="required" title="required">*</abbr>
    116150                            </label>
    117151                            <div class="input-group">
     
    138172                            <label for="completed_post_status">
    139173                                <strong><?php esc_html_e( 'Completed Post Status', 'ai-content-writer' ); ?></strong>
    140                                 <abbr title="required">*</abbr>
     174                                <abbr class="required" title="required">*</abbr>
    141175                            </label>
    142176                            <div class="input-group">
  • ai-content-writer/trunk/includes/Admin/views/edit-campaign.php

    r3249260 r3285449  
    2121        <p><?php esc_html_e( 'You can edit the campaign here. This form will update the campaign.', 'ai-content-writer' ); ?></p>
    2222    </div>
    23 
    2423    <div class="aicw__body">
    2524        <form id="aicw-form" method="POST" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>">
     
    2827                    <div class="aicw-card__body">
    2928                        <div class="form-field">
    30                             <label for="title"><strong><?php esc_html_e( 'Title', 'ai-content-writer' ); ?></strong><abbr title="required">*</abbr></label>
     29                            <label for="title"><strong><?php esc_html_e( 'Title', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label>
    3130                            <div class="input-group">
    3231                                <input type="text" name="title" id="title" class="regular-text" placeholder="Enter campaign title" value="<?php echo esc_attr( $campaign->post_title ); ?>" required="required"/>
     
    3837                    </div>
    3938                </div>
    40 
    4139                <div class="aicw-card">
    4240                    <div class="aicw-card__header">
     
    4543                    <div class="aicw-card__body">
    4644                        <div class="form-field">
    47                             <?php $campaign_source = get_post_meta( $campaign->ID, 'aicw_campaign_source', true ); ?>
    48                             <label for="campaign_source"><strong><?php esc_html_e( 'Campaign Source', 'ai-content-writer' ); ?></strong><abbr title="required">*</abbr></label>
     45                            <?php $campaign_type = get_post_meta( $campaign->ID, '_aicw_campaign_type', true ); ?>
     46                            <label for="campaign_type"><strong><?php esc_html_e( 'Campaign Type', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label>
     47                            <div class="input-group">
     48                                <select name="campaign_type" id="campaign_type">
     49                                    <option value="articles" <?php selected( 'articles', $campaign_type ); ?>><?php esc_html_e( 'Articles', 'ai-content-writer' ); ?></option>
     50                                    <option value="rss-feed" <?php selected( 'rss-feed', $campaign_type ); ?>><?php esc_html_e( 'RSS Feed', 'ai-content-writer' ); ?></option>
     51                                    <option value="gemini" <?php selected( 'gemini', $campaign_type ); ?>><?php esc_html_e( 'Gemini', 'ai-content-writer' ); ?></option>
     52                                    <option value="chatgpt" <?php selected( 'chatgpt', $campaign_type ); ?>><?php esc_html_e( 'ChatGPT', 'ai-content-writer' ); ?></option>
     53                                </select>
     54                            </div>
     55                            <p class="description">
     56                                <?php esc_html_e( 'Select the campaign type to generate the campaign content.', 'ai-content-writer' ); ?>
     57                            </p>
     58                        </div>
     59
     60                        <div class="form-field show-if__articles hide-if__rss-feed hide-if__gemini hide-if__chatgpt">
     61                            <label for="campaign_host"><strong><?php esc_html_e( 'Campaign Host', 'ai-content-writer' ); ?></strong></label>
     62                            <div class="input-group">
     63                                <input type="text" name="campaign_host" id="campaign_host" class="regular-text" placeholder="<?php esc_attr_e( 'https://www.bing.com/', 'ai-content-writer' ); ?>" value="<?php echo esc_attr( get_post_meta( $campaign->ID, '_aicw_campaign_host', true ) ); ?>"/>
     64                            </div>
     65                            <p class="description">
     66                                <?php esc_html_e( 'Enter the campaign host URL. This will be used to scrape the content from the allowed hosts. Configure the allowed hosts in the settings page. Currently, we allow only Bing as a host.', 'ai-content-writer' ); ?>
     67                            </p>
     68                        </div>
     69
     70                        <div class="form-field show-if__articles hide-if__rss-feed  show-if__gemini show-if__chatgpt">
     71                            <?php $campaign_source = get_post_meta( $campaign->ID, '_aicw_campaign_source', true ); ?>
     72                            <label for="campaign_source"><strong><?php esc_html_e( 'Campaign Source', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label>
    4973                            <div class="input-group">
    5074                                <select name="campaign_source" id="campaign_source">
     
    5680                            </p>
    5781                        </div>
    58                         <div class="form-field">
    59                             <label for="keywords"><strong><?php esc_html_e( 'Keywords', 'ai-content-writer' ); ?></strong><abbr title="required">*</abbr></label>
    60                             <div class="input-group">
    61                                 <textarea name="keywords" id="keywords" class="regular-text" placeholder="<?php esc_attr_e( 'keyword, keyword 2, keyword 3, ...', 'ai-content-writer' ); ?>" required><?php echo wp_kses_post( $campaign->post_content ); ?></textarea>
     82                        <div class="form-field show-if__articles hide-if__rss-feed show-if__gemini show-if__chatgpt">
     83                            <label for="keywords"><strong><?php esc_html_e( 'Keywords', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label>
     84                            <div class="input-group">
     85                                <textarea name="keywords" id="keywords" class="regular-text" placeholder="<?php esc_attr_e( 'keyword, keyword 2, keyword 3, ...', 'ai-content-writer' ); ?>"><?php echo wp_kses_post( $campaign->post_content ); ?></textarea>
    6286                            </div>
    6387                            <p class="description">
    6488                                <?php esc_html_e( 'Enter the keywords to generate the campaign content. Separate each keyword with a comma.', 'ai-content-writer' ); ?>
     89                            </p>
     90                        </div>
     91                        <div class="form-field hide-if__articles show-if__rss-feed hide-if__gemini hide-if__chatgpt display-none">
     92                            <label for="rss_feed_link"><strong><?php esc_html_e( 'RSS Feed Link', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label>
     93                            <div class="input-group">
     94                                <input type="text" name="rss_feed_link" id="rss_feed_link" class="regular-text" placeholder="<?php esc_attr_e( 'https://www.example.com/feed', 'ai-content-writer' ); ?>" value="<?php echo esc_attr( get_post_meta( $campaign->ID, '_aicw_rss_feed_link', true ) ); ?>"/>
     95                            </div>
     96                            <p class="description">
     97                                <?php esc_html_e( 'Enter the RSS feed link. This will be used to generate the content from the RSS feed.', 'ai-content-writer' ); ?>
    6598                            </p>
    6699                        </div>
     
    148181                </div>
    149182            </div>
    150 
    151183            <div class="aicw-form__aside">
    152184                <div class="aicw-sidebar">
     
    191223                    <div class="aicw-sidebar__header">
    192224                        <h2>
    193                             <?php esc_html_e( 'Publish content as', 'ai-content-writer' ); ?>
     225                            <?php esc_html_e( 'Publish Content as', 'ai-content-writer' ); ?>
    194226                            <sup><?php esc_html_e( 'Type', 'ai-content-writer' ); ?></sup>
    195227                        </h2>
     
    199231                            <label for="post_type">
    200232                                <strong><?php esc_html_e( 'Post Type', 'ai-content-writer' ); ?></strong>
    201                                 <abbr title="required">*</abbr>
     233                                <abbr class="required" title="required">*</abbr>
    202234                            </label>
    203235                            <div class="input-group">
     
    224256                            <label for="completed_post_status">
    225257                                <strong><?php esc_html_e( 'Completed Post Status', 'ai-content-writer' ); ?></strong>
    226                                 <abbr title="required">*</abbr>
     258                                <abbr class="required" title="required">*</abbr>
    227259                            </label>
    228260                            <div class="input-group">
     
    314346    </div>
    315347</div>
    316 
    317 
  • ai-content-writer/trunk/includes/Admin/views/help.php

    r3249260 r3285449  
    133133                    <div class="aicw-sidebar__body">
    134134                        <ul>
    135                             <li>
     135                            <li>&rarr;
     136                                <a href="https://wordpress.org/plugins/send-emails/" target="_blank">
     137                                    <?php esc_html_e( 'Send Emails – Newsletters, Automation & Email Marketing for WordPress', 'ai-content-writer' ); ?>
     138                                </a>
     139                            </li>
     140                            <li>&rarr;
     141                                <a href="https://wordpress.org/plugins/essential-elements/" target="_blank">
     142                                    <?php esc_html_e( 'Essential Elements for WordPress', 'ai-content-writer' ); ?>
     143                                </a>
     144                            </li>
     145                            <li>&rarr;
    136146                                <a href="https://wordpress.org/plugins/advanced-shortcodes/" target="_blank">
    137                                     <?php esc_html_e( 'Advanced Shortcodes', 'ai-content-writer' ); ?>
     147                                    <?php esc_html_e( 'Shortcodes – Advanced Shortcode Manager', 'ai-content-writer' ); ?>
     148                                </a>
     149                            </li>
     150                            <li>&rarr;
     151                                <a href="https://wordpress.org/plugins/post-showcase/" target="_blank">
     152                                    <?php esc_html_e( 'Post Showcase', 'ai-content-writer' ); ?>
     153                                </a>
     154                            </li>
     155                            <li>&rarr;
     156                                <a href="https://wordpress.org/plugins/sms-manager/" target="_blank">
     157                                    <?php esc_html_e( 'SMS Manager – WooCommerce SMS Notifications', 'ai-content-writer' ); ?>
     158                                </a>
     159                            </li>
     160                            <li>&rarr;
     161                                <a href="https://wordpress.org/plugins/invoice-payment/" target="_blank">
     162                                    <?php esc_html_e( 'Invoice Payment', 'ai-content-writer' ); ?>
    138163                                </a>
    139164                            </li>
  • ai-content-writer/trunk/includes/Admin/views/settings.php

    r3249260 r3285449  
    2828                <div class="field-group">
    2929                    <div class="field-label">
    30                         <label for="aicw_api_model"><strong><?php esc_html_e( 'API Model:', 'ai-content-writer' ); ?></strong></label>
    31                     </div>
    32                     <div class="field">
    33                         <select name="aicw_api_model" id="aicw_api_model" class="regular-text">
    34                             <option value="gemini" <?php selected( get_option( 'aicw_api_model' ), 'gemini' ); ?>><?php esc_html_e( 'Gemini', 'ai-content-writer' ); ?></option>
    35                             <option value="chatgpt" <?php selected( get_option( 'aicw_api_model' ), 'chatgpt' ); ?>><?php esc_html_e( 'ChatGPT', 'ai-content-writer' ); ?></option>
    36                         </select>
    37                         <p class="description"><?php esc_html_e( 'Select the AI model to generate content.', 'ai-content-writer' ); ?></p>
    38                     </div>
     30                        <label for="aicw_allowed_hosts"><strong><?php esc_html_e( 'Allowed Hosts:', 'ai-content-writer' ); ?></strong></label>
     31                    </div>
     32                    <div class="field">
     33                        <textarea name="aicw_allowed_hosts" id="aicw_allowed_hosts" class="regular-text" rows="3" placeholder="<?php esc_html_e( 'https://bing.com', 'ai-content-writer' ); ?>" disabled><?php echo esc_textarea( get_option( 'aicw_allowed_hosts' ) ); ?></textarea>
     34                        <p class="description"><?php esc_html_e( 'Enter the allowed hosts. Each host should be on a new line. Example: https://bing.com. Currently, we allow only Bing as a host.', 'ai-content-writer' ); ?></p>
     35                    </div>
     36                </div>
     37                <div class="field-group">
     38                    <div class="field-label">
     39                        <label for="aicw_default_host"><strong><?php esc_html_e( 'Default Host:', 'ai-content-writer' ); ?></strong></label>
     40                    </div>
     41                    <div class="field">
     42                        <input type="text" name="aicw_default_host" id="aicw_default_host" class="regular-text" placeholder="<?php esc_html_e( 'https://www.bing.com/', 'ai-content-writer' ); ?>" value="<?php echo esc_attr( get_option( 'aicw_default_host', 'https://www.bing.com/' ) ); ?>" disabled/>
     43                        <p class="description"><?php esc_html_e( 'Enter the default host URL. This will be used as a default host while generating the content.', 'ai-content-writer' ); ?></p>
     44                    </div>
     45                </div>
     46                <div class="field-group field-section">
     47                    <h3><?php esc_html_e( 'API Settings', 'ai-content-writer' ); ?></h3>
     48                    <p><?php esc_html_e( 'The following options are the API settings for the AI Content Writer plugin.', 'ai-content-writer' ); ?></p>
    3949                </div>
    4050                <div class="field-group">
     
    7080                    </div>
    7181                </div>
     82                <div class="field-group field-section">
     83                    <h3><?php esc_html_e( 'Image Settings', 'ai-content-writer' ); ?></h3>
     84                    <p><?php esc_html_e( 'The following options are the image settings for the AI Content Writer plugin.', 'ai-content-writer' ); ?></p>
     85                </div>
     86                <div class="field-group">
     87                    <div class="field-label">
     88                        <label for="aicw_pexels_api_key"><strong><?php esc_html_e( 'Pexels API Key:', 'ai-content-writer' ); ?></strong></label>
     89                    </div>
     90                    <div class="field">
     91                        <input type="text" name="aicw_pexels_api_key" id="aicw_pexels_api_key" class="regular-text" value="<?php echo esc_attr( get_option( 'aicw_pexels_api_key' ) ); ?>"/>
     92                        <p class="description"><?php esc_html_e( 'Enter your Pexels API key. This key is required to generate thumbnails images for the AI generated content.', 'ai-content-writer' ); ?></p>
     93                    </div>
     94                </div>
     95                <div class="field-group field-section">
     96                    <h3><?php esc_html_e( 'Miscellaneous Settings', 'ai-content-writer' ); ?></h3>
     97                    <p><?php esc_html_e( 'The following options are the miscellaneous settings for the AI Content Writer instant content generation feature.', 'ai-content-writer' ); ?></p>
     98                </div>
     99                <div class="field-group">
     100                    <div class="field-label">
     101                        <label for="aicw_api_model"><strong><?php esc_html_e( 'API Model:', 'ai-content-writer' ); ?></strong></label>
     102                    </div>
     103                    <div class="field">
     104                        <select name="aicw_api_model" id="aicw_api_model" class="regular-text">
     105                            <option value="gemini" <?php selected( get_option( 'aicw_api_model' ), 'gemini' ); ?>><?php esc_html_e( 'Gemini', 'ai-content-writer' ); ?></option>
     106                            <option value="chatgpt" <?php selected( get_option( 'aicw_api_model' ), 'chatgpt' ); ?>><?php esc_html_e( 'ChatGPT', 'ai-content-writer' ); ?></option>
     107                        </select>
     108                        <p class="description"><?php esc_html_e( 'Select the AI model to generate content using the instant content Generation feature.', 'ai-content-writer' ); ?></p>
     109                    </div>
     110                </div>
     111                <div class="field-group">
     112                    <div class="field-label">
     113                        <strong><?php esc_html_e( 'Enable Image Generation:', 'ai-content-writer' ); ?></strong>
     114                    </div>
     115                    <div class="field">
     116                        <label for="aicw_enable_img_generation">
     117                            <input name="aicw_enable_img_generation" id="aicw_enable_img_generation" type="checkbox" value="yes" <?php checked( get_option( 'aicw_enable_img_generation' ), 'yes' ); ?>>
     118                            <?php esc_html_e( 'Enable Thumbnail Image Generation', 'ai-content-writer' ); ?>
     119                        </label>
     120                        <p class="description"><?php esc_html_e( 'Enable to activate the thumbnail image generation feature. AI generated content will have a featured image. This feature requires the Pexels API key.', 'ai-content-writer' ); ?></p>
     121                    </div>
     122                </div>
    72123                <div class="field-group">
    73124                    <div class="field-label">
     
    82133                    </div>
    83134                </div>
    84                 <div class="field-group field-section">
    85                     <h3><?php esc_html_e( 'Image Settings', 'ai-content-writer' ); ?></h3>
    86                     <p><?php esc_html_e( 'The following options are the image settings for the AI Content Writer plugin.', 'ai-content-writer' ); ?></p>
    87                 </div>
    88                 <div class="field-group">
    89                     <div class="field-label">
    90                         <strong><?php esc_html_e( 'Enable Image Generation:', 'ai-content-writer' ); ?></strong>
    91                     </div>
    92                     <div class="field">
    93                         <label for="aicw_enable_img_generation">
    94                             <input name="aicw_enable_img_generation" id="aicw_enable_img_generation" type="checkbox" value="yes" <?php checked( get_option( 'aicw_enable_img_generation' ), 'yes' ); ?>>
    95                             <?php esc_html_e( 'Enable Thumbnail Image Generation', 'ai-content-writer' ); ?>
    96                         </label>
    97                         <p class="description"><?php esc_html_e( 'Enable to activate the thumbnail image generation feature. AI generated content will have a featured image. This feature requires the Pexels API key.', 'ai-content-writer' ); ?></p>
    98                     </div>
    99                 </div>
    100                 <div class="field-group">
    101                     <div class="field-label">
    102                         <label for="aicw_pexels_api_key"><strong><?php esc_html_e( 'Pexels API Key:', 'ai-content-writer' ); ?></strong></label>
    103                     </div>
    104                     <div class="field">
    105                         <input type="text" name="aicw_pexels_api_key" id="aicw_pexels_api_key" class="regular-text" value="<?php echo esc_attr( get_option( 'aicw_pexels_api_key' ) ); ?>"/>
    106                         <p class="description"><?php esc_html_e( 'Enter your Pexels API key. This key is required to generate thumbnails images for the AI generated content.', 'ai-content-writer' ); ?></p>
    107                     </div>
    108                 </div>
     135                <?php
     136                /*
     137                 * This is a good place to add your own settings fields.
     138                 * You can use the following code to add your own settings fields:
     139                 *
     140                 * do_action( 'aicw_after_general_settings_fields' );
     141                 *
     142                 * This will allow you to add your own settings fields after the default settings.
     143                 */
     144                do_action( 'aicw_after_general_settings_fields' );
     145                ?>
    109146                <div class="field-group">
    110147                    <div class="field-submit-btn">
     
    135172                    <div class="aicw-sidebar__body">
    136173                        <ul>
    137                             <li>
     174                            <li>&rarr;
     175                                <a href="https://wordpress.org/plugins/send-emails/" target="_blank">
     176                                    <?php esc_html_e( 'Send Emails – Newsletters, Automation & Email Marketing for WordPress', 'ai-content-writer' ); ?>
     177                                </a>
     178                            </li>
     179                            <li>&rarr;
     180                                <a href="https://wordpress.org/plugins/essential-elements/" target="_blank">
     181                                    <?php esc_html_e( 'Essential Elements for WordPress', 'ai-content-writer' ); ?>
     182                                </a>
     183                            </li>
     184                            <li>&rarr;
    138185                                <a href="https://wordpress.org/plugins/advanced-shortcodes/" target="_blank">
    139                                     <?php esc_html_e( 'Advanced Shortcodes', 'ai-content-writer' ); ?>
     186                                    <?php esc_html_e( 'Shortcodes – Advanced Shortcode Manager', 'ai-content-writer' ); ?>
     187                                </a>
     188                            </li>
     189                            <li>&rarr;
     190                                <a href="https://wordpress.org/plugins/post-showcase/" target="_blank">
     191                                    <?php esc_html_e( 'Post Showcase', 'ai-content-writer' ); ?>
     192                                </a>
     193                            </li>
     194                            <li>&rarr;
     195                                <a href="https://wordpress.org/plugins/sms-manager/" target="_blank">
     196                                    <?php esc_html_e( 'SMS Manager – WooCommerce SMS Notifications', 'ai-content-writer' ); ?>
     197                                </a>
     198                            </li>
     199                            <li>&rarr;
     200                                <a href="https://wordpress.org/plugins/invoice-payment/" target="_blank">
     201                                    <?php esc_html_e( 'Invoice Payment', 'ai-content-writer' ); ?>
    140202                                </a>
    141203                            </li>
  • ai-content-writer/trunk/includes/Cron.php

    r3249260 r3285449  
    22
    33namespace AIContentWriter;
     4
     5use AIContentWriter\Campaigns\Articles;
     6use AIContentWriter\Campaigns\RSSFeed;
    47
    58defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
     
    3336     */
    3437    public function schedule_cron() {
     38        // Add a filter hook to check the campaign frequency.
     39        $frequency = apply_filters( 'aicw_campaign_frequency', 'hourly' );
     40
    3541        // Schedule the cron job for generating titles.
    3642        if ( ! wp_next_scheduled( 'aicw_generate_title' ) ) {
    37             wp_schedule_event( time(), 'hourly', 'aicw_generate_title' );
     43            wp_schedule_event( time(), $frequency, 'aicw_generate_title' );
    3844        }
    3945
    4046        // Schedule the cron job for generating content.
    4147        if ( ! wp_next_scheduled( 'aicw_generate_content' ) ) {
    42             wp_schedule_event( time() + 300, 'hourly', 'aicw_generate_content' );
     48            wp_schedule_event( time() + 300, $frequency, 'aicw_generate_content' );
    4349        }
    4450
    4551        // Schedule the cron job for generating thumbnails.
    4652        if ( ! wp_next_scheduled( 'aicw_generate_thumbnail' ) ) {
    47             wp_schedule_event( time() + 600, 'hourly', 'aicw_generate_thumbnail' );
     53            wp_schedule_event( time() + 600, $frequency, 'aicw_generate_thumbnail' );
    4854        }
    4955
    5056        // Schedule the cron job for publishing the generated posts.
    5157        if ( ! wp_next_scheduled( 'aicw_publish_posts' ) ) {
    52             wp_schedule_event( time() + 900, 'hourly', 'aicw_publish_posts' );
     58            wp_schedule_event( time() + 900, $frequency, 'aicw_publish_posts' );
    5359        }
    5460    }
     
    8793            }
    8894
    89             // Now request the OpenAI to generate the titles depending on the keywords.
    90             $titles = aicw_generate_titles( $keywords );
     95            $type         = get_post_meta( $campaign_id, '_aicw_campaign_type', true );
     96            $posts_needed = isset( $needs_update['posts_needed'] ) ? absint( $needs_update['posts_needed'] ) : 0;
     97
     98            if ( 'articles' === $type ) {
     99                Articles::generate_titles( $campaign_id, $keywords, $posts_needed );
     100                // Update the last run time.
     101                aicw_update_last_run_time( $campaign_id );
     102                break;
     103            } elseif ( 'rss-feed' === $type ) {
     104                RSSFeed::generate_titles( $campaign_id, $posts_needed );
     105                // Update the last run time.
     106                aicw_update_last_run_time( $campaign_id );
     107                break;
     108            } else {
     109                // Now request the OpenAI to generate the titles depending on the keywords.
     110                $type   = empty( $type ) ? get_option( 'aicw_api_model' ) : $type; // TODO: We will remove this option in the future. It's already remove from the settings page.
     111                $titles = aicw_generate_titles( $type, $keywords );
     112            }
    91113
    92114            $counter = 0;
     
    178200            $needs_update = aicw_temp_post_needs_update( $post, $campaign_id );
    179201
    180             if ( array_key_exists( 'content', $needs_update ) && ! $needs_update['content'] ) {
     202            if ( empty( $needs_update ) || ( array_key_exists( 'content', $needs_update ) && ! $needs_update['content'] ) ) {
    181203                aicw_update_last_run_time( $post_id );
    182204                continue;
     
    193215            }
    194216
    195             // Now request the OpenAI to generate the content depending on the keywords and title.
    196             $content = aicw_generate_content( $title, $keywords );
    197 
    198             // Update the post content.
    199             wp_update_post(
    200                 array(
    201                     'ID'           => $post_id,
    202                     'post_content' => wp_kses_post( $content ),
    203                 )
    204             );
     217            $campaign_type = get_post_meta( $campaign_id, '_aicw_campaign_type', true );
     218
     219            if ( empty( $campaign_type ) ) {
     220                continue;
     221            }
     222
     223            $is_updated = false;
     224            // Check if the campaign type is articles or rss-feed.
     225            if ( 'articles' === $campaign_type ) {
     226                $is_updated = Articles::generate_content( $post_id, $title, $keywords );
     227            } elseif ( 'rss-feed' === $campaign_type ) {
     228                $is_updated = RSSFeed::generate_content( $post_id, $title, $keywords );
     229            } else {
     230                $content = aicw_generate_content( $post_id, $title, $keywords );
     231                $updated = wp_update_post(
     232                    array(
     233                        'ID'           => $post_id,
     234                        'post_content' => wp_kses_post( $content ),
     235                    )
     236                );
     237
     238                $is_updated = is_wp_error( $updated ) ? false : true;
     239            }
     240
     241            // Check if the content is updated successfully or not.
     242            if ( ! $is_updated ) {
     243                // If the content is not updated then handle the itteration occurring. and delete it if the post is not updated with 2 attempts.
     244                $attempts = get_post_meta( $post_id, '_aicw_generate_content_attempts', true );
     245                if ( empty( $attempts ) ) {
     246                    $attempts = 0;
     247                }
     248
     249                ++$attempts;
     250                // Check if the attempts are greater than or equal to 2 then delete the post.
     251                if ( $attempts >= 2 ) {
     252                    wp_delete_post( $post_id, true );
     253                    continue;
     254                } else {
     255                    update_post_meta( $post_id, '_aicw_generate_content_attempts', $attempts );
     256                }
     257            }
    205258
    206259            // Update the last run time.
     
    241294            $needs_update = aicw_temp_post_needs_update( $post, $campaign_id );
    242295
    243             if ( array_key_exists( 'thumbnail', $needs_update ) && ! $needs_update['thumbnail'] ) {
     296            if ( empty( $needs_update ) || ( array_key_exists( 'thumbnail', $needs_update ) && ! $needs_update['thumbnail'] ) ) {
    244297                aicw_update_last_run_time( $post_id );
    245298                continue;
  • ai-content-writer/trunk/includes/Plugin.php

    r3252952 r3285449  
    129129
    130130        if ( ! defined( 'AICW_PRO_VERSION' ) ) {
    131             $action_links['go_pro'] = '<a href="https://beautifulplugins.com/" target="_blank" style="color: #39b54a; font-weight: bold;">' . esc_html__( 'Go Pro', 'ai-content-writer' ) . '</a>';
     131            $action_links['go_pro'] = '<a href="https://beautifulplugins.com/plugins/ai-content-writer-pro/" target="_blank" style="color: #39b54a; font-weight: bold;">' . esc_html__( 'Go Pro', 'ai-content-writer' ) . '</a>';
    132132        }
    133133
  • ai-content-writer/trunk/includes/functions.php

    r3249260 r3285449  
    137137 * This will generate the titles for the campaign using OpenAI or any other AI service.
    138138 *
     139 * @param string $type The type of the campaign.
    139140 * @param string $keywords The campaign keywords.
    140141 *
     
    142143 * @return array The generated titles.
    143144 */
    144 function aicw_generate_titles( $keywords ) {
    145     if ( empty( $keywords ) ) {
     145function aicw_generate_titles( $type, $keywords ) {
     146    if ( empty( $type ) || empty( $keywords ) ) {
    146147        return array();
    147148    }
    148149
    149     $api_model = get_option( 'aicw_api_model' );
    150 
    151     if ( 'gemini' === $api_model ) {
     150    if ( 'gemini' === $type ) {
    152151        $api_key = get_option( 'aicw_gemini_api_key' );
    153152        if ( empty( $api_key ) ) {
     
    206205
    207206        $titles = explode( "\n", trim( $result['candidates'][0]['content']['parts'][0]['text'] ) );
    208     } elseif ( 'chatgpt' === $api_model ) {
     207    } elseif ( 'chatgpt' === $type ) {
    209208        $api_key = get_option( 'aicw_chatgpt_api_secret_key' );
    210209        if ( empty( $api_key ) ) {
     
    275274 * This will generate the content for the campaign using OpenAI or any other AI service.
    276275 *
     276 * @param int    $post_id The ID of the post for which content is being generated.
    277277 * @param string $title The title of the content.
    278278 * @param string $keywords The campaign keywords.
     
    281281 * @return string|mixed The generated content or null.
    282282 */
    283 function aicw_generate_content( $title, $keywords = '' ) {
    284     if ( empty( $title ) ) {
     283function aicw_generate_content( $post_id, $title, $keywords = '' ) {
     284    if ( empty( $post_id ) || empty( $title ) ) {
    285285        return '';
    286286    }
    287287
    288     $api_model = get_option( 'aicw_api_model' );
     288    // Get the associated campaign ID.
     289    $campaign_id   = get_post_meta( $post_id, '_aicw_campaign_id', true );
     290    $campaign_type = get_post_meta( $campaign_id, '_aicw_campaign_type', true );
     291    $api_model     = empty( $campaign_type ) ? get_option( 'aicw_api_model' ) : $campaign_type; // TODO: We will remove this option in the future. It's already remove from the settings page.
     292
     293    if ( empty( $api_model ) ) {
     294        return null;
     295    }
    289296
    290297    if ( 'gemini' === $api_model ) {
     
    425432
    426433/**
    427  * Get the post ID by title across all post types.
     434 * Get the post ID by exact title using direct $wpdb query.
    428435 *
    429436 * @param string $post_title The post title.
     
    433440 */
    434441function aicw_get_post_by_title( $post_title ) {
    435 
    436     // TODO: The old code is commented out. It should be removed after testing.
    437     /**
    438     $query = new WP_Query(
    439         array(
    440             'title'          => $post_title,
    441             'post_type'      => 'aicw_post',
    442             'posts_per_page' => 1,
     442    global $wpdb;
     443
     444    $post_title = wp_unslash( $post_title ); // Just in case, unescape slashes.
     445
     446    $query = $wpdb->get_var(
     447        $wpdb->prepare(
     448            "SELECT ID FROM {$wpdb->posts}
     449         WHERE post_title = %s
     450         AND post_type != 'revision'
     451         AND post_status IN ('publish', 'pending', 'draft', 'future', 'private')
     452         LIMIT 1",
     453            $post_title
    443454        )
    444455    );
    445456
    446     $post = $query->post;
    447 
    448     if ( $post instanceof WP_Post && 'aicw_post' === $post->post_type ) {
    449         return $post->ID;
    450     }
    451     */
    452 
    453     $query = new WP_Query(
    454         array(
    455             'title'          => $post_title,
    456             'post_type'      => 'any',
    457             'posts_per_page' => 1,
    458             'fields'         => 'ids',
    459             'no_found_rows'  => true,
     457    return $query ? (int) $query : null;
     458}
     459
     460/**
     461 * Get all post IDs by exact title using direct $wpdb query.
     462 *
     463 * @param string $post_title The post title.
     464 *
     465 * @since 1.4.0
     466 * @return int[] Array of post IDs if found, otherwise an empty array.
     467 */
     468function aicw_get_posts_by_title( $post_title ) {
     469    global $wpdb;
     470
     471    $post_title = wp_unslash( $post_title ); // Ensure slashes are removed.
     472
     473    $query = $wpdb->get_col(
     474        $wpdb->prepare(
     475            "SELECT ID FROM {$wpdb->posts}
     476            WHERE post_title = %s
     477            AND post_type != 'revision'
     478            AND post_status IN ('publish', 'pending', 'draft', 'future', 'private')",
     479            $post_title
    460480        )
    461481    );
    462482
    463     return ! empty( $query->posts ) ? $query->posts[0] : null;
    464 }
     483    return array_map( 'intval', $query );
     484}
     485
     486
    465487
    466488/**
     
    478500        return array(
    479501            'needs_update' => false,
    480             'error'        => 'The campaign is not found.',
     502            'error'        => __( 'The campaign is not found.', 'ai-content-writer' ),
    481503        );
    482504    }
     
    526548        return array(
    527549            'needs_update' => false,
    528             'error'        => 'The campaign target is reached.',
     550            'error'        => __( 'The campaign target is reached.', 'ai-content-writer' ),
    529551        );
    530552    }
     
    611633    return absint( $target_limit );
    612634}
     635
     636/**
     637 * Get user agents.
     638 * This function gets the user agents for the campaigns.
     639 *
     640 * @since 1.7.0
     641 * @return array The user agents.
     642 */
     643function aicw_user_agents(): array {
     644    return array(
     645        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
     646        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
     647        'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
     648        'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1',
     649        'Mozilla/5.0 (iPad; CPU OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1',
     650    );
     651}
  • ai-content-writer/trunk/languages/ai-content-writer.pot

    r3265465 r3285449  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: AI Content Writer 1.6.0\n"
     5"Project-Id-Version: AI Content Writer 2.0.0\n"
    66"Report-Msgid-Bugs-To: https://beautifulplugins.com/support/\n"
    7 "POT-Creation-Date: 2025-04-02 06:48:54+00:00\n"
     7"POT-Creation-Date: 2025-05-01 08:42:38+00:00\n"
    88"MIME-Version: 1.0\n"
    99"Content-Type: text/plain; charset=utf-8\n"
     
    2525"X-Generator: grunt-wp-i18n 1.0.3\n"
    2626
    27 #: includes/Admin/Actions.php:42 includes/Admin/Actions.php:111
    28 #: includes/Admin/Actions.php:183 includes/Admin/Actions.php:220
    29 #: includes/Admin/Actions.php:460 includes/Admin/Actions.php:517
     27#: includes/Admin/Actions.php:42 includes/Admin/Actions.php:131
     28#: includes/Admin/Actions.php:223 includes/Admin/Actions.php:275
     29#: includes/Admin/Actions.php:515 includes/Admin/Actions.php:572
    3030#: includes/Admin/Admin.php:290 includes/Admin/Dashboard.php:36
    3131msgid "You do not have permission to perform this action."
    3232msgstr ""
    3333
    34 #: includes/Admin/Actions.php:53 includes/Admin/Actions.php:129
     34#: includes/Admin/Actions.php:55 includes/Admin/Actions.php:151
    3535msgid "Title is required. Please enter the campaign title."
    3636msgstr ""
    3737
    38 #: includes/Admin/Actions.php:59 includes/Admin/Actions.php:135
     38#: includes/Admin/Actions.php:61 includes/Admin/Actions.php:157
     39msgid "Campaign type is required. Please select the campaign type."
     40msgstr ""
     41
     42#: includes/Admin/Actions.php:67 includes/Admin/Actions.php:163
    3943msgid "Keywords are required. Please enter the keywords."
    4044msgstr ""
    4145
    42 #: includes/Admin/Actions.php:91
     46#: includes/Admin/Actions.php:73 includes/Admin/Actions.php:169
     47msgid "RSS feed link is required. Please enter the RSS feed link."
     48msgstr ""
     49
     50#: includes/Admin/Actions.php:111
    4351msgid "Campaign added successfully."
    4452msgstr ""
    4553
    46 #: includes/Admin/Actions.php:123
     54#: includes/Admin/Actions.php:145
    4755msgid "Invalid campaign. Please try again."
    4856msgstr ""
    4957
    50 #: includes/Admin/Actions.php:167
     58#: includes/Admin/Actions.php:207
    5159msgid "Campaign updated successfully."
    5260msgstr ""
    5361
    54 #: includes/Admin/Actions.php:204
     62#: includes/Admin/Actions.php:259
    5563msgid "Settings saved successfully."
    5664msgstr ""
    5765
    58 #: includes/Admin/Actions.php:228 includes/Admin/views/generate-content.php:60
     66#: includes/Admin/Actions.php:283 includes/Admin/views/generate-content.php:60
    5967msgid "English"
    6068msgstr ""
    6169
    62 #: includes/Admin/Actions.php:235 includes/Admin/views/generate-content.php:82
    63 #: includes/Plugin.php:320 includes/functions.php:374
     70#: includes/Admin/Actions.php:290 includes/Admin/views/generate-content.php:82
     71#: includes/Plugin.php:320 includes/functions.php:381
    6472msgid ""
    6573"You are an expert SEO content writer. Generate factually accurate, "
     
    6876msgstr ""
    6977
    70 #: includes/Admin/Actions.php:243
     78#: includes/Admin/Actions.php:298
    7179msgid "Title is required. Please, start with \"Write an article on...\""
    7280msgstr ""
    7381
    74 #: includes/Admin/Actions.php:249
     82#: includes/Admin/Actions.php:304
    7583msgid "Prompt type is required. Please, select the prompt type."
    7684msgstr ""
    7785
    78 #: includes/Admin/Actions.php:255
     86#: includes/Admin/Actions.php:310
    7987msgid "Language is required. Please, select the language."
    8088msgstr ""
    8189
    82 #: includes/Admin/Actions.php:261
     90#: includes/Admin/Actions.php:316
    8391msgid "Post type is required. Please, select the post type."
    8492msgstr ""
    8593
    86 #: includes/Admin/Actions.php:272 includes/Plugin.php:236
     94#: includes/Admin/Actions.php:327 includes/Plugin.php:236
    8795msgid ""
    8896"Please configure the API settings. A valid Gemini API key is required to "
     
    9098msgstr ""
    9199
    92 #: includes/Admin/Actions.php:351
     100#: includes/Admin/Actions.php:406
    93101msgid ""
    94102"Please configure the API settings. A valid ChatGPT API secret key is "
     
    96104msgstr ""
    97105
    98 #: includes/Admin/Actions.php:359
     106#: includes/Admin/Actions.php:414
    99107#. translators: 1: Prompt Content, 2: System Tone, 3: Language, 4: Min Words
    100108msgid ""
     
    118126msgstr ""
    119127
    120 #: includes/Admin/Actions.php:374 includes/functions.php:398
     128#: includes/Admin/Actions.php:429 includes/functions.php:405
    121129msgid "The article should be optimized for SEO"
    122130msgstr ""
    123131
    124 #: includes/Admin/Actions.php:374 includes/functions.php:398
     132#: includes/Admin/Actions.php:429 includes/functions.php:405
    125133msgid "The article should be optimized for SEO, including relevant keywords: "
    126134msgstr ""
    127135
    128 #: includes/Admin/Actions.php:401
     136#: includes/Admin/Actions.php:456
    129137msgid "Invalid API model. Please configure the API settings."
    130138msgstr ""
    131139
    132 #: includes/Admin/Actions.php:439 includes/Admin/Actions.php:444
     140#: includes/Admin/Actions.php:494 includes/Admin/Actions.php:499
    133141msgid "Content generated successfully."
    134142msgstr ""
    135143
    136 #: includes/Admin/Actions.php:469 includes/Admin/Actions.php:527
     144#: includes/Admin/Actions.php:524 includes/Admin/Actions.php:582
    137145msgid "Invalid post. Please try again."
    138146msgstr ""
    139147
    140 #: includes/Admin/Actions.php:475
     148#: includes/Admin/Actions.php:530
    141149msgid "Invalid image. Please select an image."
    142150msgstr ""
    143151
    144 #: includes/Admin/Actions.php:485
     152#: includes/Admin/Actions.php:540
    145153msgid "Invalid image URL. Please try again."
    146154msgstr ""
    147155
    148 #: includes/Admin/Actions.php:499
     156#: includes/Admin/Actions.php:554
    149157msgid "Content generated and featured image set successfully."
    150158msgstr ""
    151159
    152 #: includes/Admin/Actions.php:536
     160#: includes/Admin/Actions.php:591
    153161msgid "Post deleted successfully."
    154162msgstr ""
    155163
    156 #: includes/Admin/Actions.php:543
     164#: includes/Admin/Actions.php:598
    157165msgid "Failed to delete the post. Please try again."
    158166msgstr ""
     
    213221
    214222#: includes/Admin/ListTables/CampaignsListTable.php:106
    215 #: includes/Admin/views/edit-campaign.php:97
     223#: includes/Admin/views/edit-campaign.php:130
    216224#: includes/Admin/views/generate-content.php:148
    217225msgid "Status"
     
    233241#: includes/Admin/ListTables/CampaignsListTable.php:170
    234242#: includes/Admin/ListTables/CampaignsListTable.php:183
    235 #: includes/Admin/views/edit-campaign.php:132
     243#: includes/Admin/views/edit-campaign.php:165
    236244msgid "Delete"
    237245msgstr ""
    238246
    239247#: includes/Admin/ListTables/CampaignsListTable.php:215
    240 #: includes/Admin/views/add-campaign.php:87
    241 #: includes/Admin/views/edit-campaign.php:172
     248#: includes/Admin/views/add-campaign.php:121
     249#: includes/Admin/views/edit-campaign.php:204
    242250msgid "Active"
    243251msgstr ""
    244252
    245253#: includes/Admin/views/add-campaign.php:15
    246 #: includes/Admin/views/add-campaign.php:100
     254#: includes/Admin/views/add-campaign.php:134
    247255msgid "Add Campaign"
    248256msgstr ""
     
    257265
    258266#: includes/Admin/views/add-campaign.php:28
    259 #: includes/Admin/views/edit-campaign.php:30
    260 #: includes/Admin/views/edit-campaign.php:95
     267#: includes/Admin/views/edit-campaign.php:29
     268#: includes/Admin/views/edit-campaign.php:128
    261269msgid "Title"
    262270msgstr ""
    263271
    264272#: includes/Admin/views/add-campaign.php:33
    265 #: includes/Admin/views/edit-campaign.php:35
     273#: includes/Admin/views/edit-campaign.php:34
    266274msgid "Enter the campaign title."
    267275msgstr ""
    268276
    269277#: includes/Admin/views/add-campaign.php:40
    270 #: includes/Admin/views/edit-campaign.php:43
     278#: includes/Admin/views/edit-campaign.php:41
    271279msgid "Campaign Details"
    272280msgstr ""
    273281
    274282#: includes/Admin/views/add-campaign.php:44
    275 #: includes/Admin/views/edit-campaign.php:48
     283#: includes/Admin/views/edit-campaign.php:46
     284msgid "Campaign Type"
     285msgstr ""
     286
     287#: includes/Admin/views/add-campaign.php:47
     288#: includes/Admin/views/edit-campaign.php:49
     289msgid "Articles"
     290msgstr ""
     291
     292#: includes/Admin/views/add-campaign.php:48
     293#: includes/Admin/views/edit-campaign.php:50
     294msgid "RSS Feed"
     295msgstr ""
     296
     297#: includes/Admin/views/add-campaign.php:49
     298#: includes/Admin/views/edit-campaign.php:51
     299#: includes/Admin/views/settings.php:105
     300msgid "Gemini"
     301msgstr ""
     302
     303#: includes/Admin/views/add-campaign.php:50
     304#: includes/Admin/views/edit-campaign.php:52
     305#: includes/Admin/views/settings.php:106
     306msgid "ChatGPT"
     307msgstr ""
     308
     309#: includes/Admin/views/add-campaign.php:54
     310#: includes/Admin/views/edit-campaign.php:56
     311msgid "Select the campaign type to generate the campaign content."
     312msgstr ""
     313
     314#: includes/Admin/views/add-campaign.php:59
     315#: includes/Admin/views/edit-campaign.php:61
     316msgid "Campaign Host"
     317msgstr ""
     318
     319#: includes/Admin/views/add-campaign.php:61
     320#: includes/Admin/views/edit-campaign.php:63
     321#: includes/Admin/views/settings.php:42
     322msgid "https://www.bing.com/"
     323msgstr ""
     324
     325#: includes/Admin/views/add-campaign.php:64
     326#: includes/Admin/views/edit-campaign.php:66
     327msgid ""
     328"Enter the campaign host URL. This will be used to scrape the content from "
     329"the allowed hosts. Configure the allowed hosts in the settings page. "
     330"Currently, we allow only Bing as a host."
     331msgstr ""
     332
     333#: includes/Admin/views/add-campaign.php:69
     334#: includes/Admin/views/edit-campaign.php:72
    276335msgid "Campaign Source"
    277336msgstr ""
    278337
    279 #: includes/Admin/views/add-campaign.php:47
    280 #: includes/Admin/views/add-campaign.php:55
    281 #: includes/Admin/views/edit-campaign.php:51
    282 #: includes/Admin/views/edit-campaign.php:59
     338#: includes/Admin/views/add-campaign.php:72
     339#: includes/Admin/views/add-campaign.php:80
     340#: includes/Admin/views/edit-campaign.php:75
     341#: includes/Admin/views/edit-campaign.php:83
    283342msgid "Keywords"
    284343msgstr ""
    285344
    286 #: includes/Admin/views/add-campaign.php:51
    287 #: includes/Admin/views/edit-campaign.php:55
     345#: includes/Admin/views/add-campaign.php:76
     346#: includes/Admin/views/edit-campaign.php:79
    288347msgid ""
    289348"Select the campaign source. This will be used to generate the campaign "
     
    291350msgstr ""
    292351
    293 #: includes/Admin/views/add-campaign.php:57
    294 #: includes/Admin/views/edit-campaign.php:61
     352#: includes/Admin/views/add-campaign.php:82
     353#: includes/Admin/views/edit-campaign.php:85
    295354#: includes/Admin/views/generate-content.php:38
    296355msgid "keyword, keyword 2, keyword 3, ..."
    297356msgstr ""
    298357
    299 #: includes/Admin/views/add-campaign.php:60
    300 #: includes/Admin/views/edit-campaign.php:64
     358#: includes/Admin/views/add-campaign.php:85
     359#: includes/Admin/views/edit-campaign.php:88
    301360msgid ""
    302361"Enter the keywords to generate the campaign content. Separate each keyword "
     
    304363msgstr ""
    305364
    306 #: includes/Admin/views/add-campaign.php:69
    307 #: includes/Admin/views/edit-campaign.php:154
     365#: includes/Admin/views/add-campaign.php:89
     366#: includes/Admin/views/edit-campaign.php:92
     367msgid "RSS Feed Link"
     368msgstr ""
     369
     370#: includes/Admin/views/add-campaign.php:91
     371#: includes/Admin/views/edit-campaign.php:94
     372msgid "https://www.example.com/feed"
     373msgstr ""
     374
     375#: includes/Admin/views/add-campaign.php:94
     376#: includes/Admin/views/edit-campaign.php:97
     377msgid ""
     378"Enter the RSS feed link. This will be used to generate the content from the "
     379"RSS feed."
     380msgstr ""
     381
     382#: includes/Admin/views/add-campaign.php:103
     383#: includes/Admin/views/edit-campaign.php:186
    308384msgid "Campaign Actions"
    309385msgstr ""
    310386
    311 #: includes/Admin/views/add-campaign.php:73
    312 #: includes/Admin/views/edit-campaign.php:158
     387#: includes/Admin/views/add-campaign.php:107
     388#: includes/Admin/views/edit-campaign.php:190
    313389msgid "Campaign Target"
    314390msgstr ""
    315391
    316 #: includes/Admin/views/add-campaign.php:79
    317 #: includes/Admin/views/edit-campaign.php:164
     392#: includes/Admin/views/add-campaign.php:113
     393#: includes/Admin/views/edit-campaign.php:196
    318394msgid ""
    319395"Target number of posts to generate. Upgrading to Pro version will increase "
     
    321397msgstr ""
    322398
    323 #: includes/Admin/views/add-campaign.php:84
    324 #: includes/Admin/views/edit-campaign.php:169
     399#: includes/Admin/views/add-campaign.php:118
     400#: includes/Admin/views/edit-campaign.php:201
    325401msgid "Campaign Status"
    326402msgstr ""
    327403
    328 #: includes/Admin/views/add-campaign.php:88
    329 #: includes/Admin/views/add-campaign.php:145
    330 #: includes/Admin/views/edit-campaign.php:173
    331 #: includes/Admin/views/edit-campaign.php:231
     404#: includes/Admin/views/add-campaign.php:122
     405#: includes/Admin/views/add-campaign.php:179
     406#: includes/Admin/views/edit-campaign.php:205
     407#: includes/Admin/views/edit-campaign.php:263
    332408#: includes/Admin/views/generate-content.php:152
    333409msgid "Draft"
    334410msgstr ""
    335411
    336 #: includes/Admin/views/add-campaign.php:89
    337 #: includes/Admin/views/add-campaign.php:146
    338 #: includes/Admin/views/edit-campaign.php:174
    339 #: includes/Admin/views/edit-campaign.php:232
     412#: includes/Admin/views/add-campaign.php:123
     413#: includes/Admin/views/add-campaign.php:180
     414#: includes/Admin/views/edit-campaign.php:206
     415#: includes/Admin/views/edit-campaign.php:264
    340416#: includes/Admin/views/generate-content.php:153
    341417msgid "Pending"
    342418msgstr ""
    343419
    344 #: includes/Admin/views/add-campaign.php:93
    345 #: includes/Admin/views/edit-campaign.php:178
     420#: includes/Admin/views/add-campaign.php:127
     421#: includes/Admin/views/edit-campaign.php:210
    346422#: includes/Admin/views/generate-content.php:157
    347423msgid "Select the status of the campaign."
    348424msgstr ""
    349425
    350 #: includes/Admin/views/add-campaign.php:107
     426#: includes/Admin/views/add-campaign.php:141
     427#: includes/Admin/views/edit-campaign.php:225
    351428msgid "Publish Content as"
    352429msgstr ""
    353430
    354 #: includes/Admin/views/add-campaign.php:108
    355 #: includes/Admin/views/edit-campaign.php:194
     431#: includes/Admin/views/add-campaign.php:142
     432#: includes/Admin/views/edit-campaign.php:226
    356433#: includes/Admin/views/generate-content.php:111
    357434msgid "Type"
    358435msgstr ""
    359436
    360 #: includes/Admin/views/add-campaign.php:114
    361 #: includes/Admin/views/edit-campaign.php:200
     437#: includes/Admin/views/add-campaign.php:148
     438#: includes/Admin/views/edit-campaign.php:232
    362439#: includes/Admin/views/generate-content.php:117
    363440msgid "Post Type"
    364441msgstr ""
    365442
    366 #: includes/Admin/views/add-campaign.php:134
    367 #: includes/Admin/views/edit-campaign.php:220
     443#: includes/Admin/views/add-campaign.php:168
     444#: includes/Admin/views/edit-campaign.php:252
    368445#: includes/Admin/views/generate-content.php:137
    369446msgid "Select the post type to publish the content."
    370447msgstr ""
    371448
    372 #: includes/Admin/views/add-campaign.php:139
    373 #: includes/Admin/views/edit-campaign.php:225
     449#: includes/Admin/views/add-campaign.php:173
     450#: includes/Admin/views/edit-campaign.php:257
    374451msgid "Completed Post Status"
    375452msgstr ""
    376453
    377 #: includes/Admin/views/add-campaign.php:144
    378 #: includes/Admin/views/edit-campaign.php:230
     454#: includes/Admin/views/add-campaign.php:178
     455#: includes/Admin/views/edit-campaign.php:262
    379456#: includes/Admin/views/generate-content.php:151
    380457msgid "Publish"
    381458msgstr ""
    382459
    383 #: includes/Admin/views/add-campaign.php:150
    384 #: includes/Admin/views/edit-campaign.php:236
     460#: includes/Admin/views/add-campaign.php:184
     461#: includes/Admin/views/edit-campaign.php:268
    385462msgid ""
    386463"Select the status of the generated posts. This will be used while "
     
    388465msgstr ""
    389466
    390 #: includes/Admin/views/add-campaign.php:158
    391 #: includes/Admin/views/edit-campaign.php:244
     467#: includes/Admin/views/add-campaign.php:192
     468#: includes/Admin/views/edit-campaign.php:276
    392469msgid "Campaign Settings"
    393470msgstr ""
    394471
    395 #: includes/Admin/views/add-campaign.php:164
    396 #: includes/Admin/views/edit-campaign.php:250
     472#: includes/Admin/views/add-campaign.php:198
     473#: includes/Admin/views/edit-campaign.php:282
    397474msgid "Generate Thumbnail"
    398475msgstr ""
    399476
    400 #: includes/Admin/views/add-campaign.php:167
    401 #: includes/Admin/views/edit-campaign.php:253
     477#: includes/Admin/views/add-campaign.php:201
     478#: includes/Admin/views/edit-campaign.php:285
    402479msgid "Enable to generate a thumbnail for the each campaigns generated content."
    403480msgstr ""
     
    463540msgstr ""
    464541
    465 #: includes/Admin/views/edit-campaign.php:72
    466 #: includes/Admin/views/edit-campaign.php:262
     542#: includes/Admin/views/edit-campaign.php:105
     543#: includes/Admin/views/edit-campaign.php:294
    467544msgid "Campaign Posts"
    468545msgstr ""
    469546
    470 #: includes/Admin/views/edit-campaign.php:73
     547#: includes/Admin/views/edit-campaign.php:106
    471548msgid "Processing"
    472549msgstr ""
    473550
    474 #: includes/Admin/views/edit-campaign.php:75
     551#: includes/Admin/views/edit-campaign.php:108
    475552msgid ""
    476553"Below are the temporary posts generated for this campaign. The progress bar "
     
    478555msgstr ""
    479556
    480 #: includes/Admin/views/edit-campaign.php:96
     557#: includes/Admin/views/edit-campaign.php:129
    481558msgid "Progress"
    482559msgstr ""
    483560
    484 #: includes/Admin/views/edit-campaign.php:98
     561#: includes/Admin/views/edit-campaign.php:131
    485562#: includes/Admin/views/generate-content.php:144
    486563msgid "Actions"
    487564msgstr ""
    488565
    489 #: includes/Admin/views/edit-campaign.php:141
     566#: includes/Admin/views/edit-campaign.php:174
    490567msgid ""
    491568"No generated posts found for this campaign. Please wait while the posts are "
     
    494571msgstr ""
    495572
    496 #: includes/Admin/views/edit-campaign.php:186
    497 #: includes/Admin/views/settings.php:111
     573#: includes/Admin/views/edit-campaign.php:218
     574#: includes/Admin/views/settings.php:148
    498575msgid "Save Changes"
    499576msgstr ""
    500577
    501 #: includes/Admin/views/edit-campaign.php:193
    502 #: includes/Admin/views/generate-content.php:110
    503 msgid "Publish content as"
    504 msgstr ""
    505 
    506 #: includes/Admin/views/edit-campaign.php:263
     578#: includes/Admin/views/edit-campaign.php:295
    507579msgid "Completed"
    508580msgstr ""
    509581
    510 #: includes/Admin/views/edit-campaign.php:306
     582#: includes/Admin/views/edit-campaign.php:338
    511583msgid "No completed posts found for this campaign."
    512584msgstr ""
     
    627699msgstr ""
    628700
     701#: includes/Admin/views/generate-content.php:110
     702msgid "Publish content as"
     703msgstr ""
     704
    629705#: includes/Admin/views/help.php:18
    630706msgid ""
     
    846922msgstr ""
    847923
    848 #: includes/Admin/views/help.php:118 includes/Admin/views/settings.php:120
     924#: includes/Admin/views/help.php:118 includes/Admin/views/settings.php:157
    849925msgid "Support"
    850926msgstr ""
    851927
    852 #: includes/Admin/views/help.php:121 includes/Admin/views/settings.php:123
     928#: includes/Admin/views/help.php:121 includes/Admin/views/settings.php:160
    853929msgid "If you need help, please contact us."
    854930msgstr ""
    855931
    856 #: includes/Admin/views/help.php:124 includes/Admin/views/settings.php:126
     932#: includes/Admin/views/help.php:124 includes/Admin/views/settings.php:163
    857933msgid "Contact Support"
    858934msgstr ""
    859935
    860 #: includes/Admin/views/help.php:131 includes/Admin/views/settings.php:133
     936#: includes/Admin/views/help.php:131 includes/Admin/views/settings.php:170
    861937msgid "Our Popular Plugins"
    862938msgstr ""
    863939
    864 #: includes/Admin/views/help.php:137 includes/Admin/views/settings.php:139
    865 msgid "Advanced Shortcodes"
     940#: includes/Admin/views/help.php:137 includes/Admin/views/settings.php:176
     941msgid "Send Emails – Newsletters, Automation & Email Marketing for WordPress"
     942msgstr ""
     943
     944#: includes/Admin/views/help.php:142 includes/Admin/views/settings.php:181
     945msgid "Essential Elements for WordPress"
     946msgstr ""
     947
     948#: includes/Admin/views/help.php:147 includes/Admin/views/settings.php:186
     949msgid "Shortcodes – Advanced Shortcode Manager"
     950msgstr ""
     951
     952#: includes/Admin/views/help.php:152 includes/Admin/views/settings.php:191
     953msgid "Post Showcase"
     954msgstr ""
     955
     956#: includes/Admin/views/help.php:157 includes/Admin/views/settings.php:196
     957msgid "SMS Manager – WooCommerce SMS Notifications"
     958msgstr ""
     959
     960#: includes/Admin/views/help.php:162 includes/Admin/views/settings.php:201
     961msgid "Invoice Payment"
    866962msgstr ""
    867963
     
    883979
    884980#: includes/Admin/views/settings.php:30
    885 msgid "API Model:"
     981msgid "Allowed Hosts:"
     982msgstr ""
     983
     984#: includes/Admin/views/settings.php:33
     985msgid "https://bing.com"
    886986msgstr ""
    887987
    888988#: includes/Admin/views/settings.php:34
    889 msgid "Gemini"
    890 msgstr ""
    891 
    892 #: includes/Admin/views/settings.php:35
    893 msgid "ChatGPT"
    894 msgstr ""
    895 
    896 #: includes/Admin/views/settings.php:37
    897 msgid "Select the AI model to generate content."
    898 msgstr ""
    899 
    900 #: includes/Admin/views/settings.php:42
     989msgid ""
     990"Enter the allowed hosts. Each host should be on a new line. Example: "
     991"https://bing.com. Currently, we allow only Bing as a host."
     992msgstr ""
     993
     994#: includes/Admin/views/settings.php:39
     995msgid "Default Host:"
     996msgstr ""
     997
     998#: includes/Admin/views/settings.php:43
     999msgid ""
     1000"Enter the default host URL. This will be used as a default host while "
     1001"generating the content."
     1002msgstr ""
     1003
     1004#: includes/Admin/views/settings.php:47
     1005msgid "API Settings"
     1006msgstr ""
     1007
     1008#: includes/Admin/views/settings.php:48
     1009msgid "The following options are the API settings for the AI Content Writer plugin."
     1010msgstr ""
     1011
     1012#: includes/Admin/views/settings.php:52
    9011013msgid "Gemini API Key:"
    9021014msgstr ""
    9031015
    904 #: includes/Admin/views/settings.php:46
     1016#: includes/Admin/views/settings.php:56
    9051017msgid "Enter your Gemini API key."
    9061018msgstr ""
    9071019
    908 #: includes/Admin/views/settings.php:51
     1020#: includes/Admin/views/settings.php:61
    9091021msgid "ChatGPT API Secret Key:"
    9101022msgstr ""
    9111023
    912 #: includes/Admin/views/settings.php:55
     1024#: includes/Admin/views/settings.php:65
    9131025msgid "Enter your ChatGPT API secret key."
    9141026msgstr ""
    9151027
    916 #: includes/Admin/views/settings.php:60
     1028#: includes/Admin/views/settings.php:70
    9171029msgid "ChatGPT AI Model:"
    9181030msgstr ""
    9191031
    920 #: includes/Admin/views/settings.php:64
     1032#: includes/Admin/views/settings.php:74
    9211033msgid "GPT-3.5 Turbo"
    9221034msgstr ""
    9231035
    924 #: includes/Admin/views/settings.php:65
     1036#: includes/Admin/views/settings.php:75
    9251037msgid "GPT-4o"
    9261038msgstr ""
    9271039
    928 #: includes/Admin/views/settings.php:66
     1040#: includes/Admin/views/settings.php:76
    9291041msgid "GPT-4o Mini"
    9301042msgstr ""
    9311043
    932 #: includes/Admin/views/settings.php:67
     1044#: includes/Admin/views/settings.php:77
    9331045msgid "GPT-4 Turbo"
    9341046msgstr ""
    9351047
    936 #: includes/Admin/views/settings.php:69
     1048#: includes/Admin/views/settings.php:79
    9371049msgid "Select the ChatGPT AI model to generate content."
    9381050msgstr ""
    9391051
    940 #: includes/Admin/views/settings.php:74
    941 msgid "Enable Redirection:"
    942 msgstr ""
    943 
    944 #: includes/Admin/views/settings.php:79
    945 msgid "Enable Redirection"
    946 msgstr ""
    947 
    948 #: includes/Admin/views/settings.php:81
    949 msgid ""
    950 "Enable to redirect to the edit page after successful generation of content "
    951 "from the \"Generate Content\" page."
    952 msgstr ""
    953 
    954 #: includes/Admin/views/settings.php:85
     1052#: includes/Admin/views/settings.php:83
    9551053msgid "Image Settings"
    9561054msgstr ""
    9571055
    958 #: includes/Admin/views/settings.php:86
     1056#: includes/Admin/views/settings.php:84
    9591057msgid ""
    9601058"The following options are the image settings for the AI Content Writer "
     
    9621060msgstr ""
    9631061
    964 #: includes/Admin/views/settings.php:90
     1062#: includes/Admin/views/settings.php:88
     1063msgid "Pexels API Key:"
     1064msgstr ""
     1065
     1066#: includes/Admin/views/settings.php:92
     1067msgid ""
     1068"Enter your Pexels API key. This key is required to generate thumbnails "
     1069"images for the AI generated content."
     1070msgstr ""
     1071
     1072#: includes/Admin/views/settings.php:96
     1073msgid "Miscellaneous Settings"
     1074msgstr ""
     1075
     1076#: includes/Admin/views/settings.php:97
     1077msgid ""
     1078"The following options are the miscellaneous settings for the AI Content "
     1079"Writer instant content generation feature."
     1080msgstr ""
     1081
     1082#: includes/Admin/views/settings.php:101
     1083msgid "API Model:"
     1084msgstr ""
     1085
     1086#: includes/Admin/views/settings.php:108
     1087msgid ""
     1088"Select the AI model to generate content using the instant content "
     1089"Generation feature."
     1090msgstr ""
     1091
     1092#: includes/Admin/views/settings.php:113
    9651093msgid "Enable Image Generation:"
    9661094msgstr ""
    9671095
    968 #: includes/Admin/views/settings.php:95
     1096#: includes/Admin/views/settings.php:118
    9691097msgid "Enable Thumbnail Image Generation"
    9701098msgstr ""
    9711099
    972 #: includes/Admin/views/settings.php:97
     1100#: includes/Admin/views/settings.php:120
    9731101msgid ""
    9741102"Enable to activate the thumbnail image generation feature. AI generated "
     
    9771105msgstr ""
    9781106
    979 #: includes/Admin/views/settings.php:102
    980 msgid "Pexels API Key:"
    981 msgstr ""
    982 
    983 #: includes/Admin/views/settings.php:106
    984 msgid ""
    985 "Enter your Pexels API key. This key is required to generate thumbnails "
    986 "images for the AI generated content."
     1107#: includes/Admin/views/settings.php:125
     1108msgid "Enable Redirection:"
     1109msgstr ""
     1110
     1111#: includes/Admin/views/settings.php:130
     1112msgid "Enable Redirection"
     1113msgstr ""
     1114
     1115#: includes/Admin/views/settings.php:132
     1116msgid ""
     1117"Enable to redirect to the edit page after successful generation of content "
     1118"from the \"Generate Content\" page."
    9871119msgstr ""
    9881120
     
    10711203msgstr ""
    10721204
    1073 #: includes/functions.php:383
     1205#: includes/functions.php:390
    10741206#. translators: 1: Prompt Content, 2: System Tone, 3: Language
    10751207msgid ""
     
    10921224msgstr ""
    10931225
     1226#: includes/functions.php:502
     1227msgid "The campaign is not found."
     1228msgstr ""
     1229
     1230#: includes/functions.php:550
     1231msgid "The campaign target is reached."
     1232msgstr ""
     1233
    10941234#. Plugin URI of the plugin/theme
    10951235msgid "https://beautifulplugins.com/ai-content-writer/"
     
    10981238#. Description of the plugin/theme
    10991239msgid ""
    1100 "AI Content Writer is a powerful AI tool that helps you generate "
    1101 "high-quality content for your blog or website in minutes using advanced AI "
     1240"AI Content Writer helps you automatically generate high-quality, "
     1241"SEO-optimized content for your blog or website in minutes using advanced AI "
    11021242"technologies like ChatGPT, OpenAI, Google Gemini, and more."
    11031243msgstr ""
  • ai-content-writer/trunk/readme.txt

    r3265465 r3285449  
    22Contributors: beautifulplugins
    33Tags: content writer, ai, content, writing, autoblog
    4 Tested up to: 6.7
    5 Stable tag: 1.6.0
     4Tested up to: 6.8
     5Stable tag: 2.0.0
    66License: GPLv2 or later
    77License URI: https://www.gnu.org/licenses/gpl-2.0.html
    88
    9 AI Content Writer is a powerful AI tool that helps you generate high-quality content for your blog or website.
     9AI Content Writer helps you automatically generate high-quality, SEO-optimized content for your blog or website.
    1010
    1111== Description ==
     
    3333* **Customizable**: AI Content Writer allows you to customize the content to suit your needs, ensuring that the final product meets your expectations.
    3434* **Fast**: With AI Content Writer, you can create content in minutes, saving you time and effort.
     35
     36=== 📊 Available Campaign Types ===
     37* **Articles**: Generate articles on various topics from different sources. like Bing.com, Bing.com/news, RSS feeds, and more.
     38* **RSS Feeds**: Generate content from RSS feeds to keep your website updated with the latest news and articles.
     39* **Gemini**: Generate content using the Google Gemini API, a powerful AI model that creates high-quality content. It is free to use and does not require a subscription to use. But it has some limitations on the number of requests you can make. (Freemium)
     40* **ChatGPT**: Generate content using the ChatGPT API, a popular AI model that creates high-quality content. It is a paid service and requires a subscription to use. (Paid)
    3541
    3642== Why Choose AI Content Writer? ==
     
    180186
    181187== Changelog ==
    182 = 1.6.0 (April 02, 2025) =
     188= 2.0.0 (1st May 2025) =
     189* New: Added new campaign types for generating content in bulk.
     190* New: Added support for generating content from search engines like Bing.com and Bing.com/news.
     191* New: Added support for generating content from RSS feeds.
     192* Enhance: Expand functionality, improve user experience, and streamline campaign management.
     193* Secure: Enhanced form validation, and improved settings handling.
     194
     195= 1.6.0 (2nd April 2025) =
    183196* Enhance: Added SEO-Friendly title and description for AI Content Writer.
    184197
    185 = 1.5.0 (March 10, 2025) =
     198= 1.5.0 (10th March 2025) =
    186199* New: Dashboard page to display the post statistics, plugin overview and features.
    187200* Enhance: Update layout and design for better user experience.
    188201* Fix: Minor bug fixes and improvements.
    189202
    190 = 1.4.0 (March 3, 2025) =
     203= 1.4.0 (3rd March 2025) =
    191204* New: Added support for automatic content generation with AI.
    192205* New: Added campaign feature to generate content in bulk.
     
    197210* Enhance: Added settings page link to the plugin action links.
    198211
    199 = 1.2.0 (January 31, 2025) =
     212= 1.2.0 (31st January 2025) =
    200213* New: Added support for ChatGPT API for content generation.
    201214* New: Added support for OpenAI API for content generation.
    202215* Enhance: Enhanced the user interface for better user experience while generating content.
    203216
    204 = 1.1.0 (January 30, 2025) =
     217= 1.1.0 (30th January 2025) =
    205218* New: Added spinner to indicate content generation in progress.
    206219* Enhance: Rename the plugin initialization function to avoid conflicts.
    207220
    208 = 1.0.0 (January 18, 2025) =
     221= 1.0.0 (18th January 2025) =
    209222* Initial Release
    210223
    211224== Upgrade Notice ==
    212 = 1.5.0 =
    213 This version includes a new dashboard page to display post statistics, plugin overview, and features. It also includes minor bug fixes and improvements.
     225= 2.0.0 =
     226This version includes new features, enhancements, and bug fixes. We recommend upgrading to this version for the best experience and performance. Please refer to the changelog for more details on the changes made in this version.
  • ai-content-writer/trunk/vendor/autoload.php

    r3249260 r3285449  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderInitfd83684bdf6b99fc67c2944c45cff21f::getLoader();
     25return ComposerAutoloaderInit323bde87c3a41909797ba511302c4b47::getLoader();
  • ai-content-writer/trunk/vendor/composer/autoload_classmap.php

    r3252952 r3285449  
    1111    'AIContentWriter\\Admin\\Dashboard' => $baseDir . '/includes/Admin/Dashboard.php',
    1212    'AIContentWriter\\Admin\\ListTables\\CampaignsListTable' => $baseDir . '/includes/Admin/ListTables/CampaignsListTable.php',
     13    'AIContentWriter\\Campaigns\\Articles' => $baseDir . '/includes/Campaigns/Articles.php',
     14    'AIContentWriter\\Campaigns\\RSSFeed' => $baseDir . '/includes/Campaigns/RSSFeed.php',
    1315    'AIContentWriter\\Cron' => $baseDir . '/includes/Cron.php',
    1416    'AIContentWriter\\Plugin' => $baseDir . '/includes/Plugin.php',
    1517    'AIContentWriter\\PostTypes' => $baseDir . '/includes/PostTypes.php',
    1618    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
     19    'simplehtmldom\\Debug' => $vendorDir . '/simplehtmldom/simplehtmldom/Debug.php',
     20    'simplehtmldom\\HtmlDocument' => $vendorDir . '/simplehtmldom/simplehtmldom/HtmlDocument.php',
     21    'simplehtmldom\\HtmlNode' => $vendorDir . '/simplehtmldom/simplehtmldom/HtmlNode.php',
     22    'simplehtmldom\\HtmlWeb' => $vendorDir . '/simplehtmldom/simplehtmldom/HtmlWeb.php',
    1723);
  • ai-content-writer/trunk/vendor/composer/autoload_real.php

    r3249260 r3285449  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInitfd83684bdf6b99fc67c2944c45cff21f
     5class ComposerAutoloaderInit323bde87c3a41909797ba511302c4b47
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInitfd83684bdf6b99fc67c2944c45cff21f', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInit323bde87c3a41909797ba511302c4b47', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInitfd83684bdf6b99fc67c2944c45cff21f', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInit323bde87c3a41909797ba511302c4b47', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInitfd83684bdf6b99fc67c2944c45cff21f::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInit323bde87c3a41909797ba511302c4b47::getInitializer($loader));
    3333
    3434        $loader->register(true);
  • ai-content-writer/trunk/vendor/composer/autoload_static.php

    r3252952 r3285449  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInitfd83684bdf6b99fc67c2944c45cff21f
     7class ComposerStaticInit323bde87c3a41909797ba511302c4b47
    88{
    99    public static $prefixLengthsPsr4 = array (
     
    2626        'AIContentWriter\\Admin\\Dashboard' => __DIR__ . '/../..' . '/includes/Admin/Dashboard.php',
    2727        'AIContentWriter\\Admin\\ListTables\\CampaignsListTable' => __DIR__ . '/../..' . '/includes/Admin/ListTables/CampaignsListTable.php',
     28        'AIContentWriter\\Campaigns\\Articles' => __DIR__ . '/../..' . '/includes/Campaigns/Articles.php',
     29        'AIContentWriter\\Campaigns\\RSSFeed' => __DIR__ . '/../..' . '/includes/Campaigns/RSSFeed.php',
    2830        'AIContentWriter\\Cron' => __DIR__ . '/../..' . '/includes/Cron.php',
    2931        'AIContentWriter\\Plugin' => __DIR__ . '/../..' . '/includes/Plugin.php',
    3032        'AIContentWriter\\PostTypes' => __DIR__ . '/../..' . '/includes/PostTypes.php',
    3133        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
     34        'simplehtmldom\\Debug' => __DIR__ . '/..' . '/simplehtmldom/simplehtmldom/Debug.php',
     35        'simplehtmldom\\HtmlDocument' => __DIR__ . '/..' . '/simplehtmldom/simplehtmldom/HtmlDocument.php',
     36        'simplehtmldom\\HtmlNode' => __DIR__ . '/..' . '/simplehtmldom/simplehtmldom/HtmlNode.php',
     37        'simplehtmldom\\HtmlWeb' => __DIR__ . '/..' . '/simplehtmldom/simplehtmldom/HtmlWeb.php',
    3238    );
    3339
     
    3541    {
    3642        return \Closure::bind(function () use ($loader) {
    37             $loader->prefixLengthsPsr4 = ComposerStaticInitfd83684bdf6b99fc67c2944c45cff21f::$prefixLengthsPsr4;
    38             $loader->prefixDirsPsr4 = ComposerStaticInitfd83684bdf6b99fc67c2944c45cff21f::$prefixDirsPsr4;
    39             $loader->classMap = ComposerStaticInitfd83684bdf6b99fc67c2944c45cff21f::$classMap;
     43            $loader->prefixLengthsPsr4 = ComposerStaticInit323bde87c3a41909797ba511302c4b47::$prefixLengthsPsr4;
     44            $loader->prefixDirsPsr4 = ComposerStaticInit323bde87c3a41909797ba511302c4b47::$prefixDirsPsr4;
     45            $loader->classMap = ComposerStaticInit323bde87c3a41909797ba511302c4b47::$classMap;
    4046
    4147        }, null, ClassLoader::class);
  • ai-content-writer/trunk/vendor/composer/installed.json

    r3229925 r3285449  
    11{
    2     "packages": [],
     2    "packages": [
     3        {
     4            "name": "simplehtmldom/simplehtmldom",
     5            "version": "2.0-RC2",
     6            "version_normalized": "2.0.0.0-RC2",
     7            "source": {
     8                "type": "git",
     9                "url": "https://github.com/simplehtmldom/simplehtmldom.git",
     10                "reference": "3c87726400e59d8e1bc4709cfe82353abeb0f4d1"
     11            },
     12            "dist": {
     13                "type": "zip",
     14                "url": "https://api.github.com/repos/simplehtmldom/simplehtmldom/zipball/3c87726400e59d8e1bc4709cfe82353abeb0f4d1",
     15                "reference": "3c87726400e59d8e1bc4709cfe82353abeb0f4d1",
     16                "shasum": ""
     17            },
     18            "require": {
     19                "ext-iconv": "*",
     20                "php": ">=5.6"
     21            },
     22            "require-dev": {
     23                "phpunit/phpunit": "^6 || ^7"
     24            },
     25            "suggest": {
     26                "ext-curl": "Needed to support cURL downloads in class HtmlWeb",
     27                "ext-mbstring": "Allows better decoding for multi-byte documents",
     28                "ext-openssl": "Allows loading HTTPS pages when using cURL"
     29            },
     30            "time": "2019-11-09T15:42:50+00:00",
     31            "type": "library",
     32            "installation-source": "dist",
     33            "autoload": {
     34                "classmap": [
     35                    "./"
     36                ],
     37                "exclude-from-classmap": [
     38                    "/example/",
     39                    "/manual/",
     40                    "/testcase/",
     41                    "/tests/",
     42                    "simple_html_dom.php"
     43                ]
     44            },
     45            "notification-url": "https://packagist.org/downloads/",
     46            "license": [
     47                "MIT"
     48            ],
     49            "authors": [
     50                {
     51                    "name": "S.C. Chen",
     52                    "role": "Developer"
     53                },
     54                {
     55                    "name": "John Schlick",
     56                    "role": "Developer"
     57                },
     58                {
     59                    "name": "logmanoriginal",
     60                    "role": "Developer"
     61                }
     62            ],
     63            "description": "A fast, simple and reliable HTML document parser for PHP.",
     64            "homepage": "https://simplehtmldom.sourceforge.io/",
     65            "keywords": [
     66                "Simple",
     67                "dom",
     68                "html",
     69                "parser",
     70                "php",
     71                "simplehtmldom"
     72            ],
     73            "support": {
     74                "issues": "https://sourceforge.net/p/simplehtmldom/bugs/",
     75                "rss": "https://sourceforge.net/p/simplehtmldom/news/feed.rss",
     76                "source": "https://sourceforge.net/p/simplehtmldom/repository/",
     77                "wiki": "https://simplehtmldom.sourceforge.io/docs/"
     78            },
     79            "install-path": "../simplehtmldom/simplehtmldom"
     80        }
     81    ],
    382    "dev": false,
    483    "dev-package-names": []
  • ai-content-writer/trunk/vendor/composer/installed.php

    r3265465 r3285449  
    22    'root' => array(
    33        'name' => 'beautifulplugins/ai-content-writer',
    4         'pretty_version' => 'v1.6.0',
    5         'version' => '1.6.0.0',
    6         'reference' => 'f6eb412575a44c9cea512f73350dc8803362f006',
     4        'pretty_version' => 'v2.0.0',
     5        'version' => '2.0.0.0',
     6        'reference' => '8501631baecc9e8184cbfec6b3f548e5c5f071e2',
    77        'type' => 'wordpress-plugin',
    88        'install_path' => __DIR__ . '/../../',
     
    1212    'versions' => array(
    1313        'beautifulplugins/ai-content-writer' => array(
    14             'pretty_version' => 'v1.6.0',
    15             'version' => '1.6.0.0',
    16             'reference' => 'f6eb412575a44c9cea512f73350dc8803362f006',
     14            'pretty_version' => 'v2.0.0',
     15            'version' => '2.0.0.0',
     16            'reference' => '8501631baecc9e8184cbfec6b3f548e5c5f071e2',
    1717            'type' => 'wordpress-plugin',
    1818            'install_path' => __DIR__ . '/../../',
     
    2020            'dev_requirement' => false,
    2121        ),
     22        'simplehtmldom/simplehtmldom' => array(
     23            'pretty_version' => '2.0-RC2',
     24            'version' => '2.0.0.0-RC2',
     25            'reference' => '3c87726400e59d8e1bc4709cfe82353abeb0f4d1',
     26            'type' => 'library',
     27            'install_path' => __DIR__ . '/../simplehtmldom/simplehtmldom',
     28            'aliases' => array(),
     29            'dev_requirement' => false,
     30        ),
    2231    ),
    2332);
Note: See TracChangeset for help on using the changeset viewer.