<?php
if ( ! defined( 'ABSPATH' ) ) exit;
/**
* Class to send an e-mail
*/
if ( !class_exists('cmplz_mailer') ) {
class cmplz_mailer {
public $to;
public $title;
public $headers;
public $message;
public $subject;
public $change_text;
public $sent_to_text;
public $what_now_text;
public $sent_by_text;
public $warning_blocks;
public $error = '';
public $body;
public function __construct() {
$this->sent_by_text = __("This email is part of the Complianz Notification System", "complianz-gdpr");
$this->subject = __("Notification by Complianz", "complianz-gdpr");
$this->title = __("Learn more about our features!", "complianz-gdpr");
$this->sent_to_text = __("This email was sent to", "complianz-gdpr");
$this->what_now_text = __( "What now?", "complianz-gdpr");
$this->change_text = __("I didn't change any settings in the plugin.", "complianz-gdpr");
$domain = '<a href="'.site_url().'">'.site_url().'</a>';
$this->message = sprintf(__("You have enabled a feature on %s. We think it's important to let you know a little bit more about this feature so you can use it without worries.","complianz-gdpr"), $domain);
add_action('wp_mail_failed', array($this, 'log_mailer_errors'), 10, 1);
}
/**
* Send a test email
* @return array
*/
public function send_test_mail(){
if ( !cmplz_user_can_manage() ) {
return ['success' => false, 'message' => 'Not allowed'];
}
$this->to = cmplz_get_option('notifications_email_address' );
if ( !is_email($this->to) ) {
$this->to = get_bloginfo('admin_email');
}
if ( !is_email($this->to) ){
return ['success' => false, 'message' => __('Email address not valid',"complianz-gdpr")];
}
$this->title = __("Complianz - Notification Test", "complianz-gdpr");
$this->message = __("This email is confirmation that any email notices are likely to reach your inbox.", "complianz-gdpr");
$this->warning_blocks = [
[
'title' => __("About notifications","complianz-gdpr"),
'message' => __("Email notifications are only sent for important updates, changes or when certain features are enabled.","complianz-gdpr"),
'url' => 'https://complianz.io/instructions/about-email-notifications/',
]
];
$success = $this->send_mail(true);
if ($success) {
return ['success' => true, 'message' => __('Email sent! Please check your mail', "complianz-gdpr")];
}
if (empty($this->error)) {
$this->error = __('Email could not be sent.', "complianz-gdpr");
} else {
$this->error = __('An error occurred:', "complianz-gdpr").'<br>'.$this->error;
}
return ['success' => false, 'message' => $this->error];
}
public function log_mailer_errors( $wp_error ){
if (is_wp_error($wp_error)) {
$this->error = $wp_error->get_error_message();
}
}
/**
* Send an e-mail with the correct login URL
*
* @param bool $override_rate_limit
*
* @return bool
*/
public function send_mail($override_rate_limit = false) {
if ( empty($this->message) || empty($this->subject) ) {
return false;
}
$this->to = cmplz_get_option('notifications_email_address' );
if ( !is_email($this->to) ) {
$this->to = get_bloginfo('admin_email');
}
$template = file_get_contents(__DIR__.'/templates/email.html');
$block_html = '';
if (is_array($this->warning_blocks) && count($this->warning_blocks)>0) {
$block_template = file_get_contents(__DIR__.'/templates/block.html');
foreach ($this->warning_blocks as $warning_block){
$block_html .= str_replace(
['{title}','{message}','{url}'],
[ sanitize_text_field($warning_block['title']), wp_kses_post($warning_block['message']), esc_url_raw($warning_block['url']) ],
$block_template);
}
}
$body = str_replace(
[
'{title}',
'{message}',
'{warnings}',
'{email-address}',
'{learn-more}',
'{site_url}',
'{change_text}',
'{what_now}',
'{sent_to_text}',
'{sent_by_text}'
],
[
sanitize_text_field( $this->title ),
wp_kses_post( $this->message ),
$block_html,
$this->to,
__( "Learn more", "complianz-gdpr" ),
site_url(),
$this->change_text,
$this->what_now_text,
$this->sent_to_text,
$this->sent_by_text
], $template );
$success = wp_mail( $this->to, sanitize_text_field($this->subject), $body, array('Content-Type: text/html; charset=UTF-8') );
set_transient('cmplz_email_recently_sent', true, 5 * MINUTE_IN_SECONDS );
return $success;
}
/**
* Sends a basic email.
*
* This method checks if the necessary properties (`to`, `message`, and `subject`) are set before sending the email.
* If any of these properties are empty, the method returns false.
* Otherwise, it sends the email using the `wp_mail` function.
*
* @return bool True if the email was sent successfully, false otherwise.
*/
public function send_basic_mail() {//
// check the properties before to send
if ( empty($this->to) || empty($this->message) || empty($this->subject) ) {
return false;
}
return wp_mail( $this->to, sanitize_text_field($this->subject), wp_kses_post($this->body), $this->headers);
}
}
}
في الآونة الأخيرة، اجتاح تريند “Ghibli Style” منصات التواصل الاجتماعي، حيث يقوم المستخدمون بتحويل صورهم الشخصية إلى لوحات فنية مستوحاة من أسلوب استوديو جيبلي الياباني الشهير. هذا التريند، الذي يعتمد على تقنيات الذكاء الاصطناعي، أثار إعجاب الكثيرين بجمالياته الفنية، لكنه في الوقت ذاته فتح الباب أمام مخاوف تتعلق بالخصوصية وسرقة البيانات، إلى جانب تأثيره على الفنانين التقليديين.
جاذبية فنية لكنها مثيرة للقلق
توضح شيري مدحت، مدرسة رسم وفنانة تشكيلية، أن التريند “يجذب الناس لأنه بيحول صورهم لحاجة شبه أفلام الطفولة اللي فيها خيال وسحر”، مضيفة: “لكن المشكلة إنه بيعتمد على أدوات ذكاء صناعي مش بيحترم مجهود الفنان اللي بيتعب سنين علشان يوصل لنفس النتيجة يدوي”. وأشارت إلى أن تكرار الاعتماد على تلك الأدوات قد “يسيء لفكرة الفن نفسه ويهمّش دور الرسام والمصمم الحقيقي، وده خطر على المهنة مش بس على الفنانين”
أما جوليا عبده، طالبة جامعية ومستخدمة للتريند، فقالت: “أنا أول ما شفت الناس بيحطوا صورهم بأسلوب جيبلي كنت مبسوطة وعايزة أعمل زيهم، حسيت إنها طريقة ظريفة أظهر بيها شكلي في صورة كرتونية جميلة”. لكنها أضافت: “بصراحة بعد ما قريت إن ممكن التطبيق يحتفظ بالصور أو يستخدمها من غير إذني بدأت أتردد، بس برضه ما قدرتش أقاوم أجربه”.
مخاوف قانونية حول الخصوصية
من جانبه، حذر المحامي أبانوب عادل من الانجراف وراء هذه الترندات دون وعي قانوني، قائلًا: “فيه تطبيقات فعلاً بتاخد الصور وبتخلي المستخدم يوافق على بنود قانونية مخفية زي إنهم يقدروا يستخدموا الصورة في التدريب أو الدعاية أو حتى يبيعوها”، مضيفًا أن “في مصر فيه قانون لحماية البيانات الشخصية لكن تطبيقه لسه مش كافي خصوصًا في الحاجات اللي بتحصل على منصات أجنبية”. وشدد على أن “أي شخص يتضرر بسبب استخدام غير مصرح به لصورته يقدر يشتكي، بس لازم يثبت الضرر ويعرف التطبيق تبع مين، ودي مشكلة في ذاتها”.
و تشير منصات تقنية مثل Proton إلى أن “بمجرد مشاركة صورك الشخصية مع الذكاء الاصطناعي، تفقد السيطرة على كيفية استخدامها”. كما حذّرت الباحثة البريطانية Elle Farrell-Kingsley من أن تحميل الصور على هذه الأنظمة قد يعرّض المستخدمين، خصوصًا الأطفال، لانتهاكات في الخصوصية أو استخدامات غير أخلاقية.
بين انبهار المستخدمين بجمال الصور وتحذيرات الخبراء، يبقى تريند “Ghibli Style” نموذجًا جديدًا لصراع قديم: التكنولوجيا في مواجهة الفن، والذكاء الاصطناعي في مواجهة الخصوصية. فهل نحن أمام وسيلة للتعبير الإبداعي أم أمام فخ رقمي جديد يتسلل إلينا من خلف شاشة هاتف ذكي؟