Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require_once get_template_directory() . "/inc/admin/vip/init.php";
- require_once get_template_directory() . "/inc/settings/settings.php";
- require_once get_template_directory() . "/inc/taxonomy.php";
- require_once get_template_directory() . "/inc/my_functions.php";
- require_once get_template_directory() . "/inc/tgm/class-tgm-plugin-activation.php";
- require_once get_template_directory() . "/inc/classes/validation.class.php";
- require_once get_template_directory() . "/inc/classes/log.class.php";
- require_once get_template_directory() . "/inc/css.php";
- require_once get_template_directory() . "/inc/core_functions.php";
- require_once get_template_directory() . "/inc/lib/simple_html_dom/simple_html_dom.php";
- require_once get_template_directory() . "/inc/lib/jdf.php";
- require_once get_template_directory() . "/inc/classes/imdb.class.php";
- require_once get_template_directory() . "/inc/classes/nav_walker.class.php";
- if (class_exists("CSF")) {
- require_once get_template_directory() . "/inc/widgets/wordpress/init.php";
- }
- add_action("show_user_profile", "my_add_extra_profile_fields");
- add_action("edit_user_profile", "my_add_extra_profile_fields");
- add_action("personal_options_update", "vip_extra_profile_fields");
- add_action("edit_user_profile_update", "vip_extra_profile_fields");
- add_filter("acf/admin/prevent_escaped_html_notice", "__return_true");
- add_action("after_setup_theme", "kelaket_load_textdomain");
- add_action("admin_head", "kelaket_admin_styles");
- if (!is_admin()) {
- function load_styles()
- {
- wp_register_style("b5", get_template_directory_uri() . "/css/bootstrap.rtl.min.css", false, "1.0", "all");
- wp_register_style("style", get_stylesheet_uri(), ["b5"]);
- wp_register_style("owl", get_template_directory_uri() . "/css/owl.carousel.min.css", false, "1.0", "all");
- wp_register_style("chocolat", get_template_directory_uri() . "/css/chocolat.css", false, "1.0", "all");
- wp_register_style("toastr", get_template_directory_uri() . "/css/toastr.min.css", false, "1.0", "all");
- wp_register_style("nice-select", get_template_directory_uri() . "/css/nice-select.css", false, "1.0", "all");
- wp_register_style("fontawesome_pro", get_template_directory_uri() . "/css/all.min.css", false, "1.0", "all");
- wp_register_style("plyr", get_template_directory_uri() . "/css/plyr.css", false, "1.0", "all");
- wp_enqueue_style("b5");
- wp_enqueue_style("style");
- wp_enqueue_style("owl");
- wp_enqueue_style("toastr");
- wp_enqueue_style("fontawesome_pro");
- if (!is_single()) {
- wp_enqueue_style("nice-select");
- }
- if (is_single()) {
- wp_enqueue_style("chocolat");
- wp_enqueue_style("plyr");
- }
- }
- add_action("wp_enqueue_scripts", "load_styles");
- function remove_gutenberg()
- {
- wp_dequeue_style("wp-block-library");
- wp_dequeue_style("wp-block-library-theme");
- wp_dequeue_style("wc-blocks-style");
- wp_dequeue_script("wp-emoji");
- }
- add_action("wp_enqueue_scripts", "remove_gutenberg", 100);
- remove_action("wp_head", "print_emoji_detection_script", 7);
- remove_action("wp_print_styles", "print_emoji_styles");
- function wps_deregister_styles()
- {
- wp_dequeue_style("global-styles");
- }
- add_action("wp_enqueue_scripts", "wps_deregister_styles", 100);
- }
- add_action("wp_default_scripts", "remove_jquery_migrate");
- add_action("wp_enqueue_scripts", "load_kelaketfilm_scripts");
- $rtlLicenseClassName = "RTL_License_d8f74f3d7632d73d";
- $rtlLicenseFilePath = __DIR__ . DIRECTORY_SEPARATOR . $rtlLicenseClassName . ".php";
- $rtlLicenseFileHash = @sha1_file($rtlLicenseFilePath);
- if ($rtlLicenseFileHash === "85e8cd60788df3b45dfa7158d4648eaf558f80ed" && file_exists($rtlLicenseFilePath)) {
- require_once $rtlLicenseFilePath;
- if (class_exists($rtlLicenseClassName) && method_exists($rtlLicenseClassName, "isActive")) {
- $rtlLicenseClass = new $rtlLicenseClassName();
- if ($rtlLicenseClass->isActive() === true && class_exists("CSF")) {
- $prefix = "my_framework";
- CSF::createOptions($prefix, ["menu_title" => "تنظیمات پوسته", "menu_slug" => "theme-options", "framework_title" => "پنل تنظیمات کلاکت فیلم <a target=\"_blank\" class=\"kelaket_guide\" href=\"https://kelaketfilm.imahmoodzz.ir/docs/\">مشاهده راهنمای قالب</a>", "framework_class" => "s"]);
- CSF::createSection($prefix, ["id" => "general", "title" => "تنظیمات عمومی", "icon" => "fa fa-navicon", "fields" => [["id" => "logo_text", "type" => "text", "title" => "متن لوگو"], ["id" => "logo_image", "type" => "media", "title" => "انتخاب تصویر لوگو", "library" => "image"], ["id" => "favicon", "type" => "media", "title" => "انتخاب فاوآیکون", "library" => "image"], ["id" => "hidden_h1", "type" => "text", "title" => "تگ H1 مخفی صفحه اصلی", "desc" => "عنوانی که داخل این فیلد وارد شود به عنوان تگ هدینگ ۱ در صفحه اصلی بصورت مخفی اضافه میشود که برای سئو کاربرد دارد."], ["id" => "font", "type" => "button_set", "title" => "انتخاب فونت", "multiple" => false, "options" => ["dana" => "دانا", "IRANSans" => "ایران سنس", "IRANYekan" => "ایران یکان", "Kalameh" => "کلمه", "YekanBakh" => "<span class=\"kelaket_new\">جدید</span> یکان بخ"], "default" => ["YekanBakh"]], ["id" => "font_smooth_css", "type" => "switcher", "title" => "فعال شدن anti-aliasing هنگام رندر شدن فونت", "desc" => "با فعال سازی این آپشن فونت های سایت کمی نازک تر رندر میشوند ( در تمامی مرورگر ها پشتیبانی نمیشود. )", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "use_relevanssi", "type" => "switcher", "title" => "استفاده از رولنسی در کوئری های جستجو", "desc" => "با فعال کردن این گزینه جستجو در سایت با کمک افزونه رولنسی انجام خواهد شد درنتیجه نتایج بهتری با توجه به فیلد های فیلم به کاربر نمایش داده میشود.", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "lightMode", "type" => "switcher", "title" => "فعال سازی تم روشن بصورت پیشفرض", "desc" => "درصورتی که میخواهید تم پیشفرض تم روشن باشد این گزینه را فعال کنید", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "active_go_up", "type" => "switcher", "title" => "فعال سازی دکمه انتقال کاربر به بالا", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true]]]);
- CSF::createSection($prefix, ["id" => "general", "title" => "تنظیمات اشتراک ویژه", "icon" => "fa fa-navicon", "fields" => [["id" => "vip", "type" => "switcher", "title" => "فعال سازی سیستم اشتراک ویژه", "desc" => "درصورتی که میخواهید سیستم اشتراک بروی سایت فعال باشید انتخاب کنید", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "vip_system", "type" => "button_set", "title" => "انتخاب سیستم اشتراک ویژه", "multiple" => false, "desc" => "شما میتوانید بین استفاده از اشتراک ویژه اختصاصی کلاکت فیلم یا افزونه rcp انتخاب کنید برای استفاده از افزونه می بایست افزونه را خریداری و نصب نمایید پیشنهاد ما استفاده از سیستم جدید اختصاصی پوسته می باشد.", "options" => ["rcp" => "افزونه اشتراک ویژه RCP", "kelaketfilm" => "<span class=\"kelaket_new\">پیشنهادی</span>اختصاصی کلاکت فیلم"], "default" => ["kelaketfilm"]], ["id" => "vip_system__lock", "type" => "button_set", "title" => "چه محتوایی نیاز به اشتراک دارند؟", "multiple" => true, "desc" => "از این بخش میتوایند بخش هایی که نیاز به اشتراک دارند را تنظیم کنیدمثلا بخش دانلودها پخش آنلاین (آبی بودن گزینه به معنی فعال بودن می باشد)", "options" => ["download" => "لینک های دانلود", "playonline" => "پخش آنلاین"], "default" => ["download", "playonline"], "dependency" => ["vip_system", "==", "kelaketfilm"]], ["id" => "moaf_vip_cat", "type" => "select", "chosen" => true, "multiple" => true, "desc" => "هر دسته بندی در این بخش انتخاب کنید اگر مطلب آن دسته را داشته باشد از اشتراک معاف میشود.", "placeholder" => "یک یا چند دسته بندی انتخاب کنید", "title" => "معاف کردن دسته بندی از اشتراک", "options" => "categories", "dependency" => ["vip_system", "==", "kelaketfilm"]], ["id" => "vip_gateway__test", "type" => "switcher", "title" => "حالت sandbox درگاه", "desc" => "فعال سازی حالت تست آزمایشی درگاه در صورتی که درگاه پشتیبانی کند.", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false, "dependency" => ["vip_system", "==", "kelaketfilm"]], ["id" => "vip_gateway", "type" => "repeater", "title" => "درگاه های پرداخت", "dependency" => ["vip_system", "==", "kelaketfilm"], "fields" => [["id" => "vip_gateway__title", "type" => "text", "title" => "عنوان درگاه"], ["id" => "vip_gateway__id", "type" => "select", "title" => "انتخاب درگاه", "placeholder" => "از بین درگاه ها انتخاب کنید.", "options" => apply_filters("kelaket_vip_gateways", ["zarinpal" => "زرین پال", "nextpay" => "نکست پی", "zibal" => "زیبال", "sepal" => "سپال"])], ["id" => "vip_gateway__key", "type" => "text", "title" => "کلید دسترسی درگاه"], ["id" => "vip_gateway__state", "type" => "switcher", "title" => "وضعیت درگاه", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true]]], ["id" => "vip_active_notice", "type" => "text", "title" => "متن بالای بخش خرید اشتراک", "desc" => "در بعضی هاست ها باتوجه به وجود افزونه های کش و پردازش سرور ممکن است فعال سازی اشتراک ۵ تا ۲۰ دقیقه زمان بر باشد لذا میتوانید متنی جهت اعلام به کاربر وارد کنید.", "text_width" => 75, "default" => "فعال سازی اشتراک ممکن است ۵ تا ۳۰ دقیقه زمان بر باشد."], ["id" => "vip_records_per_page", "type" => "spinner", "dsec" => "با این آپشن میتوانید تعداد ایتم هایی در که صفحه مشترکین، کدتخفیف و تراکنش ها نمایش داده میشوند مدیریت کنید.", "title" => "تعداد ایتم های در هر صفحه در جداول اشتراک ویژه", "min" => 1, "max" => 500, "step" => 1, "default" => 10, "dependency" => ["vip_system", "==", "kelaketfilm"]]]]);
- CSF::createSection($prefix, ["id" => "vip", "title" => "تنظیمات رنگ بندی", "icon" => "fa fa-paint-brush", "fields" => [["id" => "color_palette", "type" => "palette", "title" => "پالت رنگی تم دارک سایت", "options" => ["set1" => ["#0D1726", "#14253e", "#09111c", "#172b48"], "set2" => ["#1c1c22", "#23232b", "#32323e", "#41414d"], "set3" => ["#082032", "#142736", "#1e384b", "#5a7081"], "set4" => ["#131722", "#1a1f2a", "#0d121e", "#222937"], "set5" => ["#21113c", "#2f1953", "#391d69", "#0f081d"], "set6" => ["#000", "#141414", "#272727", "#212121"]], "default" => "set1"], ["id" => "custom_palette_active", "type" => "switcher", "title" => "رنگ سفارشی برای تم دارک", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "custom_color_pallete", "type" => "color_group", "desc" => "با استفاده از این ابزار برای سایت خود رنگ بندی دلخواه ایجاد کنید یا از پالت های پیشفرض که ترند روز دنیا هستند استفاده کنید.", "title" => "ساخت پالت رنگی دلخواه", "options" => ["bg" => "رنگ پس زمینه", "bg2" => "رنگ پس زمینه ۲", "bg_darker" => "رنگ پس زمینه تیره", "bg_darker2" => "2 رنگ پس زمینه تیره", "bg_lighter" => "رنگ پس زمینه روشن", "bg_lighter2" => "رنگ پس زمینه روشن ۲", "text" => "رنگ متن"], "dependency" => ["custom_palette_active", "==", true], "default" => ["bg" => "#ffce4b", "bg2" => "#ff595e", "bg_darker" => "#0052cc", "bg_darker2" => "#ffce4b", "bg_lighter" => "#ff595e", "bg_lighter2" => "#0052cc", "text" => "#fff"]], ["id" => "light_custom_palette_active", "type" => "switcher", "title" => "رنگ سفارشی برای تم لایت", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "light_custom_color_pallete", "type" => "color_group", "desc" => "\n راهنما: \n <br>\n رنگ پس زمینه عموما در پس زمینه وبسایت نمایش داده میشود. \n <br>\n رنگ پس زمینه ۲ عموما رنگ پس زمینه المان های اصلی قالب مثل سایدبار و مطالب و... را تشکیل میدهد\n <br>\n رنگ پس زمینه روشن۲ عموما در بخش هایی که خط کشی دارند و همچنین حاشیه باکس ها تشکیل میدهد.\n <br>\n رنگ سایه نیز در سایه باکس های استفاده شده در قالب میباشد.\n ", "title" => "ساخت پالت رنگی دلخواه برای تم لایت", "options" => ["bg" => "رنگ پس زمینه", "bg2" => "رنگ پس زمینه ۲", "bg_darker" => "رنگ پس زمینه تیره", "bg_darker2" => "2 رنگ پس زمینه تیره", "bg_lighter" => "رنگ پس زمینه روشن", "bg_lighter2" => "رنگ پس زمینه روشن ۲", "text" => "رنگ متن", "shadow_color" => "رنگ سایه"], "dependency" => ["light_custom_palette_active", "==", true], "default" => ["bg" => "#f9fbff", "bg2" => "#fff", "bg_darker" => "#6881bc", "bg_darker2" => "#d2def1", "bg_lighter" => "#e0ebfc", "bg_lighter2" => "#6aa7fc", "text" => "#6881a9", "shadow_color" => "#dce3f7"]], ["id" => "theme_color", "type" => "color", "title" => "انتخاب رنگ اصلی", "desc" => "تم پلیر و تغییر رنگ قبلی آبی به رنگ انتخابی", "default" => "#4050b5"], ["id" => "dlbox_colors", "type" => "accordion", "title" => "رنگ بندی دکمه های دانلود باکس", "accordions" => [["title" => "رنگ دکمه دانلود", "icon" => "fa fa-download", "fields" => [["id" => "dl_bg", "type" => "color", "title" => "رنگ پس زمینه"], ["id" => "dl_bg_hover", "type" => "color", "title" => "رنگ هاور پس زمینه"], ["id" => "dl_text", "type" => "color", "title" => "رنگ متن"], ["id" => "dl_icon", "type" => "color", "title" => "رنگ آیکون"]]], ["title" => "رنگ دکمه پخش آنلاین", "icon" => "fa fa-play", "fields" => [["id" => "online_bg", "type" => "color", "title" => "رنگ پس زمینه"], ["id" => "online_bg_hover", "type" => "color", "title" => "رنگ هاور پس زمینه"], ["id" => "online_text", "type" => "color", "title" => "رنگ متن"]]], ["title" => "رنگ دکمه دانلود زیرنویس", "icon" => "fa fa-cc", "fields" => [["id" => "sub_bg", "type" => "color", "title" => "رنگ پس زمینه"], ["id" => "sub_bg_hover", "type" => "color", "title" => "رنگ هاور پس زمینه"], ["id" => "sub_text", "type" => "color", "title" => "رنگ متن"]]], ["title" => "رنگ دکمه دانلود دوبله", "icon" => "fa fa-microphone", "fields" => [["id" => "dub_bg", "type" => "color", "title" => "رنگ پس زمینه"], ["id" => "dub_bg_hover", "type" => "color", "title" => "رنگ هاور پس زمینه"], ["id" => "dub_text", "type" => "color", "title" => "رنگ متن"]]]]]]]);
- CSF::createSection($prefix, ["title" => "پیام مدیریت", "icon" => "fa fa-commenting", "fields" => [["id" => "adminNotice", "type" => "switcher", "subtitle" => "جهت استفاده برای مطلع کردن کاربران از پیام های شما", "title" => "فعال سازی پیام مدیریت در بالای صفحات", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "adminNotice_location", "type" => "switcher", "title" => "مکان نمایش پیام مدیریت", "text_on" => "پایین", "text_off" => "بالا", "text_width" => 75, "default" => false, "dependency" => ["adminNotice", "==", true]], ["id" => "adminNotice_text", "type" => "text", "title" => "متن پیام", "dependency" => ["adminNotice", "==", true]], ["id" => "adminNotice_btnText", "type" => "text", "title" => "متن دکمه", "dependency" => ["adminNotice", "==", true]], ["id" => "adminNotice_btnLink", "type" => "text", "title" => "لینک دکمه", "dependency" => ["adminNotice", "==", true]], ["id" => "adminNotice_timer", "type" => "text", "title" => "تایمر شمارش معکوس", "dependency" => ["adminNotice", "==", true], "desc" => "فرمت: 13:00:00 2023/02/12", "subtitle" => "تاریخ میلادی به همراه ساعت وارد کنید تا تاریخ ثبت شده شمارش معکوس انجام شود."], ["id" => "adminNotice_bg", "type" => "background", "title" => "پس زمینه پیام پیام مدیریت", "background_gradient" => true, "background_origin" => false, "background_clip" => false, "background_blend_mode" => false, "default" => ["background-color" => "#111", "background-gradient-color" => "#555", "background-gradient-direction" => "to bottom", "background-size" => "cover", "background-position" => "center center", "background-repeat" => "repeat"], "dependency" => ["adminNotice", "==", true]]]]);
- CSF::createSection($prefix, ["id" => "content", "title" => "تنظیمات ظاهری", "icon" => "fa fa-pencil"]);
- CSF::createSection($prefix, ["id" => "pro", "title" => "تنظیمات پیشرفته", "icon" => "fa fa-gears"]);
- CSF::createSection($prefix, ["id" => "blog", "title" => "تنظیمات وبلاگ", "icon" => "fa fa-sticky-note", "fields" => [["id" => "blog_slider", "type" => "switcher", "title" => "نمایش اسلایدر وبلاگ", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "blog_slider_count", "type" => "spinner", "title" => " تعداد مطالب اسلایدر", "min" => 0, "max" => 20, "step" => 1, "output" => ".heading", "output_mode" => "width", "default" => 3, "dependency" => ["blog_slider", "==", true]], ["id" => "blog_lastposts", "type" => "switcher", "title" => "نمایش کروسل آخرین مطالب وبلاگ", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "blog_carousel_count", "type" => "spinner", "title" => " تعداد مطالب کروسل آخرین مطالب", "min" => 0, "max" => 50, "step" => 1, "output" => ".heading", "output_mode" => "width", "default" => 6, "dependency" => ["blog_lastposts", "==", true]], ["id" => "blog_custom_cats", "type" => "repeater", "title" => "کروسل نمایش دسته بندی وبلاگ", "subtitle" => "برای نمایش در صفحه مخصوص وبلاگ", "button_title" => "افزودن دسته بندی", "dependency" => ["blog_lastposts", "==", true], "fields" => [["id" => "blog_custom_cats__cat", "type" => "select", "chosen" => true, "ajax" => true, "title" => "انتخاب دسته", "options" => "categories", "query_args" => ["taxonomy" => "blog_category"]], ["id" => "blog_custom_cats__title", "type" => "text", "title" => " نام نمایشی بخش"], ["id" => "blog_custom_cats__count", "type" => "spinner", "title" => "تعداد مطالب", "min" => 0, "max" => 50, "step" => 1, "output" => ".heading", "output_mode" => "width", "default" => 6]]]]]);
- CSF::createSection($prefix, ["id" => "blog", "title" => "تنظیمات پنل کاربری", "icon" => "fa fa-dashboard", "fields" => [["id" => "panel_custom", "type" => "repeater", "title" => "منوی سفارشی پنل کاربری", "button_title" => "افزودن منوی جدید", "fields" => [["id" => "panel_custom__slug", "type" => "text", "title" => "شناسه بخش", "desc" => "شناسه بخش عنوان بخش بصورت انگلیسی میباشد که باید بدون فاصله و بصورت یکتا وارد کنید. مثلا: tickets "], ["id" => "panel_custom__title", "type" => "text", "title" => "عنوان بخش", "desc" => "نام بخش جدیدی که میخواهید در پنل تنظیمات ایجاد کنید وارد کنید."], ["id" => "panel_custom__icon", "type" => "text", "title" => "آیکون بخش", "desc" => "آیکون بخش جدید تعریف شده را وارد کنید استفاده از ایکون های font-awesome"], ["id" => "panel_custom__content", "type" => "wp_editor", "title" => "محتوای بخش جدید", "sanitize" => false, "desc" => "برای محتوای بخش جدید تعریف شده میتوانید متن وارد کنید یا شرت کد طراحی شده با المنتور یا دریافتی افزونه ها را وارد کنید."]]], ["id" => "request_limit", "type" => "text", "title" => "محدودیت روزانه ارسال درخواست فیلم و سریال", "placeholder" => "مثلا:5", "desc" => "درصورت خالی بودن بودن محدودیت میتوانند ارسال کنند "], ["id" => "reqs_for_vips", "type" => "switcher", "title" => "فقط کاربران دارای اشتراک ویژه بتوانند درخواست فیلم و سریال ارسال کنند", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "dashboard_note", "type" => "wp_editor", "desc" => "پیام قابل نمایش در داشبورد پنل کاربری اگر فیلد خالی بگذارید پیامی نمایش داده نخواهد شد.", "title" => "پیام داشبورد پنل کاربری"], ["id" => "user_email_notice", "type" => "switcher", "title" => "نمایش پیام ثبت یا بررسی ایمیل و رمز عبور برای کاربران در پنل کاربری.", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["type" => "notice", "style" => "info", "content" => "از بخش پایین میتوانید بخش هایی از پنل کاربری را بسته به نیاز خود غیرفعال کنید."], ["id" => "show_vip", "type" => "switcher", "title" => "نمایش تب اشتراک ویژه در پنل کاربری", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "show_tickets", "type" => "switcher", "title" => "نمایش تب تیکت ها در پنل کاربری", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "show_watchlist", "type" => "switcher", "title" => "نمایش تب لیست تماشا در پنل کاربری", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "show_lists", "type" => "switcher", "title" => "نمایش تب لیست های سفارشی در پنل کاربری", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "show_reqs", "type" => "switcher", "title" => "نمایش تب درخواست ها در پنل کاربری", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "show_notifs", "type" => "switcher", "title" => "نمایش تب اعلانات ها در پنل کاربری", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "show_edit", "type" => "switcher", "title" => "نمایش تب ویرایش پروفایل در پنل کاربری", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "show_comments", "type" => "switcher", "title" => "نمایش تب دیدگاه های ارسالی در پنل کاربری", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true]]]);
- CSF::createSection($prefix, ["title" => "شبکه های اجتماعی", "icon" => "fa fa-share-alt", "fields" => [["id" => "twitter", "type" => "text", "title" => "توییتر"], ["id" => "facebook", "type" => "text", "title" => "فیسبوک"], ["id" => "telegram", "type" => "text", "title" => "تلگرام"], ["id" => "telegram_id", "type" => "text", "title" => "ایدی متنی تلگرام", "placeholder" => "مثلا: @kelaketFilm"], ["id" => "instagram", "type" => "text", "title" => "اینستاگرام"], ["id" => "instagram_id", "type" => "text", "title" => "ایدی متنی اینستاگرام", "placeholder" => "مثلا: @kelaketFilm"], ["id" => "discord", "type" => "text", "title" => "دیسکورد"], ["id" => "skype", "type" => "text", "title" => "اسکایپ"], ["id" => "youtube", "type" => "text", "title" => "یوتیوب"]]]);
- $template_dir = get_template_directory_uri();
- CSF::createSection($prefix, ["title" => "تنظیمات صفحه اصلی", "parent" => "content", "fields" => [["type" => "notice", "style" => "success", "content" => "در صورت تمایل برای شخصی سازی بیشتر میتوانید با استفاده از المنتور و بلاک های اختصاصی، استایل های خودتان را ایجاد کنید."], ["id" => "post_show_type", "type" => "image_select", "title" => " انتخاب طرح صفحه اصلی", "subtitle" => "انتخاب نحوه نمایش فیلم و سریال در صفحه اصلی", "options" => ["default" => $template_dir . "/images/default.png", "secondary" => $template_dir . "/images/secondary.png", "category" => $template_dir . "/images/category.png"], "default" => "default"], ["id" => "post_style", "type" => "button_set", "title" => "استایل نمایش آخرین مطالب", "options" => ["default" => "استایل پیشفرض", "modern" => "استایل مدرن", "minimal" => "استایل مینیمال", "comfort" => "استایل کامفورت <span class=\"kelaket_new\">جدید</span>"], "default" => "modern"], ["id" => "film_card_style", "type" => "button_set", "title" => "استایل کارت های مطالب", "options" => ["style1" => " استایل ۱", "style2" => " استایل ۲", "style3" => " استایل ۳ <span class=\"kelaket_new\">جدید</span>"], "default" => "style2"], ["id" => "blog_lastposts_index", "type" => "switcher", "title" => "نمایشآخرین مطالب وبلاگ در صفحه اصلی", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "show_updated_serial", "type" => "switcher", "title" => "نمایش آخرین سریال های بروز شده در صفحه اصلی", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "updated_series_count", "type" => "spinner", "title" => "تعداد مطالب سریال های بروزشده", "dependency" => ["post_show_type", "==", "category"], "default" => 8, "min" => 0, "max" => 40, "step" => 4], ["id" => "show_en_title", "type" => "switcher", "title" => "نمایش عنوان انگلیسی", "desc" => "درصورت فعال کردن عنوان انگلیسی فیلم ها نمایش داده میشود.", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "dependency" => ["post_show_type", "==", "category"], "default" => false], ["id" => "lazyload_cats", "type" => "switcher", "title" => "LazyLoad کردن دسته بندی ها برای افزایش سرعت لود صفحه", "desc" => "درصورتی که تعداد دسته های زیادی در صفحه نمایش میدهید این قابلیت به شما کمک میکند تا با اسکرول کردن کاربر دسته های بیشتری را لود کنید بجای بارگذاری کل دسته در لود صفحه", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "dependency" => ["post_show_type", "==", "category"], "default" => true], ["id" => "film_cat_home", "type" => "repeater", "title" => "دسته بندی فیلم ها", "subtitle" => "برای نمایش در صفحه اصلی", "button_title" => "افزودن دسته بندی", "dependency" => ["post_show_type", "==", "category"], "fields" => [["id" => "film_cat_item", "type" => "select", "title" => "انتخاب دسته", "options" => "categories"], ["type" => "submessage", "style" => "info", "content" => "\n <strong>درصورت انتخاب ژانر یا نوع پست دسته بندی انتخاب شده نادیده گرفته خواهد شد.</strong>\n "], ["id" => "film_genre_item", "type" => "select", "title" => "انتخاب ژانر", "options" => "kelaket_custom_genres_list"], ["id" => "film_post_type_item", "type" => "select", "title" => "انتخاب نوع پست", "options" => "kelaket_custom_post_type_list"], ["id" => "film_cat_item_title", "type" => "text", "title" => " نام نمایشی بخش"], ["id" => "film_cat_item_sub_title", "type" => "text", "title" => "متن زیرعنوان اصلی", "dependency" => ["film_cat_item__style", "==", true]], ["id" => "film_cat_more_link", "type" => "link", "add_title" => "افزودن لینک", "edit_title" => "ویرایش لینک", "remove_title" => "حذف لینک", "desc" => "میتوانید آدرس دسته بندی یا لینک جستجو پیشرفته فیلترشده بروی موارد انتخابی وارد کنید.", "title" => "لینک مشاهده بیشتر"], ["id" => "film_cat_item_count", "type" => "spinner", "title" => " تعداد مطالب اسلایدر", "min" => 0, "max" => 40, "step" => 1, "default" => 6], ["id" => "film_cat_item__style", "type" => "switcher", "title" => "نمایش عنوان بصورت بزرگ", "desc" => "پیشنهاد میشود این بخش را بصورت یکی یا دو ردیف درمیان فعال کنید.", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false]]], ["id" => "updated_first", "type" => "switcher", "title" => "نمایش مطالب بروزرسانی شده در اول لیست", "desc" => "درصورت فعال کردن مطالبی که آپدیت میکنید به ابتدای لیست مطالب منتقل میشوند.", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true]]]);
- CSF::createSection($prefix, ["title" => "تنظیمات صفحه ادامه مطلب", "parent" => "content", "fields" => [["id" => "single_style", "type" => "button_set", "title" => "استایل نمایش صفحه ادامه مطلب", "options" => ["default" => " استایل پیشفرض", "modern" => " استایل مدرن", "casual" => " استایل کژوال <span class=\"kelaket_new\">جدید</span>"], "default" => "modern"], ["id" => "count_relpots", "type" => "number", "title" => "تعداد مطالب جهت نمایش مطالب مرتبط", "unit" => "مطلب", "output" => ".heading", "output_mode" => "width", "default" => 6], ["id" => "show_actors", "type" => "switcher", "title" => "نمایش بازیگران در ادامه مطلب", "text_on" => "بله", "text_off" => "خیر", "text_width" => 75, "default" => true], ["id" => "pro_player", "type" => "switcher", "desc" => "درصورت فعال سازی بجای پلیر ساده مرورگر پلیر پیشرفته قالب نمایش داده میشود.", "title" => "نمایش پلیر پیشرفته برای تریلر", "text_on" => "بله", "text_off" => "خیر", "text_width" => 75, "default" => true], ["id" => "post_like_count", "type" => "switcher", "title" => "نمایش تعداد رای ها کنار دکمه", "desc" => "در صورت انتخاب کنار دکمه لایک و دیسلایک تعداد رای نمایش داده میشود.", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "just_iran", "type" => "switcher", "title" => "محدود کردن نمایش جعبه دانلود", "subtitle" => "افزونه های کش عملکرد این قابلیت را مختل میکنند!", "desc" => "درصورتی که میخواهید فقط کاربران ایرانی دانلود باکس رو مشاهده کنند این گزینه را فعال کنید. حل مشکل DMCA", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "vpn_message", "type" => "text", "title" => "متن خاموش کردن VPN دانلودباکس", "default" => "برای مشاهده لینک های دانلود/پخش آنلاین فیلترشکن خود را خاموش کنید.", "dependency" => ["just_iran", "==", true]], ["id" => "internet", "type" => "button_set", "title" => "انتخاب حجم مصرفی کاربران", "desc" => "در صورتی که سرور شما ایران میباشد و حجم مصرفی کاربران نیم بها محاسبه میشود گزینه مربوطه را انتخاب کنید", "options" => ["half" => " نیم بها", "full" => " تمام بها"], "default" => "full"], ["id" => "post_like_system", "type" => "button_set", "title" => "انتخاب عملکرد لایک و دیسلایک", "desc" => "در حالت فقط کاربران عضو کاربران نمیتوانند رای تکراری ثبت کنند و برای امتیاز دهی دقیق کاربرد دارد (همانند imdb) اما در حالت میهمان با استفاده از کوکی از ثبت رای تکراری جلوگیری میشود که به اندازه سیستم عضو دقیق نیست و با تغییر مرورگر یا منقضی شدن کوکی میتوانند مجدد رای بدهند.", "multiple" => false, "options" => ["users" => "فقط کاربران عضو سایت", "all" => "کاربران عضو + میهمان <span class=\"kelaket_new\">جدید</span>"], "default" => ["all"]]]]);
- CSF::createSection($prefix, ["title" => "تنظیمات هدر", "parent" => "content", "fields" => [["id" => "head_style", "type" => "button_set", "title" => "انتخاب طرح هدر", "options" => ["default" => " استایل پیشفرض", "style2" => " استایل 2<span class=\"kelaket_new\">جدید</span>"], "default" => "style2"], ["id" => "active_trends", "type" => "switcher", "title" => "فعال سازی بخش ترندها در زیر باکس جستجو", "text_on" => "بله", "text_off" => "خیر", "text_width" => 75, "default" => false], ["id" => "trends_exculed_words", "type" => "repeater", "title" => "کلمات ممنوعه ترندها", "desc" => "کلمات تعریف شده در این فیلد در صورتی که در سایت ترند شوند در بخش جستجو نمایش داده نخواهند شد.", "fields" => [["id" => "trends_exculed_words_context", "type" => "text", "title" => "کلمه ممنوعه", "desc" => "صرفا کلیدواژه های حساس را وارد کنید درصورت مشاهده کلیدواژه تعریف شده از بخش ترندخارج خواهند شد.<br>\n برای مثال در صورت تعریف کلمه xxx تمامی متون شامل این کلمه فیلتر خواهند شد.\n "]]], ["id" => "active_notifs", "type" => "switcher", "title" => "فعال شدن دکمه اعلانات هدر", "text_on" => "بله", "text_off" => "خیر", "text_width" => 75, "default" => false], ["id" => "active_search", "type" => "switcher", "title" => "فعال شدن دکمه جستجو هدر", "text_on" => "بله", "text_off" => "خیر", "text_width" => 75, "default" => false], ["id" => "active_theme", "type" => "switcher", "title" => "فعال شدن دکمه دارک/لایت هدر", "text_on" => "بله", "text_off" => "خیر", "text_width" => 75, "default" => false]]]);
- CSF::createSection($prefix, ["title" => "تنظیمات فوتر", "parent" => "content", "fields" => [["id" => "footer_style", "type" => "button_set", "title" => "انتخاب طرح فوتر", "options" => ["default" => " استایل پیشفرض", "modern" => " استایل مدرن", "minimal" => " استایل مینیمال<span class=\"kelaket_new\">جدید</span>"], "default" => "modern"], ["type" => "notice", "style" => "success", "content" => "برای قراردادن کدهای نمادهای نظیر اینماد و.. از بخش پوسته > ابزارک ها ابزارک نماد هارا به جایگاه ابزارک فوتر منتقل و کدهای دریافتی وارد کنید."], ["id" => "about", "type" => "textarea", "title" => "درباره ما"], ["id" => "contact_us_text", "type" => "textarea", "title" => "متن ارتباط با ما فوتر"], ["id" => "copyright", "type" => "textarea", "title" => "کپی رایت فوتر", "default" => "تمامی حقوق برای کلاکت فیلم محفوظ میباشد."]]]);
- CSF::createSection($prefix, ["title" => "تنظیمات اسلایدر", "parent" => "content", "fields" => [["id" => "slider_type", "type" => "button_set", "title" => "انتخاب نوع اسلایدر", "options" => ["carousel" => " اسلایدر آیتم", "carousel2" => " اسلایدر آیتم گرید", "slider" => " اسلایدر تکی", "mixed" => " اسلایدر ترکیبی", "comfort" => " اسلایدر کامفورت <span class=\"kelaket_new\">جدید</span>"], "default" => "mixed"], ["id" => "disable_slider", "type" => "switcher", "title" => "عدم نمایش اسلایدر", "desc" => "درصورت فعال کردن اسلایدر نمایش داده نخواهد شد.", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "sort_by_updated_slider", "type" => "switcher", "title" => "مرتب سازی اسلایدر بر اساس اپدیت شدن مطلب", "desc" => "در صورت فعال سازی اگر مطلبی قدیمی که در اسلایدر باشد با بروزرسانی مطلب به اول لیست منتقل میشود.", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "disable_advanced_search", "type" => "switcher", "title" => "عدم نمایش سرچ پیشرفته زیر اسلایدر", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "count_slider", "type" => "number", "title" => "تعداد آیتم های قابل نمایش در اسلایدر", "unit" => "مطلب", "output" => ".heading", "output_mode" => "width", "default" => 9], ["id" => "header-fluid", "type" => "switcher", "desc" => "در صورت انتخاب منوی هدر بصورت تمام صفحه میشود.", "subtitle" => "فقط در اسلایدر تکی", "title" => "منو تمام صفحه", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false, "dependency" => ["slider_type", "==", "slider"]]]]);
- CSF::createSection($prefix, ["title" => "تنظیمات جدول پخش سریال ها", "parent" => "content", "fields" => [["id" => "series_active", "type" => "switcher", "title" => "فعال سازی جدول پخش", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "series_tabbed", "type" => "tabbed", "title" => "انتخاب سریال ها", "tabs" => [["title" => "شنبه", "icon" => "fa fa-chevron-left", "fields" => [["id" => "Sat", "type" => "select", "title" => "سریال های پخش شده در این روز انتخاب شوند", "placeholder" => "انتخاب کنید", "chosen" => true, "ajax" => true, "multiple" => true, "sortable" => true, "options" => "posts"]]], ["title" => "یکشنبه", "icon" => "fa fa-chevron-left", "fields" => [["id" => "Sun", "type" => "select", "title" => "سریال های پخش شده در این روز انتخاب شوند", "placeholder" => "انتخاب کنید", "chosen" => true, "ajax" => true, "multiple" => true, "sortable" => true, "options" => "posts"]]], ["title" => "دوشنبه", "icon" => "fa fa-chevron-left", "fields" => [["id" => "Mon", "type" => "select", "title" => "سریال های پخش شده در این روز انتخاب شوند", "placeholder" => "انتخاب کنید", "chosen" => true, "ajax" => true, "multiple" => true, "sortable" => true, "options" => "posts"]]], ["title" => "سهشنبه", "icon" => "fa fa-chevron-left", "fields" => [["id" => "Tue", "type" => "select", "title" => "سریال های پخش شده در این روز انتخاب شوند", "placeholder" => "انتخاب کنید", "chosen" => true, "ajax" => true, "multiple" => true, "sortable" => true, "options" => "posts"]]], ["title" => "چهارشنبه", "icon" => "fa fa-chevron-left", "fields" => [["id" => "Wed", "type" => "select", "title" => "سریال های پخش شده در این روز انتخاب شوند", "placeholder" => "انتخاب کنید", "chosen" => true, "ajax" => true, "multiple" => true, "sortable" => true, "options" => "posts"]]], ["title" => "پنجشنبه", "icon" => "fa fa-chevron-left", "fields" => [["id" => "Thu", "type" => "select", "title" => "سریال های پخش شده در این روز انتخاب شوند", "placeholder" => "انتخاب کنید", "chosen" => true, "ajax" => true, "multiple" => true, "sortable" => true, "options" => "posts"]]], ["title" => "جمعه", "icon" => "fa fa-chevron-left", "fields" => [["id" => "Fri", "type" => "select", "title" => "سریال های پخش شده در این روز انتخاب شوند", "placeholder" => "انتخاب کنید", "chosen" => true, "ajax" => true, "multiple" => true, "sortable" => true, "options" => "posts"]]]]]]]);
- CSF::createSection($prefix, ["title" => "تنظیمات احراز هویت", "parent" => "pro", "fields" => [["id" => "active_2fa_email", "type" => "switcher", "desc" => "در صورت فعال سازی هنگام عضویت با ایمیل کاربران ملزم به وارد کردن کد تایید ۲مرحله ای ارسال شده به ایمیل هستند و باعث جلوگیری از وارد کردن ایمیل جعلی در عضویت میشود.\n <br>\n جهت اطمینان از ارسال ایمیل تنظیمات smtp سرور هاست خود را بررسی کنید.\n \n <a class=\"kelaket_notif\" style=\"text-decoration: none; display:inline-block; margin-top: 4px\" target=\"_blank\" href=\"https://pars.host/blog/email-smtp-settings/\"> راهنمای تنظیمات smtp</a>\n \n ", "title" => "فعال کردن تایید ۲ مرحله ای ایمیل در هنگام عضویت", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "active_captcha", "type" => "switcher", "desc" => "درصورت فعال سازی باید از سایت google recaptcha - hCaptcha کد site-key و secret مخصوص به خود را دریافت و در فرم های زیر وارد کنید.\n <br>\n\n <a class=\"kelaket_notif\" style=\"text-decoration: none; display:inline-block; margin-top: 4px\" target=\"_blank\" href=\"https://www.google.com/recaptcha/about/\">دریافت کلید ری کپچا</a>\n <a class=\"kelaket_email\" style=\"text-decoration: none; display:inline-block; margin-top: 4px\" target=\"_blank\" href=\"https://dashboard.hcaptcha.com/login\">دریافت کلید اچ کپچا</a>\n \n ", "title" => "فعال کردن سرویس کپچا", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "captcha_service", "type" => "button_set", "title" => "انتخاب سرویس کپچا", "desc" => "بسته به نیاز خود سرویس کپچا خود را انتخاب کنید سرویس گوگل سرویس آسان تری نسبت به hCaptcha می باشد و برای حل چالش آن کاربران راحت تر می باشد.", "multiple" => false, "options" => ["hcaptcha" => "hCaptcha", "recaptcha" => "<span class=\"kelaket_new\">جدید</span> ری کپچا گوگل"], "default" => "recaptcha", "dependency" => [["active_captcha", "==", true]]], ["id" => "captcha_site_key", "type" => "text", "placeholder" => "site-key دریافتی را وارد کنید.", "title" => "Site-Key", "default" => false, "dependency" => [["active_captcha", "==", true]]], ["id" => "captcha_secret", "type" => "text", "placeholder" => "secret دریافتی را وارد کنید.", "title" => "Secret", "default" => false, "dependency" => [["active_captcha", "==", true]]], ["id" => "phone_number_required", "type" => "switcher", "subtitle" => "ورود/ثبت نام معمولی بدون ارسال کد تایید", "desc" => "درصورت فعال کردن این گزینه وارد کردن شماره موبایل در فیلد عضویت معمولی الزامی میشود.", "title" => "الزامی شدن فیلد شماره موبایل در عضویت معمولی", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "dont_show_normal_login", "type" => "switcher", "title" => "نمایش لینک ورود با ایمیل در ورود پیامکی", "desc" => "در صورت نیاز میتوانید برگه ورود و عضویت با ایمیل را پیشنویس کنید تا از دسترسی مستقیم به این بخش جلوگیری کنید.", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "mobile-auth", "type" => "switcher", "desc" => "درصورت انتخاب این گزینه ورود و ثبت نام از طریق شماره موبایل فعال میشود.", "subtitle" => "ورود/ثبت نام با موبایل", "title" => "فعال سازی ورود با شماره موبایل", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "sms_provider", "type" => "select", "title" => "انتخاب سرویس دهنده پیامک", "placeholder" => "یک سرویس دهنده انتخاب کنید...", "dependency" => [["mobile-auth", "==", true]], "options" => ["faraz_sms" => "فراز اساماس", "kaveh_negar" => "کاوه نگار", "meli_payamak" => "ملی پیامک", "smsir" => "sms.ir"]], ["type" => "notice", "style" => "success", "dependency" => [["mobile-auth", "==", true]], "content" => "برای ارسال پیامک باید یک پنل پیامکی تهیه نمایید از لینک روبرو میتوانید پنل پیامکی فرازSMS تهیه نمایید. \n\n <a class=\"kelaket_notif\" style=\"text-decoration: none; display:inline-block; margin-top: 4px\" target=\"_blank\" href=\"https://farazsms.com/?ref=979\">خرید پنل پیامکی فراز اس ام اس<</a>\n "], ["id" => "api_key_sms", "type" => "text", "desc" => "کلید API ساخته شده در پنل پیامکی را وارد کنید.", "placeholder" => "API را واردکنید", "title" => "کلید API", "default" => false, "dependency" => [["mobile-auth", "==", true], ["sms_provider", "any", "kaveh_negar,smsir"]]], ["id" => "sms_user", "type" => "text", "desc" => "نام کاربری دریافتی از شرکت ارائه دهنده پیامک را وارد کنید.", "placeholder" => "نام کاربری را وارد کنید.", "title" => "نام کاربری سامانه", "default" => false, "dependency" => [["mobile-auth", "==", true], ["sms_provider", "any", "meli_payamak,faraz_sms"]]], ["id" => "sms_pass", "type" => "text", "desc" => "بجای رمز میتوانید از بخش تنظیمات api key ایجاد کنید و وارد کنید.", "placeholder" => "رمز را وارد کنید.", "title" => "رمز سامانه", "default" => false, "dependency" => [["mobile-auth", "==", true], ["sms_provider", "any", "meli_payamak,faraz_sms"]]], ["id" => "pattern_sms", "type" => "text", "desc" => "کد پترن ایجاد شده در پنل پیامک را جهت ارسال پیامک کد وارد کنید حتما از %code% در پترن استفاده کنید کد ورود با این نام می باشد.", "placeholder" => "کد پترن را وارد کنید.", "title" => "پترن ارسال پیامک", "default" => false, "dependency" => ["mobile-auth", "==", true]], ["id" => "number_sms", "type" => "text", "placeholder" => "شماره ارسال پیامک را واردکنید.", "title" => "شماره ارسال پیامک", "desc" => "در سرویس کاوه نگار و sms.ir نیاز به وارد کردن شماره نیست و از سرویس اعتبار سنجی استفاده میشود.", "default" => false, "dependency" => [["mobile-auth", "==", true], ["sms_provider", "any", "faraz_sms"]]], ["id" => "rules_page_id", "type" => "select", "title" => "برگه قوانین و مقررات", "desc" => "با انتخاب این گزینه پیام پذیرش قوانین درصفحات احراز هویت نمایش داده خواهد شد.", "placeholder" => "برگه قوانین و مقررات را انتخاب کنید.", "options" => "pages", "chosen" => true]]]);
- CSF::createSection($prefix, ["title" => "تنظیمات پخش آنلاین", "icon" => "fa fa-play", "fields" => [["id" => "playonline_logo", "type" => "media", "title" => "انتخاب لوگو پخش آنلاین", "library" => "image"], ["id" => "playonline_free", "type" => "switcher", "desc" => "درصورتی که میخواهید حتی در صورت اشتراکی بودن مطلب و لینک های دانلود پخش آنلاین بدون اشتراک باشد این گزینه فعال کنید.", "title" => "رایگان شدن پخش آنلاین حتی در صورتی اشتراکی بودن مطالب", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "active_embed", "type" => "switcher", "desc" => "درصورت انتخاب این گزینه قابلیت نمایش ویدیو های امبد فعال میشود به علت مشکلاتی که این قابلیت بروی لینک هایی که دارای فرمت نیستند ایجاد میکرد و باعث دانلود بجای پخش میشد درصورتی که نیازی به پخش ویدیو های امبد ندارید این گزینه را خاموش کنید.\n <br><br>\n پلیر جدید قالب از لینک های امبد پشتیبانی نمی کند در صورتی که لینک امبد دارید از بخش برگه ها برگه پخش آنلاین را ویرایش کرده و از بخش سمت چپ قالب برگه بروی پخش آنلاین قدیمی ست کنید.\n ", "title" => "فعال سازی قابلیت تشخیص ویدیو های امبد", "text_on" => "فعال", "text_off" => "غیرفعال", "subtitle" => "فقط بروی پلیر قدیمی", "text_width" => 75, "default" => false], ["id" => "dont_pass_quality", "type" => "switcher", "desc" => "در نسخه ۴ پوسته کلاکت فیلم تغییراتی در ساختار لینک های پخش آنلاین ایجاد شده است درصورتی که تمایل دارید کیفیت های پخش آنلاین فقط از ۳ فیلد جدید کیفیت پخش آنلاین استفاده شوند فعال کنید در غیراینصورت با خاموش بودن این گزینه طبق روال قدیم از لینک های دانلود برای کیفیت پخش آنلاین استفاده میشود و نیازی به پرکردن فیلد های کیفیت جدید ندارید.", "title" => "استفاده از لینک های کیفیت مخصوص پخش آنلاین", "text_on" => "بله", "text_off" => "خیر", "text_width" => 75, "default" => false], ["id" => "show_single_playonline", "type" => "switcher", "desc" => "دکمه پخشآنلاین بصورت جداگانه برای سریال ها با انتخاب کاربر به بخش انتخاب فصل و قسمت در پخش آنلاین منتقل میشود و برای فیلم ها اولین ردیف لینک دانلود پخش میشود.", "title" => "نمایش پخش آنلاین تکی", "text_on" => "بله", "text_off" => "خیر", "text_width" => 75, "default" => true]]]);
- CSF::createSection($prefix, ["title" => "تنظیمات کالکشن", "parent" => "content", "fields" => [["id" => "collection", "type" => "select", "title" => "انتخاب دسته بندی کالکشن", "placeholder" => "دسته بندی کالکشن را انتخاب کنید", "desc" => "دسته بندی کالکشن خود را انتخاب کنید این بخش برای لیست کردن کالکشن های شما می باشد.", "chosen" => true, "ajax" => false, "multiple" => false, "sortable" => true, "options" => "categories"], ["id" => "full_size_collection", "type" => "switcher", "title" => "نمایش کاور کالشن بصورت کامل", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false]]]);
- CSF::createSection($prefix, ["title" => "شورت کد های قالب", "icon" => "fa fa-align-justify", "fields" => [["id" => "report", "type" => "text", "desc" => "شورتکد دریافتی از پلاگین فرم تماس ۷ یا هر پلاگین دیگری را واردکنید تا در سایت نمایش داده شود.", "title" => "شورتکد خرابی لینک"]]]);
- CSF::createSection($prefix, ["title" => "تنظیمات ایمپورتر فیلم و سریال", "parent" => "pro", "fields" => [["type" => "submessage", "style" => "danger", "content" => "\n <strong>برای استفاده از سرور رابط باید اسکریپت این بخش را در هاست خارج خود اپلود کنید و ادرس دامنه متصل به هاست را در فیلد آدرس وارد کنید.<br>\n <a target='_blank' href='https://kelaketfilm.imahmoodzz.ir/docs/#/imdb_bridge/imdb_bridge'>راهنمای استفاده از سرور رابط</a>\n </strong>\n "], ["id" => "poster_bridge", "type" => "switcher", "title" => "استفاده از سرور رابط برای آپلود پوستر", "desc" => "درصورتی که هاست ایران استفاده میکنید و در آپلود پوستر فیلم از سرور های آمازون مشکل دارید این گزینه را فعال کنید دقت کنید.", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "actors_bridge", "type" => "switcher", "title" => "استفاده از سرور رابط برای تصاویر بازیگران", "desc" => "درصورتی که در هاست ایران خود مشکل در دریافت تصاویر از سرور های آمازون دارید این گزینه را فعال کنید.", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "bridge_address", "type" => "text", "desc" => "برای استفاده از سرور رابط باید اسکریپت زیر را در یک هاست خارج از ایران اپلود کنید و آدرس اسکریپت را در فیلد زیر قرار بدهید با این روش تصاویر در هاست خارج شما دریافت و از لینک آن میتوانید برای سرور رابط استفاده کنید این آپشن برای بعضی هاست های ایران که مشکل تحریم و عدم دریافت اطلاعات از سرورهای آمازون که تصاویر imdb بروی آن قرار دارند میشود.\n <a target=\"_blank\" href=\"https://kelaketfilm.imahmoodzz.ir/docs/#/imdb_bridge/imdb_bridge\">راهنمای استفاده و دانلود اسکریپت</a>\n ", "title" => "آدرس اسکریپت سرور رابط", "placeholder" => "لینک اسکریپت سرور رابط را وارد کنید."], ["id" => "selected_actor_api", "type" => "button_set", "desc" => "\n سرویس دریافت بازیگران tmdb متاسفانه در هاست های ایران کارنمیکند.\n <br><br>\n پیشنهاد ما استفاده از اسکرپر اختصاصی قالب می باشد که بصورت مستقیم بازیگران را از صفحه فیلم در imdb استخراج می کند.\n ", "title" => "انتخاب سرویس دریافتی بازیگران", "multiple" => false, "options" => ["kelaketfilm" => "اسکرپر اختصاصی کلاکت فیلم", "tmdb" => "tmdb"], "default" => ["kelaketfilm"]], ["id" => "imdb_id_as_post_title", "type" => "switcher", "title" => "درج خودکار شناسه imdb برای لینک مطلب", "desc" => "درصورتی که میخواهید بصورت خودکار لینک imdb فیلم یا سریال برای slug مطلب ست شود فعال کنید.", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true], ["id" => "get_cover_tmdb", "type" => "switcher", "subtitle" => "(فقط هاست خارج از ایران)", "title" => "دریافت کاور تصویر از TMDB ", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["type" => "submessage", "style" => "info", "content" => "\n برای اتصال به وبسرویس های اطلاعات فیلم، سریال و انیمه نیاز به وارد کردن کلید های API زیر میباشد.\n <br>\n برای دریافت اطلاعات فیلم وسریال دو سرویس اول الزامی میباشد.\n <br>\n برای ایمپورت اطلاعات انیمه نیز وارد کردن کلید MAL در فیلد آخر الزامی میباشد.\n <br>\n <br>\n کلید دریافتی از omdb را باید حتما از طریق لینک فعال سازی که به ایمیل شما ارسال میکنید در کنار کلید فعال نمایید تا بتوانید استفاده کنید.\n <br>\n <br>\n <strong>جهت آموزش نحوه دریافت هرکدام از کلید ها به راهنمای قالب مراجعه کنید.</strong>\n "], ["id" => "omdb-token", "type" => "text", "desc" => "توکن دریافتی از www.omdbapi.com را وارد کنید.", "subtitle" => "جهت دریافت اتوماتیک اطلاعات فیلم", "title" => "توکن API OMDB"], ["id" => "tmdb-api-token", "type" => "text", "desc" => "توکن دریافتی شده از https://www.themoviedb.org/ را وارد کنید.", "title" => "توکن TMDB API"], ["id" => "mal-api-token", "type" => "text", "desc" => "توکن Client ID دریافتی از https://myanimelist.net/ را وارد کنید.", "subtitle" => "این وبسرویس مخصوص دریافت اطلاعات انیمه میباشد درصورتی که قصد انتشار انیمه ندارید خالی بگذارید", "title" => "توکن MyAnimeList API"]]]);
- CSF::createSection($prefix, ["title" => "تبلیغات", "icon" => "fa fa-dollar", "fields" => [["type" => "notice", "style" => "success", "content" => "برای قراردادن تبلیغات vast در پلیر قالب میتوانید لینک تبلیغات ایجاد شده در سرویس های تبلیغاتی را در این بخش قرار دهید."], ["id" => "ads_vast_playonline", "type" => "text", "desc" => "لینک تبلیغات vast دریافتی از سرویس دهنده خود را وارد کنید مثلا: آروان کلاد (حتما https)", "title" => "تبلیغات ویدیویی پخش آنلاین"], ["id" => "ads_vast_trailer", "type" => "text", "desc" => "لینک تبلیغات vast دریافتی از سرویس دهنده خود را وارد کنید مثلا: آروان کلاد (حتما https)", "title" => "تبلیغات ویدیویی تریلر"], ["type" => "notice", "style" => "success", "content" => "برای قراردادن کدهای تبلیغاتی نظیر مدیااد یا یکتا نت باید در ویرایشگر متنی تعبیه شده حالت نمایش را با استفاده از تب سمت چپ از حالت دیداری به کد تغییر دهید سپس کد html خود را پیست کنید و ذخیره کنید."], ["id" => "ads_afterSlider", "type" => "wp_editor", "desc" => "مناسب بنر های بزرگ", "title" => "تبلیغات بعد از اسلایدر"], ["id" => "ads_beforePost", "type" => "wp_editor", "title" => "تبلیغات در بالای مطالب صفحه اصلی"], ["id" => "ads_afterPost", "type" => "wp_editor", "title" => "تبلیغات در پایین مطالب صفحه اصلی"], ["id" => "ads_single_afterDL", "type" => "wp_editor", "title" => "تبلیغات صفحه داخلی فیلم ها بعد دانلود باکس"], ["type" => "notice", "style" => "success", "content" => "برای گذاشتن تبلیغات در سایدبار از بخش ابزارک ها ویجت تبلیغات متنی و تبلیغات تصویری استفاده کنید."]]]);
- CSF::createSection($prefix, ["title" => "اطلاعات معرفی اپلیکیشن موبایل", "icon" => "fa fa-mobile", "fields" => [["id" => "app_icon", "type" => "media", "title" => "انتخاب آیکون اپلیکیشن شما", "library" => "image"], ["id" => "app_link", "type" => "text", "title" => "انتخاب لینک دانلود اپلیکیشن", "placeholder" => "لینک دانلود یا لندیگ پیج اپلیکیشن را وارد کنید", "subtitle" => "لینک دانلود مستقیم یا لندینگ پیج"], ["id" => "app_text", "type" => "text", "title" => "انتخاب متن نمایشی", "placeholder" => "دریافت اپلیکیشن کلاکت فیلم", "subtitle" => "این متن در بنر نمایش داده می شود."], ["id" => "appInstallBanner", "type" => "switcher", "desc" => "با فعال سازی این قابلیت برای کاربران موبایل و تبلت که به وبسایت شما میآیند یک بنر با توضیحات دلخواه شما نمایش داده میشود برای یادآوری نصب این بخش قابلیت بسته شدن ونمایش دوباره در روز بعد را دارا می باشد.", "subtitle" => "نمایش بنر اپلیکیشن در موبایل و تبلت", "title" => "فعال سازی یادآوری نصب اپلیکیشن موبایل", "default" => false, "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75], ["id" => "appBanner", "type" => "switcher", "desc" => "نمایش لینک دانلود اپلیکیشن سایدبار", "title" => "نمایش لینک دانلود اپلیکیشن در سایدبار", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => true]]]);
- CSF::createSection($prefix, ["title" => "تنظیمات اعلانات", "parent" => "pro", "fields" => [["type" => "submessage", "style" => "info", "content" => "\n <strong>برای آموختن نحوه تنظیم SMTP سرور جهت ارسال ایمیل به راهنمای قالب مراجعه بفرمایید.</strong>\n "], ["id" => "send_notif_ticket", "type" => "switcher", "subtitle" => "<span class=\"kelaket_notif\">نوتیفیکیشن</span>", "desc" => "با فعال سازی این گزینه بعد از پاسخ گویی شما به تیکت کاربر اعلانی برای کاربر ارسال میشود.", "title" => "ارسال اعلان پاسخ تیکت به کاربران", "default" => true, "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75], ["id" => "send_notif_email_ticket", "type" => "switcher", "subtitle" => "<span class=\"kelaket_email\">ایمیل</span>", "desc" => "با فعال سازی این گزینه بعد از پاسخ گویی شما به تیکت کاربر ایمیلی با عنوان پاسخگویی به تیکت برای کاربر ارسال میشود.", "title" => "ارسال اعلان پاسخ تیکت به کاربران", "default" => true, "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75]]]);
- CSF::createSection($prefix, ["title" => "تنظیمات تیکت های پشتیبانی", "parent" => "pro", "fields" => [["id" => "tickets_vip", "type" => "switcher", "subtitle" => "چه کسانی بتوانند تیکت ارسال کنند.", "title" => "محدودسازی تیکت ها", "default" => false, "text_on" => "کاربران ویژه", "text_off" => "همه کاربران", "text_width" => 105], ["id" => "pattern_ticket", "type" => "text", "desc" => "کد پترن ایجاد شده در پنل پیامک فراز را جهت ارسال پیامک کد وارد کنید حتما از %code% در پترن استفاده کنید شناسه تیکت با این نام می باشد.", "placeholder" => "کد پترن را وارد کنید.", "title" => "پترن اعلان پیامکی ", "default" => false, "dependency" => ["sendSMS", "==", true]], ["id" => "ticket_dep", "type" => "repeater", "title" => "دپارتمان های پشتیبانی", "subtitle" => "کاربران به این بخش ها میتوانند تیکت ارسال کنند.", "button_title" => "افزودن دپارتمان", "fields" => [["id" => "ticket_dep_name", "type" => "text", "title" => "نام فارسی دپارتمان"], ["id" => "ticket_dep_id", "type" => "text", "title" => "شناسه دپارتمان", "subtitle" => "شناسه حتما انگلیسی و بدون فاصله وارد شود."]]], ["id" => "ticket_support", "type" => "select", "title" => "چه کسانی به تیکت ها بتوانند پاسخ بدهند؟", "placeholder" => "پشتیبانان را انتخاب کنید", "subtitle" => "دقت کنید کاربران پشتیبان به پنل مدیریت دسترسی داشته باشند پرمیشنی بالاتر از \"مشترک\"", "chosen" => true, "ajax" => true, "multiple" => true, "sortable" => true, "options" => "users"]]]);
- CSF::createSection($prefix, ["title" => "تنظیمات PWA", "parent" => "pro", "fields" => [["id" => "pwa_active", "type" => "switcher", "title" => "فعال شدن PWA", "text_on" => "فعال", "text_off" => "غیرفعال", "text_width" => 75, "default" => false], ["id" => "pwa_icon_1", "type" => "media", "title" => "انتخاب آیکون PWA", "subtitle" => "اندازه ۱۹۲*۱۹۲ پیکسل", "library" => "image", "dependency" => ["pwa_active", "==", "true"]], ["id" => "pwa_icon_2", "type" => "media", "title" => "انتخاب آیکون PWA", "subtitle" => "اندازه ۵۱۲*۵۱۲ پیکسل", "library" => "image", "dependency" => ["pwa_active", "==", "true"]], ["id" => "status_color", "type" => "color", "title" => "رنگ نوار وضعیت", "default" => "#101014", "dependency" => ["pwa_active", "==", "true"]], ["id" => "theme_pwa_color", "type" => "color", "title" => "رنگ تم", "default" => "#101014", "dependency" => ["pwa_active", "==", "true"]], ["id" => "pwa_name1", "type" => "text", "title" => "نام اپلیکیشن", "placeholder" => "مثلا: کلاکت فیلم", "dependency" => ["pwa_active", "==", "true"]], ["id" => "pwa_desc1", "type" => "text", "title" => "توضیحات کوتاه اپلیکیشن", "placeholder" => "مثلا: بروزترین اپ دانلود فیلم و سریال", "dependency" => ["pwa_active", "==", "true"]], ["type" => "submessage", "style" => "success", "content" => "بعد از وارد کردن موارد بالا ابتدا دکمه ذخیره را زده صفحه را رفرش کرده و سپس مانیفست و سرویس ورکر را دانلود و در روت وردپرس خود از طریق هاست آپلود کنید.", "dependency" => ["pwa_active", "==", "true"]], ["id" => "pwa_install_desc", "type" => "text", "title" => "توضیحات برای نصب وب اپلیکیشن", "placeholder" => "مثلا: وب اپلیکیشن کلاکت فیلم را همین الان میتوانید به صفحه اصلی گوشی خود اضافه کنید.", "dependency" => ["pwa_active", "==", "true"]], ["type" => "callback", "function" => "my_callback_function", "dependency" => ["pwa_active", "==", "true"]]]]);
- function my_callback_function()
- {
- echo " <button id=\"create_manifest\" type=\"button\" class='button button-primary'>ایجاد فایل مانیفست</button>\n <button id=\"create_serviceWorker\" type=\"button\" class='button button-primary'>ایجاد سرویس ورکر</button>\n <script>\n (function(a, b) {\n if (\"function\" == typeof define && define.amd) define([], b);\n else if (\"undefined\" != typeof exports) b();\n else {\n b(), a.FileSaver = {\n exports: {}\n }.exports\n }\n })(this, function() {\n \"use strict\";\n\n function b(a, b) {\n return \"undefined\" == typeof b ? b = {\n autoBom: !1\n } : \"object\" != typeof b && (console.warn(\"Depricated: Expected third argument to be a object\"), b = {\n autoBom: !b\n }), b.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type) ? new Blob([\"\\uFEFF\", a], {\n type: a.type\n }) : a\n }\n\n function c(b, c, d) {\n var e = new XMLHttpRequest;\n e.open(\"GET\", b), e.responseType = \"blob\", e.onload = function() {\n a(e.response, c, d)\n }, e.onerror = function() {\n console.error(\"could not download file\")\n }, e.send()\n }\n\n function d(a) {\n var b = new XMLHttpRequest;\n return b.open(\"HEAD\", a, !1), b.send(), 200 <= b.status && 299 >= b.status\n }\n\n function e(a) {\n try {\n a.dispatchEvent(new MouseEvent(\"click\"))\n } catch (c) {\n var b = document.createEvent(\"MouseEvents\");\n b.initMouseEvent(\"click\", !0, !0, window, 0, 0, 0, 80, 20, !1, !1, !1, !1, 0, null), a.dispatchEvent(b)\n }\n }\n var f = \"object\" == typeof window && window.window === window ? window : \"object\" == typeof self && self.self === self ? self : \"object\" == typeof global && global.global === global ? global : void 0,\n a = f.saveAs || \"object\" != typeof window || window !== f ? function() {} : \"download\" in HTMLAnchorElement.prototype ? function(b, g, h) {\n var i = f.URL || f.webkitURL,\n j = document.createElement(\"a\");\n g = g || b.name || \"download\", j.download = g, j.rel = \"noopener\", \"string\" == typeof b ? (j.href = b, j.origin === location.origin ? e(j) : d(j.href) ? c(b, g, h) : e(j, j.target = \"_blank\")) : (j.href = i.createObjectURL(b), setTimeout(function() {\n i.revokeObjectURL(j.href)\n }, 4E4), setTimeout(function() {\n e(j)\n }, 0))\n } : \"msSaveOrOpenBlob\" in navigator ? function(f, g, h) {\n if (g = g || f.name || \"download\", \"string\" != typeof f) navigator.msSaveOrOpenBlob(b(f, h), g);\n else if (d(f)) c(f, g, h);\n else {\n var i = document.createElement(\"a\");\n i.href = f, i.target = \"_blank\", setTimeout(function() {\n e(i)\n })\n }\n } : function(a, b, d, e) {\n if (e = e || open(\"\", \"_blank\"), e && (e.document.title = e.document.body.innerText = \"downloading...\"), \"string\" == typeof a) return c(a, b, d);\n var g = \"application/octet-stream\" === a.type,\n h = /constructor/i.test(f.HTMLElement) || f.safari,\n i = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n if ((i || g && h) && \"object\" == typeof FileReader) {\n var j = new FileReader;\n j.onloadend = function() {\n var a = j.result;\n a = i ? a : a.replace(/^data:[^;]*;/, \"data:attachment/file;\"), e ? e.location.href = a : location = a, e = null\n }, j.readAsDataURL(a)\n } else {\n var k = f.URL || f.webkitURL,\n l = k.createObjectURL(a);\n e ? e.location = l : location.href = l, e = null, setTimeout(function() {\n k.revokeObjectURL(l)\n }, 4E4)\n }\n };\n f.saveAs = a.saveAs = a, \"undefined\" != typeof module && (module.exports = a)\n });\n </script>\n <script>\n jQuery(document).ready(function() {\n jQuery('#create_manifest').on('click', function() {\n var json_object = {\n name: '";
- echo get_option("my_framework")["pwa_name1"];
- echo "',\n short_name: '";
- echo get_option("my_framework")["pwa_name1"];
- echo "',\n start_url: \"/\",\n display: \"standalone\",\n lang: \"fa-IR\",\n description: '";
- echo get_option("my_framework")["pwa_desc1"];
- echo "',\n background_color: \"#1c1c22\",\n theme_color: \"#34ace0\",\n orientation: \"portrait-primary\",\n icons: [{\n src: '";
- echo get_option("my_framework")["pwa_icon_1"]["url"];
- echo "',\n type: \"image/png\",\n sizes: \"192x192\"\n },\n {\n src: '";
- echo get_option("my_framework")["pwa_icon_2"]["url"];
- echo "',\n type: \"image/png\",\n sizes: \"512x512\"\n }\n ]\n }\n var blob = new Blob([JSON.stringify(json_object, undefined, 2)], {\n type: \"application/json\"\n });\n var url = URL.createObjectURL(blob);\n saveAs(url, 'manifest.json');\n });\n\n jQuery('#create_serviceWorker').on('click', function() {\n console.log('service');\n\n var data = `\n const CACHE_NAME = 'offline';\n const OFFLINE_URL = '";
- bloginfo("url");
- echo "';\n\n self.addEventListener('install', function(event) {\n event.waitUntil((async () => {\n const cache = await caches.open(CACHE_NAME);\n // Setting {cache: 'reload'} in the new request will ensure that the response\n // isn't fulfilled from the HTTP cache; i.e., it will be from the network.\n await cache.add(new Request(OFFLINE_URL, {cache: 'reload'}));\n })());\n\n self.skipWaiting();\n });\n\n self.addEventListener('activate', (event) => {\n event.waitUntil((async () => {\n // Enable navigation preload if it's supported.\n // See https://developers.google.com/web/updates/2017/02/navigation-preload\n if ('navigationPreload' in self.registration) {\n await self.registration.navigationPreload.enable();\n }\n })());\n\n // Tell the active service worker to take control of the page immediately.\n self.clients.claim();\n });\n\n self.addEventListener('fetch', function(event) {\n // console.log('[Service Worker] Fetch', event.request.url);\n if (event.request.mode === 'navigate') {\n event.respondWith((async () => {\n try {\n const preloadResponse = await event.preloadResponse;\n if (preloadResponse) {\n return preloadResponse;\n }\n\n const networkResponse = await fetch(event.request);\n return networkResponse;\n } catch (error) {\n console.log('[Service Worker] Fetch failed; returning offline page instead.', error);\n\n const cache = await caches.open(CACHE_NAME);\n const cachedResponse = await cache.match(OFFLINE_URL);\n return cachedResponse;\n }\n })());\n }\n });\n `;\n var blob = new Blob([data], {\n type: \"text/javascript\"\n });\n var url = URL.createObjectURL(blob);\n saveAs(url, 'serviceWorker.js');\n });\n });\n </script>\n ";
- }
- CSF::createSection($prefix, ["title" => "کدهای سفارشی", "icon" => "fa fa-code", "fields" => [["type" => "notice", "style" => "success", "content" => "برای گذاشتن تبلیغ های اسکریپتی یا کد های سرویس های آنالیز از این بخش استفاده کنید"], ["type" => "notice", "style" => "warning", "content" => "دقت بفرمایید در نسخه آخر پوسته نیاز هست تگ script نیز در بخش کد سفارشی وارد شود."], ["id" => "footer_script", "type" => "textarea", "sanitize" => true, "subtitle" => "custom javascript", "default" => "", "desc" => "اگر از تبلیغات اسکریپتی استفاده میکنید که کد های آماده جهت گذاشتن فوتر ارائه میدهند از این فیلد استفاده کنید.", "title" => "کدهای اسکریپت فوتر"]]]);
- CSF::createSection($prefix, ["title" => "دریافت اتوماتیک اطلاعات", "icon" => "fa fa-imdb", "fields" => [["type" => "submessage", "style" => "danger", "content" => "لطفا برای دریافت اطلاعات بصورت تکی اقدام کنید و از اجرای اسکریپت ها با یکدیگر به علت سنگین بودن عملیات خودداری کنید.\n <br><br> \n آپلود تصاویر بصورت یکباره انجام میشود و درصورت دریافت مجدد از فایل قبلی ایجاد شده استفاده خواهد شد.\n <br> <br> \n در صورتی که هاست شما قدرت کافی برای اپلود ۲۵۰ تصویر ندارد گزینه آپلود تصاویر را خاموش نمایید و اطلاعات دریافت کنید.\n "], ["type" => "callback", "function" => "imdb_250_callback"]]]);
- function imdb_250_callback()
- {
- echo " <div id=\"the-list\">\n <div class=\"plugin-card plugin-card-classic-editor\">\n <div class=\"plugin-card-top\">\n <div class=\"action-links\">\n <ul class=\"plugin-action-buttons\">\n <li>\n <input id=\"imdb_250_movie_poster\" type=\"checkbox\">\n <label for=\"imdb_250_movie_poster\">ذخیره پوستر</label>\n </li>\n <li><button id=\"get_imdb_250_movies\" type=\"button\" class=\"button button-primary\">دریافت اطلاعات</button></li>\n </ul>\n </div>\n <div class=\"desc column-description\" style=\"margin-right: 0;\">\n <h2 style=\"margin-top: 0;\">دریافت ۲۵۰ فیلم برتر</h2>\n <p>دریافت خودکار لیست ۲۵۰ فیلم برتر IMDB و ذخیره در دیتابیس جهت نمایش در صفحه مربوطه.</p>\n <p style=\"font-size: 12px;opacity: .5;\">با تیک زدن گزینه ذخیره پوستر تصاویر در هاست شما ذخیره خواهند شد.</p>\n </div>\n </div>\n <div class=\"plugin-card-bottom\">\n <div class=\"column-updated\">\n <strong>آخرین بروزرسانی: </strong>\n ";
- if (get_imdb_250_movies()) {
- $date = strtotime(get_imdb_250_movies()["update_date"]);
- echo kelaket_ago_date($date);
- } else {
- echo "-";
- }
- echo " </div>\n <div class=\"column-downloaded\">\n ";
- if (get_imdb_250_movies()) {
- echo "اطلاعات دریافت شده است.";
- } else {
- echo "اطلاعاتی از قبل موجود نیست.";
- }
- echo " </div>\n </div>\n </div>\n\n <div class=\"plugin-card plugin-card-classic-editor\">\n <div class=\"plugin-card-top\">\n <div class=\"action-links\">\n <ul class=\"plugin-action-buttons\">\n <li>\n <input id=\"imdb_250_series_poster\" type=\"checkbox\">\n <label for=\"imdb_250_series_poster\">ذخیره پوستر</label>\n </li>\n <li><button id=\"get_imdb_250_series\" type=\"button\" class=\"button button-primary\">دریافت اطلاعات</button></li>\n </ul>\n </div>\n <div class=\"desc column-description\" style=\"margin-right: 0;\">\n <h2 style=\"margin-top: 0;\">دریافت ۲۵۰ سریال برتر</h2>\n <p>دریافت خودکار لیست ۲۵۰ سریال برتر IMDB و ذخیره در دیتابیس جهت نمایش در صفحه مربوطه.</p>\n <p style=\"font-size: 12px;opacity: .5;\">با تیک زدن گزینه ذخیره پوستر تصاویر در هاست شما ذخیره خواهند شد.</p>\n </div>\n </div>\n <div class=\"plugin-card-bottom\">\n <div class=\"column-updated\">\n <strong>آخرین بروزرسانی: </strong>\n ";
- if (get_imdb_250_series()) {
- $date = strtotime(get_imdb_250_series()["update_date"]);
- echo kelaket_ago_date($date);
- } else {
- echo "-";
- }
- echo " </div>\n <div class=\"column-downloaded\">\n ";
- if (get_imdb_250_series()) {
- echo "اطلاعات دریافت شده است.";
- } else {
- echo "اطلاعاتی از قبل موجود نیست.";
- }
- echo " </div>\n </div>\n </div>\n\n\n\n\n <script>\n jQuery('#get_imdb_250_series').on('click', function(e) {\n var save_poster = jQuery('#imdb_250_series_poster').is(':checked');\n\n jQuery.ajax({\n url: ajaxurl,\n data: {\n action: 'set_imdb_250_series_ajax',\n save_poster: save_poster\n },\n type: 'POST',\n beforeSend: function(xhr) {\n jQuery('#get_imdb_250_series').attr('disabled', 'disabled');\n jQuery('#get_imdb_250_series').text('صبرکنید...');\n },\n success: function(response) {\n if (response.success) {\n jQuery('#get_imdb_250_series').removeAttr('disabled');\n jQuery('#get_imdb_250_series').text('دریافت اطلاعات');\n\n // handle errors and log to browser console\n if (response.data[0].error) {\n alert('مشکلی پیش آمد کنسول مرورگر را برای عیب یابی بررسی کنید.');\n console.log(response.data);\n }\n if (response.data[0].success) {\n alert(response.data[0].msg);\n }\n }\n },\n error: function(error) {\n jQuery('#get_imdb_250_series').removeAttr('disabled');\n jQuery('#get_imdb_250_series').text('دریافت اطلاعات');\n\n alert('مشکلی پیش آمد کنسول مرورگر را برای عیب یابی بررسی کنید. \\n ' + error.statusText);\n console.error(error);\n }\n });\n });\n\n\n jQuery('#get_imdb_250_movies').on('click', function(e) {\n var save_poster = jQuery('#imdb_250_movie_poster').is(':checked');\n jQuery.ajax({\n url: ajaxurl,\n data: {\n action: 'set_imdb_250_movies_ajax',\n save_poster: save_poster\n },\n type: 'POST',\n beforeSend: function(xhr) {\n jQuery('#get_imdb_250_movies').attr('disabled', 'disabled');\n jQuery('#get_imdb_250_movies').text('صبرکنید...');\n },\n success: function(response) {\n if (response.success) {\n jQuery('#get_imdb_250_movies').removeAttr('disabled');\n jQuery('#get_imdb_250_movies').text('دریافت اطلاعات');\n\n // handle errors and log to browser console\n if (response.data[0].error) {\n alert('مشکلی پیش آمد کنسول مرورگر را برای عیب یابی بررسی کنید.');\n console.log(response.data);\n }\n if (response.data[0].success) {\n alert(response.data[0].msg);\n }\n }\n },\n error: function(error) {\n jQuery('#get_imdb_250_movies').removeAttr('disabled');\n jQuery('#get_imdb_250_movies').text('دریافت اطلاعات');\n\n alert('مشکلی پیش آمد کنسول مرورگر را برای عیب یابی بررسی کنید. \\n ' + error.statusText);\n console.error(error);\n }\n });\n });\n\n jQuery('#get_comingsoon').on('click', function(e) {\n var save_poster = jQuery('#coming_soon_poster').is(':checked');\n console.log(save_poster);\n jQuery.ajax({\n url: ajaxurl,\n data: {\n action: 'set_comingsoon',\n save_poster: save_poster\n },\n type: 'POST',\n beforeSend: function(xhr) {\n jQuery('#get_comingsoon').attr('disabled', 'disabled');\n jQuery('#get_comingsoon').text('صبرکنید...');\n },\n success: function(response) {\n if (response.success) {\n jQuery('#get_comingsoon').removeAttr('disabled');\n jQuery('#get_comingsoon').text('دریافت اطلاعات');\n\n // handle errors and log to browser console\n if (response.data[0].error) {\n alert('مشکلی پیش آمد کنسول مرورگر را برای عیب یابی بررسی کنید.');\n console.log(response.data);\n }\n if (response.data[0].success) {\n alert(response.data[0].msg);\n }\n }\n },\n error: function(error) {\n jQuery('#get_comingsoon').removeAttr('disabled');\n jQuery('#get_comingsoon').text('دریافت اطلاعات');\n\n alert('مشکلی پیش آمد کنسول مرورگر را برای عیب یابی بررسی کنید. \\n ' + error.statusText);\n console.error(error);\n }\n });\n });\n </script>\n </div>\n ";
- }
- CSF::createSection($prefix, ["title" => "تنظیمات تگ ساز", "icon" => "fa fa-tags", "fields" => [["id" => "tags_template", "type" => "code_editor", "title" => "تمپلیت تگ ها", "desc" => "تگ های داینامیک قابل استفاده: \n </br>\n {title} = عنوان مطلب\n </br>\n {en_title} = عنوان کوتاه مطلب\n </br>\n {site_title} = نام سایت \n </br>\n {type_fa} = نوع مطلب به فارسی - فیلم - سریال - انیمه و...\n </br>\n {type_en} = نوع مطلب به انگلیسی\n </br>\n {year} = سال ساخت\n "]]]);
- CSF::createSection($prefix, ["title" => "عیب یابی / لاگ", "icon" => "fa fa-bug", "fields" => [["type" => "callback", "function" => "logs_callback"]]]);
- function logs_callback()
- {
- $log = new Kelaket_Log();
- $logs = $log->get_log();
- echo "\n ";
- if (isset($_POST["clear_log"])) {
- $deleted = $log->clear_log();
- _e("تاریخچه لاگ ها با موفقیت حذف شد.", "kelaketfilm");
- }
- echo "\n <div class=\"header_log\">\n <h2>";
- _e("لاگ های ثبت شده در کلاکت فیلم", "kelaketfilm");
- echo "</h2>\n\n <form type=\"post\">\n <button name=\"clear_log\" class=\"button csf-warning-primary csf-reset-all csf-confirm\">حذف تمامی لاگ ها</button>\n </form>\n </div>\n\n ";
- if (!empty($logs)) {
- echo " <pre class=\"logs\">\n <code class=\"language-html\">\n ";
- echo $logs;
- echo " </code>\n </pre>\n ";
- } else {
- echo " ";
- _e("لاگی ثبت نشده است.", "kelaketfilm");
- echo " ";
- }
- echo " ";
- }
- CSF::createSection($prefix, ["title" => "سوالاتمتداول", "icon" => "fa fa-list", "fields" => [["id" => "posts_testmonial", "type" => "repeater", "title" => "سوالات متداول در صفحه فیلم", "button_title" => "افزودن پرسش جدید", "fields" => [["id" => "posts_testmonial__title", "type" => "text", "title" => "عنوان پرسش"], ["id" => "posts_testmonial__body", "type" => "textarea", "title" => "پاسخ پرسش"]]]]]);
- CSF::createSection($prefix, ["title" => "درون ریزی / برون ریزی تنظیمات", "icon" => "fa fa-snowflake-o", "fields" => [["type" => "backup"]]]);
- }
- }
- }
- add_action("init", "kelaket_register_menus");
- add_theme_support("title-tag");
- add_theme_support("post-thumbnails");
- add_theme_support("automatic-feed-links");
- add_theme_support("html5", ["comment-list", "comment-form", "search-form", "gallery", "caption", "style", "script"]);
- add_image_size("actor-img", 196, 196, true);
- add_image_size("blog-img", 620, 220, true);
- add_image_size("blog-single", 950, 500, true);
- add_image_size("rel_item", 169, 244, true);
- add_image_size("post_retina", 432, 588, true);
- add_action("admin_menu", "remove_cuttax_metaboxes", 100);
- add_filter("comment_form_default_fields", "remove_comment_url");
- add_filter("the_time", "date_format_ago");
- add_filter("the_modified_time", "relative_modified_time");
- add_action("wp_ajax_data_fetch", "data_fetch");
- add_action("wp_ajax_nopriv_data_fetch", "data_fetch");
- if (function_exists("register_sidebar")) {
- register_sidebar(["name" => "ابزارک های سایدبار", "id" => "sidebar-1", "description" => "ناحيه قرارگيری ابزارکهای شما", "before_widget" => "<aside class=\"widget widget-wp widget-bg col-lg-12\">", "after_widget" => "</aside>", "before_title" => "<div class=\"widget_title\"><h3><i class=\"fa fa-layer-group\"></i>", "after_title" => "</h3></div>"]);
- register_sidebar(["name" => "ابزارک های سایدبار۲", "id" => "sidebar-2", "description" => "این سایدبار در قالب اصلی نمایش داده نمیشود و برای استفاده در المنتور میباشد. برای مواردی که نیاز به ۲ سایدبار دارید", "before_widget" => "<aside class=\"widget widget-wp widget-bg col-lg-12\">", "after_widget" => "</aside>", "before_title" => "<div class=\"widget_title\"><h3><i class=\"fa fa-layer-group\"></i>", "after_title" => "</h3></div>"]);
- register_sidebar(["name" => "ابزارک های ادامه مطلب", "id" => "single", "description" => "این سایدبار برای استفاده در ادامه مطلب حالت مدرن میباشد", "before_widget" => "<aside class=\"widget widget-wp widget-bg col-lg-12\">", "after_widget" => "</aside>", "before_title" => "<div class=\"widget_title\"><h3><i class=\"fa fa-layer-group\"></i>", "after_title" => "</h3></div>"]);
- register_sidebar(["name" => "ابزارک های فوتر", "id" => "footer_widget", "description" => "این بخش برای استفاده در فوتر در المنتور میباشد.", "before_widget" => "<aside class=\"widget widget-wp widget-bg col-lg-12\">", "after_widget" => "</aside>", "before_title" => "<div class=\"widget_title\"><h3><i class=\"fa fa-layer-group\"></i>", "after_title" => "</h3></div>"]);
- }
- add_action("template_include", "advanced_search_template");
- add_action("init", "custom_post_type", 0);
- add_filter("pre_get_posts", "add_tag_to_custom_post");
- add_filter("term_links-actor", "limit_terms");
- add_action("wp_ajax_removeFav", "remove_favorite");
- add_action("wp_ajax_nopriv_removeFav", "remove_favorite");
- add_action("wp_ajax_setfavorite", "setfavorite");
- add_action("wp_ajax_nopriv_setfavorite", "setfavorite");
- add_action("wp_head", "myplugin_ajaxurl");
- add_action("after_setup_theme", "remove_admin_bar");
- add_action("admin_init", "remove_read_wpse_93843");
- add_action("elementor/widgets/register", "register_tabPosts_widget");
- add_action("elementor/elements/categories_registered", "add_elementor_widget_categories");
- add_action("elementor/theme/register_locations", "kelaketfilm_register_elementor_locations");
- add_action("wp_ajax_loadSeries", "loadSeries");
- add_action("wp_ajax_nopriv_loadSeries", "loadSeries");
- add_action("add_meta_boxes", "hcf_register_meta_boxes");
- add_action("wp_ajax_checkPostExits", "checkPostExits");
- add_action("save_post", "get_movie_data");
- add_action("wp_ajax_upload_poster", "upload_film_poster");
- add_action("wp_ajax_nopriv_login_", "ajax_login");
- add_action("wp_ajax_nopriv_register", "ajax_register");
- add_action("wp_ajax_data_fetch2", "data_fetch2");
- add_action("wp_ajax_nopriv_data_fetch2", "data_fetch2");
- add_action("wp_ajax_data_fetch_profile", "data_fetch_profile");
- add_action("wp_ajax_nopriv_data_fetch_profile", "data_fetch_profile");
- add_action("wp_loaded", "wpdocs_flush_rules");
- add_filter("rewrite_rules_array", "wpdocs_insert_rewrite_rules");
- add_filter("query_vars", "wpdocs_insert_query_vars");
- add_filter("rewrite_rules_array", "wpdocs_insert_rewrite_rules2");
- add_filter("query_vars", "wpd_query_vars");
- add_action("init", "wpd_user_rewrite_rule");
- if (isset($_GET["imdb_id"])) {
- if (!preg_match("/ev\\d{7}\\/\\d{4}(-\\d)?|(ch|co|ev|nm|tt)\\d{7}/", $_GET["imdb_id"])) {
- exit("شلوغی ممنوع :D");
- }
- $args = ["meta_key" => "imdb", "meta_value" => $_GET["imdb_id"]];
- $post = get_posts($args);
- if ($post) {
- $postId = $post[0]->ID;
- wp_redirect(get_the_permalink($postId));
- exit;
- }
- wp_redirect(home_url());
- exit;
- }
- if (get_option("my_framework")["updated_first"]) {
- add_action("pre_get_posts", "modified");
- }
- add_action("admin_menu", "register_user_lists_menu");
- add_action("rcp_profile_editor_after", "add_phone_to_rcp");
- add_action("rcp_user_profile_updated", "save_phone_to_rcp", 10);
- add_action("wp_ajax_nopriv_reset_password", "ajax_resetpass");
- add_action("save_post", "get_anime_data");
- add_action("wp_ajax_setVote", "setVote");
- add_action("wp_ajax_nopriv_setVote", "setVote");
- add_action("wp_ajax_setVote_cookie", "setVote2");
- add_action("wp_ajax_nopriv_setVote_cookie", "setVote2");
- if (!is_admin()) {
- function search_filter_posts($query)
- {
- if ($query->is_search) {
- $query->set("post_type", "post");
- }
- return $query;
- }
- add_filter("pre_get_posts", "search_filter_posts");
- }
- add_action("init", function () {
- remove_filter("relevanssi_post_ok", "relevanssi_restrictcontentpro_compatibility");
- }, 11);
- remove_filter("comments_template", "rcp_hide_comments", 9999999);
- remove_filter("the_content", "rcp_filter_restricted_content", 100);
- add_action("wp_dashboard_setup", "remove_dashboard_widgets");
- add_action("wp_ajax_kelaket_translate", "kelaket_translate_ajax_handler");
- add_action("wp_ajax_nopriv_kelaket_translate", "kelaket_translate_ajax_handler");
- add_action("wp_ajax_uploadActorsByChunk", "uploadActorsByChunk_ajax");
- add_action("wp_ajax_comment_vote", "kelaket_comment_vote");
- add_action("wp_ajax_nopriv_comment_vote", "kelaket_comment_vote");
- add_filter("admin_footer_text", "kelaket_admin_text");
- add_action("wp_ajax_set_imdb_250_movies_ajax", "set_imdb_250_movies_ajax");
- add_action("wp_ajax_nopriv_set_imdb_250_movies_ajax", "set_imdb_250_movies_ajax");
- add_action("wp_ajax_set_imdb_250_series_ajax", "set_imdb_250_series_ajax");
- add_action("wp_ajax_nopriv_set_imdb_250_series_ajax", "set_imdb_250_series_ajax");
- add_action("wp_ajax_set_comingsoon", "set_comingsoon_ajax");
- add_action("wp_ajax_nopriv_set_comingsoon", "set_comingsoon_ajax");
- add_action("wp_loaded", "kelaket_auth_token");
- add_action("init", "redirect_vip");
- add_action("wp_ajax_remove_trend", "kelaket_remove_trend");
- add_action("wp", "kelaket_log_visits");
- add_action("wp_ajax_clear_recent_history", "clear_recent_history");
- add_action("wp_ajax_nopriv_clear_recent_history", "clear_recent_history");
- add_action("add_meta_boxes", "rm_register_meta_box");
- add_action("wp_ajax_create_kelaket_tags", "create_kelaket_tags_ajax");
- add_filter("rcp_registration_register_button", function () {
- return __("خرید اشتراک", "kelaketfilm");
- });
- add_action("after_switch_theme", "create_kelaket_default_pages");
- add_action("comment_form_logged_in_after", "additional_fields");
- add_action("comment_form_after_fields", "additional_fields");
- add_action("comment_post", "save_comment_meta_data");
- add_action("add_meta_boxes_comment", "extend_comment_add_meta_box");
- add_action("edit_comment", "extend_comment_edit_metafields");
- add_filter("lostpassword_url", "kelaket_change_wp_reset_pass_url", 10, 1);
- add_filter("gutenberg_use_widgets_block_editor", "__return_false");
- add_filter("use_widgets_block_editor", "__return_false");
- add_action("wp_dashboard_setup", "kelaket_importer_dashboard");
- add_action("wp_ajax_getBoxOfficeDataFromImdb", "getBoxOfficeDataFromImdb_ajax");
- add_action("admin_footer", function () {
- echo " <script type=\"text/javascript\">\n //auto poplute movie quality field\n jQuery(document).on(\"change\", \"select\", function() {\n if (this.id.includes('field_64945cb5184ef') || this.id.includes('field_649467f318ea7')) {\n jQuery(this).parent().parent().next().children().children().children().val(this.value);\n }\n });\n </script>\n ";
- });
- add_action("wp_ajax_kelaket_load_more_cats", "kelaket_load_more_cats");
- add_action("wp_ajax_nopriv_kelaket_load_more_cats", "kelaket_load_more_cats");
- add_filter("acf/the_field/allow_unsafe_html", function ($allowed, $selector) {
- if ($selector === "online_link_serial") {
- return true;
- }
- if ($selector === "online_link") {
- return true;
- }
- return $allowed;
- }, 10, 2);
- add_filter("acf/admin/prevent_escaped_html_notice", "__return_true");
- if (class_exists("CSF")) {
- $prefix = "_prefix_menu_options";
- CSF::createNavMenuOptions($prefix, ["data_type" => "unserialize"]);
- CSF::createSection($prefix, ["fields" => [["id" => "icon", "type" => "icon", "title" => "Icon"], ["id" => "has_mega_menu", "type" => "switcher", "title" => "مگامنو", "desc" => "اگر میخواهید این منو مگامنو باشد فعال کنید.\n <br><br>\n همواره منوی با عمق ۱ را برای مگامنو انتخاب کنید و از فعال کردن این گزینه در زیرمنو ها خودداری کنید.\n "]]]);
- }
- add_filter("wp_kses_allowed_html", "acf_add_allowed_iframe_tag", 10, 2);
- add_action("wp_ajax_get_single_tab_content", "kelaket_getSingleTabContents");
- add_action("wp_ajax_nopriv_get_single_tab_content", "kelaket_getSingleTabContents");
- add_filter("comment_form_defaults", "kelaket_customize_must_log_in_message");
- add_filter("comment_reply_link", "custom_reply_login_link_filter", 10, 4);
- add_filter("query_vars", "kelaket_register_panel_query_vars");
- add_action("init", "kelaket_add_panel_rewrite_rules");
- add_action("after_switch_theme", "kelaket_flush_rewrite_rules_on_activate");
- if (theme_options("vip_system") == "kelaketfilm") {
- add_action("template_redirect", function () {
- if (get_query_var("payment") == 1 && get_query_var("transaction")) {
- include get_template_directory() . "/page-templates/payment.php";
- exit;
- }
- });
- }
- add_action("wp_ajax_kelaket_validate_discount_code", "kelaket_validate_discount_code");
- add_action("wp_ajax_nopriv_kelaket_validate_discount_code", "kelaket_validate_discount_code");
- add_action("wp_head", "kelaketfilm_add_default_seo_meta_description", 1);
- add_action("init", "handle_ticket_submission");
- add_action("init", "handle_create_list_submission");
- add_action("init", "handle_edit_list_submission");
- add_action("init", "handle_edit_list_item_submission");
- add_action("init", "handle_delete_list_action");
- add_action("init", "handle_film_request_submission");
- add_action("init", "handle_vip_checkout_process");
- add_action("template_redirect", "validate_vip_plan_id_on_load");
- add_action("init", "handle_profile_update_submission");
- function my_add_extra_profile_fields($user)
- {
- global $wpdb;
- $table_name = $wpdb->prefix . "kelaket_subscribers";
- $exists = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . $table_name . " WHERE user_id = %d", $user->ID), ARRAY_A);
- if (!empty($exists)) {
- $sub_status = $exists["status"];
- $expiration_date = $exists["expiration_date"];
- $date_array = explode("-", $expiration_date);
- $expiration_date = gregorian_to_jalali($date_array[0], $date_array[1], $date_array[2], "/");
- } else {
- $sub_status = "expire";
- }
- if (!user_can(get_current_user_id(), "manage_options")) {
- return NULL;
- }
- echo "\n <h3>";
- _e("مدیریت اشتراک کاربر", "kelaketfilm");
- echo "</h3>\n\n <table class=\"form-table\">\n <tr>\n <th><label>";
- _e("وضعیت اشتراک", "kelaketfilm");
- echo "</label></th>\n <td class=\"status-toggle\">\n <label for=\"user_subscriber_active\">\n <input name=\"kelaket_sub_status\" type=\"radio\" id=\"user_subscriber_active\" value=\"active\" ";
- echo $sub_status == "active" ? "checked=\"\"" : "";
- echo ">";
- _e("فعال", "kelaketfilm");
- echo " </label>\n <label for=\"user_subscriber_deactive\">\n <input name=\"kelaket_sub_status\" type=\"radio\" id=\"user_subscriber_deactive\" value=\"expire\" ";
- echo $sub_status == "expire" ? "checked=\"\"" : "";
- echo "> ";
- _e("غیرفعال", "kelaketfilm");
- echo " </label>\n <br>\n </td>\n </tr>\n <tr>\n <th><label>";
- _e("تاریخ انقضا اشتراک", "kelaketfilm");
- echo "</label></th>\n <td>\n <input type=\"text\"\n name=\"kelaket_expiration_date\"\n data-jdp\n value=\"";
- echo !empty($expiration_date) ? esc_attr($expiration_date) : "";
- echo "\"\n class=\"regular-text\" />\n </td>\n </tr>\n </table>\n ";
- }
- function vip_extra_profile_fields($user_id)
- {
- if (!current_user_can("manage_options", $user_id)) {
- return false;
- }
- global $wpdb;
- $table_name = $wpdb->prefix . "kelaket_subscribers";
- $exists = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . $table_name . " WHERE user_id = %d", $user_id), ARRAY_A);
- if (isset($_POST["kelaket_sub_status"])) {
- $sub_status = $_POST["kelaket_sub_status"];
- if ($sub_status == "active" && empty($_POST["kelaket_expiration_date"])) {
- exit("شما بدون درج تاریخ انقضا اشتراک کاربر را فعال کرده اید لطفا به صفحه قبل برگشته و تاریخ انقضا را تعیین");
- }
- if (!empty($exists)) {
- $sub_status = $sub_status == "active" ? "active" : "expire";
- $result = $wpdb->update($table_name, ["status" => $sub_status], ["id" => $exists["id"]]);
- if (isset($_POST["kelaket_expiration_date"]) && !empty($_POST["kelaket_expiration_date"])) {
- $kelaket_expiration_date = sanitize_text_field($_POST["kelaket_expiration_date"]);
- $date_array = explode("/", $kelaket_expiration_date);
- if (is_array($date_array) && !empty($date_array)) {
- $expiration_date_gregorian = jalali_to_gregorian($date_array[0], $date_array[1], $date_array[2], "-") . " 23:59:59";
- } else {
- $expiration_date_gregorian = "";
- }
- $update_data = ["expiration_date" => $expiration_date_gregorian];
- if (!empty($expiration_date_gregorian)) {
- $now = date("Y-m-d");
- if (strtotime($expiration_date_gregorian) < strtotime($now)) {
- $update_data["status"] = "expire";
- }
- }
- $wpdb->update($table_name, $update_data, ["id" => $exists["id"]]);
- }
- } else {
- $sub_status = $sub_status == "active" ? "active" : "expire";
- if (isset($_POST["kelaket_expiration_date"]) && !empty($_POST["kelaket_expiration_date"])) {
- $kelaket_expiration_date = sanitize_text_field($_POST["kelaket_expiration_date"]);
- $date_array = explode("/", $kelaket_expiration_date);
- if (is_array($date_array) && !empty($date_array)) {
- $expiration_date_gregorian = jalali_to_gregorian($date_array[0], $date_array[1], $date_array[2], "-") . " 23:59:59";
- } else {
- $expiration_date_gregorian = "";
- }
- $update_data = ["user_id" => $user_id, "expiration_date" => $expiration_date_gregorian, "status" => $sub_status];
- if (!empty($expiration_date_gregorian)) {
- $now = date("Y-m-d");
- if (strtotime($expiration_date_gregorian) < strtotime($now)) {
- $update_data["status"] = "expire";
- }
- }
- $result = $wpdb->insert($table_name, $update_data);
- }
- }
- }
- }
- function theme_options($args = NULL)
- {
- if ($args) {
- if (isset(get_option("my_framework")[$args])) {
- return get_option("my_framework")[$args];
- }
- } else {
- return get_option("my_framework");
- }
- }
- function kelaket_log($location = NULL, $input = "")
- {
- $log = new Kelaket_Log();
- if (is_array($input)) {
- $input = print_r($input, true);
- }
- $log->log($input, $location);
- }
- function kelaket_load_textdomain()
- {
- load_theme_textdomain("kelaketfilm", __DIR__ . "/languages");
- }
- function kelaket_admin_styles()
- {
- wp_register_style("admin_style", get_template_directory_uri() . "/css/admin.css", false, "1.0", "all");
- wp_enqueue_style("admin_style");
- }
- function remove_jquery_migrate(&$scripts)
- {
- if (!is_admin()) {
- $scripts->remove("jquery");
- $scripts->add("jquery", false, ["jquery-core"], "1.2.1", true);
- }
- }
- function load_kelaketfilm_scripts()
- {
- wp_register_script("main_js", get_template_directory_uri() . "/js/main.js", ["jquery"], 1, true);
- wp_register_script("nice_select", get_template_directory_uri() . "/js/nice-select.js", ["jquery"], 1, true);
- wp_register_script("jquery_ui", get_template_directory_uri() . "/js/jquery-ui.min.js", ["jquery"], 1, true);
- wp_register_script("owl", get_template_directory_uri() . "/js/owl.carousel.min.js", ["jquery"], 1, true);
- wp_register_script("bootstrapjs", get_template_directory_uri() . "/js/bootstrap.bundle.min.js", [], 1, true);
- wp_register_script("count", get_template_directory_uri() . "/js/count.js", [], 1, true);
- wp_register_script("chocolat", get_template_directory_uri() . "/js/chocolat.js", [], 1, true);
- wp_register_script("toastr", get_template_directory_uri() . "/js/toastr.min.js", [], 1, true);
- wp_register_script("plyr", get_template_directory_uri() . "/js/plyr.min.js", [], 1, true);
- wp_enqueue_script("owl");
- wp_enqueue_script("bootstrapjs");
- wp_enqueue_script("count");
- wp_enqueue_script("toastr");
- wp_enqueue_script("nice_select");
- wp_enqueue_script("main_js");
- if (is_single()) {
- wp_enqueue_script("chocolat");
- wp_enqueue_script("plyr");
- }
- $translation_array = ["success_wishlist" => __("موفقیت آمیز بود", "kelaketfilm"), "error" => __("خطا", "kelaketfilm"), "wait" => __("صبرکنید", "kelaketfilm"), "loading_data" => __("درحال دریافت اطلاعات", "kelaketfilm"), "vote_wait" => __("درحال ثبت رای شما", "kelaketfilm"), "vote_success" => __("رای با موفقیت ثبت شد.", "kelaketfilm"), "vote" => __("رای", "kelaketfilm"), "more" => __("مشاهده بیشتر", "kelaketfilm"), "less" => __("مشاهده کمتر", "kelaketfilm"), "copied" => __("کپی شد!", "kelaketfilm"), "delete_propmt" => __("آیا مطمئن هستید میخواهید این فیلم را حذف کنید؟", "kelaketfilm"), "is_rtl" => is_rtl() ? "true" : "false"];
- wp_localize_script("main_js", "kelaketfilm", $translation_array);
- if (is_page("panel")) {
- wp_enqueue_script("jquery_ui");
- }
- }
- function kelaket_register_menus()
- {
- register_nav_menus(["category" => __("منوی دسته بندی"), "header" => __("منوی هدر"), "foot-menu-1" => __("منوی فوتر ۱"), "foot-menu-2" => __("منوی فوتر ۲")]);
- }
- function remove_cuttax_metaboxes()
- {
- $post_type = "post";
- $taxonomy = "actor";
- $taxonomy2 = "director";
- remove_meta_box($taxonomy . "div", $post_type, "side");
- remove_meta_box($taxonomy2 . "div", $post_type, "side");
- }
- function remove_comment_url($arg)
- {
- $arg["url"] = "";
- return $arg;
- }
- function mycomments($comment, $args, $depth)
- {
- $GLOBALS["comment"] = $comment;
- $has_spoil = false;
- if (get_comment_meta($comment->comment_ID, "spoil", true)) {
- $has_spoil = true;
- }
- echo " <li ";
- comment_class($has_spoil ? "has_spoil" : "");
- echo " id=\"li-comment-";
- comment_ID();
- echo "\">\n ";
- if (get_comment_meta($comment->comment_ID, "spoil", true)) {
- echo " <div class=\"comment_spoiler d-flex flex-column\">\n <div class=\"mb-2\">\n <i class=\"fa fa-diamond-exclamation\"></i> ";
- _e("این دیدگاه حاوی اسپویل است و داستان فیلم را لو میدهد.", "kelaketfilm");
- echo " </div>\n <div>\n <button class=\"show_comment\">";
- _e("نمایش دیدگاه", "kelaketfilm");
- echo "</button>\n </div>\n </div>\n ";
- }
- echo " <div class=\"d-flex comment_box\" id=\"comment-";
- comment_ID();
- echo "\">\n <div class=\"right_side d-flex\">\n ";
- printf(__("<span class=\"fn author_mobile\">%s</span>"), get_comment_author_link());
- echo " ";
- echo get_avatar($comment, $size = "60", $default = "");
- echo " </div>\n <div class=\"left_side d-flex\">\n <div class=\"w-100 d-flex justify-content-between\">\n <div class=\"comment-author vcard\">\n ";
- printf(__("<cite class=\"fn\">%s</cite>"), get_comment_author_link());
- echo " </div>\n ";
- if ($comment->comment_approved == "0") {
- echo " <em>";
- _e("Your comment is awaiting moderation.");
- echo "</em>\n ";
- }
- echo " </div>\n <div class=\"w-100\">\n ";
- comment_text();
- echo "\n <div class=\"reply\">\n ";
- comment_reply_link(array_merge($args, ["depth" => $depth, "max_depth" => $args["max_depth"]]));
- echo " </div>\n </div>\n </div>\n <div class=\"comment_data d-flex align-items-start flex-column gap-2\">\n <div class=\"like comment_like_handle\">\n <button data-action=\"like\" data-id=\"";
- comment_ID();
- echo "\" data-nonce=\"";
- echo wp_create_nonce("comment_vote");
- echo "\" class=\"comment_like\"><i class=\"fa fa-thumbs-up\"></i> <span>";
- echo get_comment_meta(get_comment_ID(), "cld_like_count", true) ? get_comment_meta(get_comment_ID(), "cld_like_count", true) : 0;
- echo "</span></button>\n <button data-action=\"dislike\" data-id=\"";
- comment_ID();
- echo "\" data-nonce=\"";
- echo wp_create_nonce("comment_vote");
- echo "\" class=\"comment_dislike\"><i class=\"fa fa-thumbs-down\"></i> <span>";
- echo get_comment_meta(get_comment_ID(), "cld_dislike_count", true) ? get_comment_meta(get_comment_ID(), "cld_dislike_count", true) : 0;
- echo "</span></button>\n </div>\n\n\n <div class=\"comment-meta commentmetadata\">\n <a href=\"";
- echo htmlspecialchars(get_comment_link($comment->comment_ID));
- echo "\">";
- printf(__("%1\$s"), get_comment_date());
- echo "</a>\n </div>\n\n </div>\n </div>\n ";
- }
- function date_format_ago()
- {
- return sprintf(esc_html__("%s پیش", "kelaketfilm"), human_time_diff(get_the_time("U"), current_time("timestamp")));
- }
- function relative_modified_time()
- {
- $last_modified_time = get_the_modified_time("U");
- $current_time = current_time("U");
- return human_time_diff($last_modified_time, $current_time) . __(" پیش ", "kelaketfilm");
- }
- function data_fetch()
- {
- $the_query = new WP_Query(["posts_per_page" => 7, "s" => esc_attr($_POST["keyword"]), "post_type" => "post"]);
- if ($the_query->have_posts()) {
- while ($the_query->have_posts()) {
- $the_query->the_post();
- echo " <div class=\"search_row\">\n <a href=\"";
- the_permalink();
- echo "\">";
- the_title();
- echo " <span>";
- $cat = get_the_category();
- echo $cat[0]->cat_name;
- echo "</span>\n </a>\n </div>\n ";
- }
- echo " <div class=\"center\"><a class=\"show_more\" href=\"";
- bloginfo("url");
- echo "/?s=";
- echo $_POST["keyword"];
- echo "\">\n ";
- _e("مشاهده همه نتایج ", "kelaketfilm");
- echo " ";
- echo $_POST["keyword"];
- echo "</a></div>\n ";
- wp_reset_postdata();
- } else {
- echo "<h6>" . __("چیزی پیدانشد دوباره تلاش کنید!", "kelaketfilm") . "</h6>";
- }
- exit;
- }
- function Generate_Featured_Image($image_url, $post_id)
- {
- $upload_dir = wp_upload_dir();
- $image_data = file_get_contents_curl($image_url);
- $filename = basename($image_url);
- if (wp_mkdir_p($upload_dir["path"])) {
- $file = $upload_dir["path"] . "/" . $filename;
- } else {
- $file = $upload_dir["basedir"] . "/" . $filename;
- }
- file_put_contents($file, $image_data);
- $wp_filetype = wp_check_filetype($filename, NULL);
- $attachment = ["post_mime_type" => $wp_filetype["type"], "post_title" => sanitize_file_name($filename), "post_content" => "", "post_status" => "inherit"];
- $attach_id = wp_insert_attachment($attachment, $file, $post_id);
- require_once ABSPATH . "wp-admin/includes/image.php";
- $attach_data = wp_generate_attachment_metadata($attach_id, $file);
- $res1 = wp_update_attachment_metadata($attach_id, $attach_data);
- $res2 = set_post_thumbnail($post_id, $attach_id);
- }
- function uploadImage($image_url, $post_id, $return_attach = false)
- {
- $upload_dir = wp_upload_dir();
- $image_data = file_get_contents_curl($image_url);
- $filename = basename($image_url);
- if (wp_mkdir_p($upload_dir["path"])) {
- $file = $upload_dir["path"] . "/" . $filename;
- } else {
- $file = $upload_dir["basedir"] . "/" . $filename;
- }
- file_put_contents($file, $image_data);
- $wp_filetype = wp_check_filetype($filename, NULL);
- $attachment = ["post_mime_type" => $wp_filetype["type"], "post_title" => sanitize_file_name($filename), "post_content" => "", "post_status" => "inherit"];
- $attach_id = wp_insert_attachment($attachment, $file, $post_id);
- require_once ABSPATH . "wp-admin/includes/image.php";
- $attach_data = wp_generate_attachment_metadata($attach_id, $file);
- $res1 = wp_update_attachment_metadata($attach_id, $attach_data);
- if ($return_attach) {
- return $attach_id;
- }
- return wp_get_attachment_url($attach_id);
- }
- function advanced_search_template($template)
- {
- if (isset($_REQUEST["search"]) && $_REQUEST["search"] == "advanced") {
- $t = locate_template("advanced-search-template.php");
- if (!empty($t)) {
- $template = $t;
- }
- }
- return $template;
- }
- function custom_post_type()
- {
- $labels = ["name" => _x("وبلاگ", "Post Type General Name", "kelaketfilm"), "singular_name" => _x("وبلاگ", "Post Type Singular Name", "kelaketfilm"), "menu_name" => __("وبلاگ", "kelaketfilm"), "parent_item_colon" => __("پرنت وبلاگ", "kelaketfilm"), "all_items" => __("همه نوشته ها", "kelaketfilm"), "view_item" => __("نمایش پست", "kelaketfilm"), "add_new_item" => __("افزودن پست", "kelaketfilm"), "add_new" => __("افزودن", "kelaketfilm"), "edit_item" => __("ویرایش پست", "kelaketfilm"), "update_item" => __("بروزرسانی", "kelaketfilm"), "search_items" => __("جستجو", "kelaketfilm"), "not_found" => __("پیدانشد", "kelaketfilm"), "not_found_in_trash" => __("در زباله دان پیدا نشد", "kelaketfilm")];
- $args = ["label" => __("وبلاگ", "kelaketfilm"), "description" => __("بخش وبلاگ فیلم و سریال", "kelaketfilm"), "labels" => $labels, "supports" => ["title", "editor", "excerpt", "author", "thumbnail", "comments", "revisions", "custom-fields"], "taxonomies" => ["post_tag", "blog_category"], "hierarchical" => false, "public" => true, "show_ui" => true, "show_in_menu" => true, "show_in_nav_menus" => true, "show_in_admin_bar" => true, "menu_position" => 5, "can_export" => true, "has_archive" => true, "exclude_from_search" => false, "publicly_queryable" => true, "capability_type" => "post", "show_in_rest" => true];
- register_post_type("blog", $args);
- }
- function add_tag_to_custom_post($query)
- {
- if (is_tag() && $query->is_main_query()) {
- $post_types = get_post_types();
- $query->set("post_type", $post_types);
- }
- }
- function limit_terms($val)
- {
- return array_splice($val, 0, 5);
- }
- function setfavorite()
- {
- check_ajax_referer("sexy_ajax_call", "nonce");
- if (isset($_POST["userid"]) && isset($_POST["favoriteid"])) {
- $userid = (int) filter_var($_POST["userid"], FILTER_SANITIZE_NUMBER_INT);
- $favoriteid = filter_var($_POST["favoriteid"], FILTER_SANITIZE_NUMBER_INT);
- if ($userid == 0) {
- echo json_encode(["error" => true, "message" => __("برای افزودن به لیست تماشا وارد حساب کاربری خود بشوید!", "kelaketfilm")]);
- exit;
- }
- if (get_current_user_id() !== $userid) {
- echo json_encode(["error" => true, "message" => __("شما نمیتوانید این مطلب را به لیست تماشا کاربر دیگر اضافه کنید :D", "kelaketfilm")]);
- exit;
- }
- if (filter_var($userid, FILTER_VALIDATE_INT) && filter_var($favoriteid, FILTER_VALIDATE_INT)) {
- $favorites_list = get_user_meta($userid, "favorites_list", true);
- if (!is_array($favorites_list) || empty($favorites_list)) {
- $favorites_list = [];
- }
- $fav_key = array_search($favoriteid, $favorites_list);
- $msg = [];
- if ($fav_key !== false) {
- unset($favorites_list[$fav_key]);
- $is_favorite = false;
- $msg = json_encode(["favorites_list" => $favorites_list, "is_favorite" => $is_favorite, "error" => false, "message" => __("با موفقیت از لیست تماشا حذف شد.", "kelaketfilm")]);
- } else {
- $favorites_list[] = $favoriteid;
- $is_favorite = true;
- $msg = json_encode(["favorites_list" => $favorites_list, "is_favorite" => $is_favorite, "error" => false, "message" => __("با موفقیت به لیست تماشا افزوده شد.", "kelaketfilm")]);
- }
- update_user_meta($userid, "favorites_list", $favorites_list);
- echo $msg;
- exit;
- }
- }
- }
- function is_favorite($userid, $favoriteid)
- {
- $favorites_list = get_user_meta($userid, "favorites_list", true);
- if (!$favorites_list) {
- $favorites_list = [];
- }
- return in_array($favoriteid, $favorites_list);
- }
- function get_favorites_num($favoriteid)
- {
- return get_user_meta($favoriteid, "favorites", true) || 0;
- }
- function remove_favorite()
- {
- check_ajax_referer("sexy_ajax_call", "nonce");
- if (isset($_POST["userid"]) && isset($_POST["favoriteid"])) {
- $userid = filter_var($_POST["userid"], FILTER_SANITIZE_NUMBER_INT);
- $favoriteid = filter_var($_POST["favoriteid"], FILTER_SANITIZE_NUMBER_INT);
- if (filter_var($userid, FILTER_VALIDATE_INT) && filter_var($favoriteid, FILTER_VALIDATE_INT)) {
- $favorites_list = get_user_meta($userid, "favorites_list", true);
- if (!is_array($favorites_list) || empty($favorites_list)) {
- $favorites_list = [];
- }
- $fav_key = array_search($favoriteid, $favorites_list);
- if ($fav_key !== false) {
- unset($favorites_list[$fav_key]);
- }
- update_user_meta($userid, "favorites_list", $favorites_list);
- echo json_encode(["success" => true, "id" => $favoriteid]);
- exit;
- }
- }
- }
- function myplugin_ajaxurl()
- {
- echo "<script type=\"text/javascript\">\n var ajaxurl = \"" . admin_url("admin-ajax.php") . "\";\n var nonce = \"" . wp_create_nonce("sexy_ajax_call") . "\";\n </script>";
- }
- function remove_admin_bar()
- {
- if (!current_user_can("administrator") && !is_admin()) {
- show_admin_bar(false);
- }
- }
- function remove_read_wpse_93843()
- {
- $role = get_role("subscriber");
- $role->remove_cap("read");
- }
- function register_tabPosts_widget($widgets_manager)
- {
- $directory = __DIR__ . "/inc/widgets/elementor";
- if (!is_dir($directory)) {
- return NULL;
- }
- foreach (scandir($directory) as $file) {
- if ($file !== "." && $file !== "..") {
- require_once __DIR__ . "/inc/widgets/elementor/" . $file;
- }
- }
- $widgets_manager->register(new LatestPosts_widget());
- $widgets_manager->register(new CategoryCarousel_widget());
- $widgets_manager->register(new CategoryPosts_widget());
- $widgets_manager->register(new CastCarousel_widget());
- $widgets_manager->register(new Genres_widget());
- $widgets_manager->register(new GenresCarousel_widget());
- $widgets_manager->register(new AboutUs_Element());
- $widgets_manager->register(new Logo_Element());
- $widgets_manager->register(new List_Element());
- $widgets_manager->register(new Slider_widget());
- $widgets_manager->register(new WeeklySeries_widget());
- $widgets_manager->register(new UpdatedSeries_widget());
- $widgets_manager->register(new BlogPosts_widget());
- $widgets_manager->register(new AdvancedSearch_Element());
- }
- function add_elementor_widget_categories($elements_manager)
- {
- $elements_manager->add_category("header", ["title" => esc_html__("ویجت های هدر", "kelaketfilm"), "icon" => "fa fa-plug"]);
- $elements_manager->add_category("kelaketfilm", ["title" => esc_html__("ویجت های کلاکت فیلم", "kelaketfilm"), "icon" => "fa fa-plug"]);
- }
- function kelaketfilm_register_elementor_locations($elementor_theme_manager)
- {
- $elementor_theme_manager->register_location("slider", ["label" => esc_html__("بخش اسلایدر", "kelaketfilm"), "multiple" => true, "edit_in_content" => true]);
- $elementor_theme_manager->register_all_core_location();
- }
- function loadSeries()
- {
- check_ajax_referer("sexy_ajax_call", "nonce");
- $day = stripslashes($_POST["day"]);
- if ($day) {
- $data = NULL;
- if (isset(get_option("my_framework")["series_tabbed"][$day])) {
- $data = get_option("my_framework")["series_tabbed"][$day];
- }
- if (is_array($data)) {
- echo " <div class=\"row\">\n ";
- foreach ($data as $item) {
- echo " <div class=\"col-lg-4 col-md-6 col-sm-6\">\n <div class=\"series_item\">\n <a class=\"d-flex\" href=\"";
- the_permalink($item);
- echo "\">\n <img src=\"";
- echo get_the_post_thumbnail_url($item, "thumbnail");
- echo "\" alt=\"";
- echo get_the_title($item);
- echo "\">\n <div class=\"d-flex flex-column justify-content-between\">\n <div class=\"name\">";
- echo get_field("en_title", $item) ? get_field("en_title", $item) : get_the_title($item);
- echo "</div>\n <div class=\"update\">";
- the_field("update_info", $item);
- echo "</div>\n </div>\n </a>\n </div>\n </div>\n ";
- }
- echo " </div>\n ";
- } else {
- wp_send_json(["error" => true, "message" => __("<i class=\"fa fa-info-circle\"></i>در این روز سریالی پخش نمیشود.", "kelaketfilm")]);
- }
- }
- exit;
- }
- function hcf_register_meta_boxes()
- {
- add_meta_box("hcf-1", __("دریافت اطلاعات از IMDB", "kelaketfilm"), "hcf_display_callback", "post");
- }
- function hcf_display_callback($post)
- {
- echo "\n <div class=\"kelaket_tab_header\">\n <!-- <button type=\"button\" data-tab=\"tab_import\">دریافت اطلاعات</button> -->\n <!-- <button type=\"button\" data-tab=\"tab_actors\">دریافت بازیگران</button> -->\n </div>\n\n <div id=\"tab_import\" class=\"kelaket_tab active\">\n <div class=\"wrap_i\">\n <input id=\"imdb_id\" type=\"text\" placeholder=\"مثلا: tt0468569\">\n <button class=\"button button-primary button-large btn-cs\" id=\"imdb_import\">";
- _e("دریافت اطلاعات", "kelaketfilm");
- echo "</button>\n </div>\n </div>\n\n <div id=\"tab_actors\" class=\"kelaket_tab\">\n <div class=\"wrap_i\">\n ";
- $post_id = NULL;
- if (isset($_REQUEST["post"]) || isset($_REQUEST["post_ID"])) {
- $post_id = empty($_REQUEST["post_ID"]) ? $_REQUEST["post"] : $_REQUEST["post_ID"];
- }
- echo " <input id=\"saved_imdb_id\" value=\"";
- echo get_field("imdb", $post_id);
- echo "\" type=\"hidden\">\n <input type=\"hidden\" id=\"actors_upload_step\" value=\"0\">\n <button id=\"get_movie_actors\" type=\"button\" class=\"button button-primary button-large\">";
- _e("دریافت بازیگران", "kelaketfilm");
- echo "</button>\n <div class=\"actors_msg\"></div>\n <button id=\"start_actors_upload\" type=\"button\" class=\"button button-primary button-large btn-cs d-none\">";
- _e("شروع آپلود بازیگران", "kelaketfilm");
- echo "</button>\n <div class=\"upload_status\"></div>\n\n </div>\n </div>\n\n <div class=\"alert\"></div>\n <style>\n .kelaket_tab {\n display: none;\n }\n\n .d-none {\n display: none !important;\n }\n\n .kelaket_tab.active {\n display: block;\n }\n\n .kelaket_tab_header {\n margin: 15px 0;\n }\n\n .alert {\n border-radius: 5px;\n border: solid 1px #027a028f;\n background: #00800033;\n color: green;\n padding: 10px;\n margin: 10px 0;\n font-size: 14px;\n display: none;\n }\n\n .actors_msg,\n .upload_status {\n margin-right: 10px;\n }\n\n .btn-cs {\n margin-right: 10px !important;\n }\n\n #imdb_id {\n width: 100%;\n }\n\n .errorI {\n border: solid 1px #ff0a0069;\n background: #f917162e;\n color: red;\n }\n\n .wrap_i {\n display: flex;\n align-items: center;\n }\n </style>\n <script>\n jQuery(document).ready(\n function() {\n // simple tab \n jQuery('.kelaket_tab_header button').on('click', function(e) {\n var selected_tab = jQuery(e.target).data('tab');\n jQuery('.kelaket_tab.active').removeClass('active');\n jQuery('#' + selected_tab).addClass('active');\n });\n\n var actors_chunks = [];\n\n\n // import actors new-way\n jQuery('#get_movie_actors').on('click', function() {\n var imdb_id = jQuery('#saved_imdb_id').val();\n\n jQuery.ajax({\n url: ajaxurl,\n data: {\n action: \"getMovieActors\",\n id: imdb_id\n },\n dataType: \"json\",\n type: \"GET\",\n cache: false,\n\n beforeSend: function(xhr) {\n jQuery('#get_movie_actors').attr('disabled', true);\n },\n\n success: function(data) {\n jQuery('#get_movie_actors').attr('disabled', false);\n actors_chunks = data;\n jQuery('.actors_msg').text('تعداد کل بازیگران: ' + data.all_actors);\n jQuery('#start_actors_upload').removeClass('d-none');\n },\n error: function(error) {\n console.error(error);\n }\n });\n });\n\n // upload fetched actors\n jQuery('#start_actors_upload').on('click', upload_actors_chunk_by_chunk);\n jQuery('#actors_upload_step').on('change', upload_actors_chunk_by_chunk);\n\n function upload_actors_chunk_by_chunk() {\n var imdb_id = jQuery('#saved_imdb_id').val();\n\n console.log(actors_chunks);\n jQuery.ajax({\n url: ajaxurl,\n data: {\n action: \"uploadActorsByChunk\",\n post_id: \"";
- echo $post_id;
- echo "\",\n chunk: jQuery('#actors_upload_step').val(),\n all_chunks: actors_chunks.chunks,\n data: actors_chunks.actors\n },\n dataType: \"json\",\n type: \"POST\",\n cache: false,\n\n beforeSend: function(xhr) {\n jQuery('#start_actors_upload').attr('disabled', true);\n // jQuery('.upload_status').text('درحال آپلود تصاویر صبرکنید...');\n\n },\n\n success: function(data) {\n // if chunk upload successfully update chunk state to rerun ajax call for next chunk\n if (data.success) {\n if (data.next_chunk <= actors_chunks.chunks) {\n setTimeout(function() {\n jQuery('#actors_upload_step').val(data.next_chunk).trigger('change');\n }, 3000)\n }\n if (data.next_chunk <= actors_chunks.chunks) {\n jQuery('.upload_status').text('درحال آپلود چانک ' + data.next_chunk)\n }\n if (data.finish) {\n jQuery('.upload_status').text('آپلود بازیگران به اتمام رسید.');\n }\n }\n },\n error: function(error) {\n console.error(error);\n }\n });\n }\n\n\n //import movie data\n jQuery('#imdb_import').on('click', function(e) {\n e.preventDefault();\n var imdbId = jQuery('#imdb_id').val();\n if (imdbId.length < 1) {\n alert('شناسه IMDB را وارد کنید.');\n return;\n }\n //send ajax call\n jQuery.ajax({\n url: ajaxurl,\n data: {\n action: \"checkPostExits\",\n id: imdbId\n },\n dataType: \"json\",\n type: \"GET\",\n cache: false,\n\n beforeSend: function(xhr) {\n jQuery('#imdb_import').text('صبرکنید...');\n jQuery('#imdb_import').attr('disabled', true);\n },\n\n success: function(data) {\n jQuery('#imdb_import').text('دریافت اطلاعات');\n jQuery('#imdb_import').attr('disabled', false);\n console.log(data);\n if (data.app_exists == true) {\n var confirmPrompt = confirm(data.message);\n if (confirmPrompt == true) {\n //get data\n getData(imdbId)\n }\n } else {\n getData(imdbId)\n }\n },\n error: function(error) {\n console.log(error);\n }\n });\n\n ";
- if (get_option("my_framework")["omdb-token"]) {
- $OMDB_TOKEN = get_option("my_framework")["omdb-token"];
- } else {
- $OMDB_TOKEN = "3ac315c9";
- }
- echo "\n function getData(imdbId) {\n jQuery.ajax({\n url: \"https://www.omdbapi.com/?apikey=";
- echo $OMDB_TOKEN;
- echo "&i=\" + imdbId,\n // data: {\n\n // },\n dataType: \"json\",\n type: \"GET\",\n cache: false,\n\n beforeSend: function(xhr) {\n jQuery('#imdb_import').text('صبرکنید...');\n jQuery('#imdb_import').attr('disabled', true);\n },\n\n success: function(data) {\n jQuery('#imdb_import').text('دریافت اطلاعات');\n jQuery('#imdb_import').attr('disabled', false);\n if (data.Response == 'True') {\n jQuery('.alert').removeClass('errorI').slideDown('fast').text('اطلاعات اولیه دریافت شد. با زدن دکمه انتشار تصاویر و اطلاعات بازیگران و متا ها وارد خواهند شد.')\n jQuery('#acf-field_616217677b6ee').val(data.Year);\n jQuery('#acf-field_616217e57b6ef').val(data.imdbRating);\n jQuery('#acf-field_6162184aa8639').val(data.imdbVotes);\n // Title\n jQuery('#acf-field_62bf27ac92bee').val(data.Title);\n\n var poster = data.Poster;\n var posterBigSize = poster.replace('300', '600');\n jQuery('#acf-field_6162187ca863a').val(posterBigSize);\n jQuery('#acf-field_616218c9a863d').val(data.Actors);\n jQuery('#acf-field_616218e3a863f').val(data.Director);\n jQuery('#acf-field_616218d9a863e').val(data.Writer);\n jQuery('#acf-field_616218fba8640').val(data.Genre);\n jQuery('#acf-field_61621910a8641').val(data.Rated);\n jQuery('#acf-field_6164684400fd8').val(data.Country);\n jQuery('#acf-field_625ae9831cfb8').val(data.imdbID);\n jQuery('#acf-field_61698aed9b539').val(data.imdbID);\n var persianType = '';\n if (data.Type == 'series') {\n persianType = '";
- _e("سریال ", "kelaketfilm");
- echo " ';\n } else if (data.Type == 'movie') {\n persianType = '";
- _e("فیلم", "kelaketfilm");
- echo " ';\n }\n jQuery('#title-prompt-text').html('');\n if (jQuery('#title').val().length < 1) {\n jQuery('#title').val('";
- _e("دانلود", "kelaketfilm");
- echo " ' + persianType + data.Title);\n }\n\n //translate plot\n jQuery.ajax({\n url: ajaxurl,\n data: {\n action: 'kelaket_translate',\n text: data.Plot\n },\n type: 'POST',\n beforeSend: function(xhr) {\n jQuery('#acf-field_616486c198139').val('درحال ترجمه...');\n },\n success: function(response) {\n jQuery('#acf-field_616486c198139').val(response.data.text);\n }\n });\n\n //translate awards\n jQuery.ajax({\n url: ajaxurl,\n data: {\n action: 'kelaket_translate',\n text: data.Awards\n },\n type: 'POST',\n beforeSend: function(xhr) {\n jQuery('#acf-field_61621885a863b').val('درحال ترجمه...');\n },\n success: function(response) {\n jQuery('#acf-field_61621885a863b').val(response.data.text);\n }\n });\n\n //translate runtime\n jQuery.ajax({\n url: ajaxurl,\n data: {\n action: 'kelaket_translate',\n text: data.Runtime\n },\n type: 'POST',\n beforeSend: function(xhr) {\n jQuery('#acf-field_616468b500fd9').val('درحال ترجمه...');\n },\n success: function(response) {\n jQuery('#acf-field_616468b500fd9').val(response.data.text);\n }\n });\n\n //translate lang\n jQuery.ajax({\n url: ajaxurl,\n data: {\n action: 'kelaket_translate',\n text: data.Language\n },\n type: 'POST',\n beforeSend: function(xhr) {\n jQuery('#acf-field_616218b2a863c').val('درحال ترجمه...');\n },\n success: function(response) {\n jQuery('#acf-field_616218b2a863c').val(response.data.text);\n }\n });\n\n ";
- if (theme_options("poster_bridge")) {
- echo " // get poster from bridge server\n jQuery.ajax({\n 'url': '";
- echo theme_options("bridge_address");
- echo "/imdb_importer.php',\n data: {\n 'i': data.imdbID,\n 'api_key': '";
- echo $OMDB_TOKEN;
- echo "',\n },\n beforeSend: function(xhr) {\n\n },\n success: function(res) {\n console.log('data recived from bridge', res);\n if (res.url) {\n //upload poster\n jQuery.ajax({\n 'url': ajaxurl,\n data: {\n 'action': 'upload_poster',\n 'post_id': ";
- echo $post->ID;
- echo ",\n 'image_url': res.url\n },\n beforeSend: function(xhr) {\n jQuery('#postimagediv .inside').prepend('<div class=\"loading\">درحال بارگذاری تصویر...</div>');\n },\n success: function(data) {\n console.log('upload', data);\n jQuery('.loading').remove();\n var image = \"";
- echo bloginfo("url");
- echo "/wp-content/uploads/\" + data.image.file;\n jQuery('#postimagediv .inside').prepend(\"<img src=\" + image + \" />\");\n jQuery('#_thumbnail_id').val(data.attach_id);\n }\n });\n }\n }\n });\n ";
- }
- echo "\n ";
- if (!theme_options("poster_bridge")) {
- echo " //upload poster\n jQuery.ajax({\n 'url': ajaxurl,\n data: {\n 'action': 'upload_poster',\n 'post_id': ";
- echo $post->ID;
- echo ",\n 'image_url': posterBigSize\n },\n beforeSend: function(xhr) {\n jQuery('#postimagediv .inside').prepend('<div class=\"loading\">درحال بارگذاری تصویر...</div>');\n },\n success: function(data) {\n console.log('upload', data);\n jQuery('.loading').remove();\n var image = \"";
- echo bloginfo("url");
- echo "/wp-content/uploads/\" + data.image.file;\n jQuery('#postimagediv .inside').prepend(\"<img src=\" + image + \" />\");\n jQuery('#_thumbnail_id').val(data.attach_id);\n }\n });\n ";
- }
- echo " } else {\n jQuery('.alert').addClass('errorI').slideDown('fast').text(data.Error)\n }\n },\n error: function(e) {\n jQuery('#imdb_import').text('دریافت اطلاعات');\n jQuery('#imdb_import').attr('disabled', false);\n jQuery('.alert').addClass('errorI').slideDown('fast').text(e.responseText);\n console.log(e);\n }\n });\n }\n })\n }\n );\n </script>\n ";
- }
- function checkPostExits()
- {
- if (isset($_REQUEST["id"])) {
- $pkg = $_REQUEST["id"];
- $posts = get_posts(["numberposts" => -1, "post_type" => "post", "meta_key" => "imdb", "meta_value" => $pkg]);
- if (empty($posts)) {
- wp_send_json(["message" => "فیلم در سایت وجود ندارد", "app_exists" => false]);
- } else {
- wp_send_json(["message" => "فیلمی که قصد انتشار دارید در سایت وجود دارد با تایید شما اطلاعات وارد خواهند شد.", "app_exists" => true]);
- }
- } else {
- wp_send_json(["message" => "ایدی imdb وارد نشده است.", "error" => true]);
- }
- exit;
- }
- function get_movie_data($post_id)
- {
- if (get_post_type() == "post" && get_post_status() != "trash" && get_field("imdb-id", $post_id)) {
- $api_is_set = get_option("my_framework")["omdb-token"];
- if (!empty($api_is_set)) {
- $api_key = $api_is_set;
- } else {
- $api_key = "3ac315c9";
- }
- if (theme_options("tmdb-api-token")) {
- $api_key2 = theme_options("tmdb-api-token");
- } else {
- $api_key2 = "747fa91ee4a2ddf4935d8184306cb5d1";
- }
- $api_key3 = get_option("my_framework")["imdb-api-token"];
- $imdb_id = get_field("imdb-id", $post_id);
- $save_actors = get_field("dontSave_actors", $post_id);
- $save_images = get_field("save_images", $post_id);
- $request = wp_remote_get("https://www.omdbapi.com/?apikey=" . $api_key . "&i=" . $imdb_id);
- if (is_wp_error($request)) {
- kelaket_log("importer_omdb", $request->get_error_message());
- return false;
- }
- $body = wp_remote_retrieve_body($request);
- $data = json_decode($body);
- $year = $data->Year;
- $imdb_rating = $data->imdbRating;
- $actors = $data->Actors;
- $director = $data->Director;
- $rated = $data->Rated;
- $genre = $data->Genre;
- $country = $data->Country;
- $type = $data->Type;
- $rotten_tomatoes = $data->Ratings[1]->Value;
- $metacritic = $data->Ratings[2]->Value;
- if ($rotten_tomatoes) {
- $rotten_tomatoes = rtrim($rotten_tomatoes, "%");
- }
- if ($metacritic) {
- $metacritic = substr($metacritic, 0, -4);
- }
- update_field("imdb-id", "", $post_id);
- update_field("rotten", $rotten_tomatoes, $post_id);
- update_field("metacritic", $metacritic, $post_id);
- if (theme_options("imdb_id_as_post_title")) {
- wp_update_post(["ID" => $post_id, "post_name" => $imdb_id]);
- }
- $actors_array = explode(",", $actors);
- $director_array = explode(",", $director);
- $year_array = explode("–", $year);
- $country_array = explode(",", $country);
- $genre_array = explode(",", $genre);
- if ($director !== "N/A") {
- wp_set_object_terms($post_id, $director_array, "director");
- }
- wp_set_object_terms($post_id, $year_array, "yearr");
- wp_set_object_terms($post_id, $genre_array, "genre");
- wp_set_object_terms($post_id, $rated, "rate");
- wp_set_object_terms($post_id, $country_array, "country");
- wp_set_object_terms($post_id, $type, "type_of_post");
- if ($imdb_rating) {
- if ($imdb_rating <= 2) {
- wp_set_object_terms($post_id, "0_2", "score");
- } else if ($imdb_rating <= 5 && 2 < $imdb_rating) {
- wp_set_object_terms($post_id, "2_5", "score");
- } else if ($imdb_rating <= 7 && 5 < $imdb_rating) {
- wp_set_object_terms($post_id, "5_7", "score");
- } else if (7 < $imdb_rating) {
- wp_set_object_terms($post_id, "7_10", "score");
- }
- }
- if (theme_options("selected_actor_api") == "tmdb" || theme_options("get_cover_tmdb")) {
- $findTMDBID = wp_remote_get("https://api.themoviedb.org/3/find/" . $imdb_id . "?api_key=" . $api_key2 . "&external_source=imdb_id");
- if (is_wp_error($findTMDBID)) {
- kelaket_log("importer_tmdb_find", $findTMDBID->get_error_message());
- }
- $TMDB_ID_BODY = json_decode(wp_remote_retrieve_body($findTMDBID));
- if ($type == "movie") {
- $TMDB_ID = $TMDB_ID_BODY->movie_results[0]->id;
- } else {
- $TMDB_ID = $TMDB_ID_BODY->tv_results[0]->id;
- }
- }
- if (!$save_actors) {
- if (get_option("my_framework")["selected_actor_api"] == "tmdb") {
- if ($type == "movie") {
- $request2 = wp_remote_get("https://api.themoviedb.org/3/movie/" . $imdb_id . "/credits?api_key=" . $api_key2 . "");
- if (is_wp_error($request2)) {
- kelaket_log("importer_tmdb_actors", $request2->get_error_message());
- }
- } else if ($TMDB_ID) {
- $request2 = wp_remote_get("https://api.themoviedb.org/3/tv/" . $TMDB_ID . "/credits?api_key=" . $api_key2 . "");
- if (is_wp_error($request2)) {
- kelaket_log("importer_tmdb_actors", $request2->get_error_message());
- }
- }
- $body2 = wp_remote_retrieve_body($request2);
- $data2 = json_decode($body2);
- $image_prefix = "https://www.themoviedb.org/t/p/w276_and_h350_face";
- $casts = $data2->cast;
- $fullActors = [];
- $temp = "";
- foreach ($casts as $cast) {
- array_push($fullActors, $cast->name);
- if ($save_images) {
- if (term_exists($cast->name, "actor") == NULL) {
- wp_insert_term($cast->name, "actor");
- }
- $term = get_term_by("slug", $cast->name, "actor");
- if ($cast->profile_path && !get_field("actor_image_link", $term)) {
- $temp = uploadimage($image_prefix . "" . $cast->profile_path . "", $post_id, false);
- update_field("actor_image_link", $temp, $term);
- }
- } else {
- if (term_exists($cast->name, "actor") == NULL) {
- wp_insert_term($cast->name, "actor");
- }
- $term = get_term_by("slug", $cast->name, "actor");
- if ($cast->profile_path) {
- update_field("actor_image_link", $image_prefix . "" . $cast->profile_path . "", $term);
- }
- }
- }
- wp_set_object_terms($post_id, $fullActors, "actor");
- } else if (get_option("my_framework")["selected_actor_api"] == "kelaketfilm") {
- $actors = new imdbScrapper("https://www.imdb.com/title/" . $imdb_id);
- $actors = $actors->getActors();
- if (get_option("my_framework")["actors_bridge"]) {
- $args = ["body" => ["sign" => "kelaketfilm", "actors" => json_encode($actors)]];
- $request = wp_remote_post(theme_options("bridge_address") . "/imdb_actors.php", $args);
- $actors = json_decode(wp_remote_retrieve_body($request), true);
- }
- $fullActors = [];
- $temp = "";
- foreach ($actors as $cast) {
- array_push($fullActors, $cast["name"]);
- if ($save_images) {
- if (term_exists($cast["name"], "actor") == NULL) {
- wp_insert_term($cast["name"], "actor");
- }
- $term = get_term_by("slug", $cast["name"], "actor");
- if (!get_field("actor_image_link", $term)) {
- if (empty($cast["image"])) {
- } else {
- $temp = uploadimage($cast["image"], $post_id, false);
- update_field("actor_image_link", $temp, $term);
- }
- }
- } else {
- if (term_exists($cast["name"], "actor") == NULL) {
- wp_insert_term($cast["name"], "actor");
- }
- $term = get_term_by("slug", $cast["name"], "actor");
- update_field("actor_image_link", $cast["image"], $term);
- }
- }
- wp_set_object_terms($post_id, $fullActors, "actor");
- }
- }
- if (theme_options("get_cover_tmdb") && $TMDB_ID) {
- $cover_prefix = "https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/";
- if ($type == "movie") {
- $request_cover = wp_remote_get("https://api.themoviedb.org/3/movie/" . $TMDB_ID . "?api_key=" . $api_key2 . "");
- $body_cover = json_decode(wp_remote_retrieve_body($request_cover));
- if (is_wp_error($request_cover)) {
- kelaket_log("importer_tmdb_big_cover", $request_cover->get_error_message());
- } else {
- $cover_link = $cover_prefix . "" . $body_cover->backdrop_path;
- $temp = uploadimage($cover_link, $post_id, true);
- update_field("slider_image2", $temp, $post_id);
- }
- } else {
- $request_cover = wp_remote_get("https://api.themoviedb.org/3/tv/" . $TMDB_ID . "?api_key=" . $api_key2 . "");
- $body_cover = json_decode(wp_remote_retrieve_body($request_cover));
- if (is_wp_error($request_cover)) {
- kelaket_log("importer_tmdb_big_cover", $request_cover->get_error_message());
- } else {
- $cover_link = $cover_prefix . "" . $body_cover->backdrop_path;
- $temp = uploadimage($cover_link, $post_id, true);
- update_field("slider_image2", $temp, $post_id);
- }
- }
- }
- }
- }
- function upload_film_poster()
- {
- $post_id = $_REQUEST["post_id"];
- $image_url = $_REQUEST["image_url"];
- if ($image_url && $post_id) {
- $upload_dir = wp_upload_dir();
- $image_data = file_get_contents_curl($image_url);
- $filename = basename($image_url);
- if (wp_mkdir_p($upload_dir["path"])) {
- $file = $upload_dir["path"] . "/" . $filename;
- } else {
- $file = $upload_dir["basedir"] . "/" . $filename;
- }
- file_put_contents($file, $image_data);
- $wp_filetype = wp_check_filetype($filename, NULL);
- $attachment = ["post_mime_type" => $wp_filetype["type"], "post_title" => sanitize_file_name($filename), "post_content" => "", "post_status" => "inherit"];
- $attach_id = wp_insert_attachment($attachment, $file, $post_id);
- require_once ABSPATH . "wp-admin/includes/image.php";
- $attach_data = wp_generate_attachment_metadata($attach_id, $file);
- $res1 = wp_update_attachment_metadata($attach_id, $attach_data);
- $res2 = set_post_thumbnail($post_id, $attach_id);
- wp_send_json(["image" => $attach_data, "attach_id" => $attach_id]);
- exit;
- }
- }
- function kelaket_is_valid_email($email)
- {
- return preg_match("/^(([^<>()\\[\\]\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))\$/", $email);
- }
- function kelaket_is_valid_mobile($mobile)
- {
- return preg_match("/^(?:(?:(?:\\+?|00)(98))|(0))?((?:90|91|92|93|99)[0-9]{8})\$/", $mobile);
- }
- function ajax_login()
- {
- if (!wp_verify_nonce($_POST["nonce"], "kelaket_auth")) {
- echo json_encode(["register" => false, "error" => __("خطای امنیتی! صفحه را رفرش کرده و مجدد تلاش کنید.", "kelaketfilm")]);
- exit;
- }
- if (theme_options("active_captcha") && theme_options("captcha_service") == "hcaptcha") {
- $captcha_token = $_POST["h-captcha-response"];
- if (empty($captcha_token)) {
- echo json_encode(["loggedin" => false, "errors" => ["captcha" => [__("<strong>خطا: </strong> فیلد انسان هستم را کامل کنید.", "kelaketfilm")]]]);
- wp_die();
- }
- $params = ["body" => ["secret" => theme_options("captcha_secret"), "response" => $captcha_token]];
- $post_request = wp_remote_post("https://hcaptcha.com/siteverify", $params);
- $response = json_decode(wp_remote_retrieve_body($post_request));
- if (!$response->success) {
- echo json_encode(["loggedin" => false, "errors" => ["captcha_humain_fail" => [__("<strong>خطا: </strong> مشکلی در تایید انسان بودن شما رخ داده است مجدد تلاش کنید.", "kelaketfilm")]]]);
- wp_die();
- }
- }
- if (theme_options("active_captcha") && theme_options("captcha_service") == "recaptcha") {
- $captcha_token = $_POST["g-captcha-response"];
- if (empty($captcha_token)) {
- echo json_encode(["loggedin" => false, "errors" => ["captcha" => [__("<strong>خطا: </strong> فیلد انسان هستم را کامل کنید.", "kelaketfilm")]]]);
- wp_die();
- }
- $params = ["body" => ["secret" => theme_options("captcha_secret"), "response" => $captcha_token]];
- $post_request = wp_remote_post("https://www.google.com/recaptcha/api/siteverify", $params);
- $response = json_decode(wp_remote_retrieve_body($post_request));
- if (!$response->success) {
- echo json_encode(["loggedin" => false, "errors" => ["captcha_humain_fail" => [__("<strong>خطا: </strong> مشکلی در تایید انسان بودن شما رخ داده است مجدد تلاش کنید.", "kelaketfilm")]]]);
- wp_die();
- }
- }
- $userInfo = [];
- if (is_numeric($_POST["username"]) && kelaket_is_valid_mobile($_POST["username"])) {
- $user = get_users(["meta_key" => "phone", "meta_value" => $_POST["username"], "meta_compare" => "="]);
- if ($user) {
- $userInfo["user_login"] = sanitize_user(convertPersianDigitsToEnglish($user[0]->user_login));
- } else {
- echo json_encode(["loggedin" => false, "errors" => ["account_not_found" => [__("حساب کاربری با شماره وارد شده یافت نشد از طریق ایمیل یا شناسه کاربری تلاش کنید.", "kelaketfilm")]]]);
- wp_die();
- }
- } else {
- $userInfo["user_login"] = sanitize_user(convertPersianDigitsToEnglish($_POST["username"]));
- }
- $userInfo["user_password"] = sanitize_text_field($_POST["password"]);
- $userInfo["remember"] = true;
- $userSignIn = wp_signon($userInfo, true);
- if (is_wp_error($userSignIn)) {
- echo json_encode(["loggedin" => false, "errors" => $userSignIn->errors]);
- } else {
- echo json_encode(["loggedin" => true]);
- }
- wp_die();
- }
- function ajax_register()
- {
- global $wpdb;
- $tablename = esc_sql($wpdb->prefix . "otptokens");
- if (!wp_verify_nonce($_POST["nonce"], "kelaket_auth")) {
- echo json_encode(["register" => false, "error" => __("خطای امنیتی! صفحه را رفرش کرده و مجدد تلاش کنید.", "kelaketfilm")]);
- exit;
- }
- if (theme_options("active_captcha") && theme_options("captcha_service") == "hcaptcha") {
- $captcha_token = $_POST["h-captcha-response"];
- if (empty($captcha_token)) {
- echo json_encode(["loggedin" => false, "errors" => ["captcha" => [__("<strong>خطا: </strong> فیلد انسان هستم را کامل کنید.", "kelaketfilm")]]]);
- wp_die();
- }
- $params = ["body" => ["secret" => theme_options("captcha_secret"), "response" => $captcha_token]];
- $post_request = wp_remote_post("https://hcaptcha.com/siteverify", $params);
- $response = json_decode(wp_remote_retrieve_body($post_request));
- if (!$response->success) {
- echo json_encode(["loggedin" => false, "errors" => ["captcha_humain_fail" => [__("<strong>خطا: </strong> مشکلی در تایید انسان بودن شما رخ داده است مجدد تلاش کنید.", "kelaketfilm")]]]);
- wp_die();
- }
- }
- if (theme_options("active_captcha") && theme_options("captcha_service") == "recaptcha") {
- $captcha_token = $_POST["g-captcha-response"];
- if (empty($captcha_token)) {
- echo json_encode(["register" => false, "errors" => ["captcha" => [__("<strong>خطا: </strong> فیلد انسان هستم را کامل کنید.", "kelaketfilm")]]]);
- wp_die();
- }
- $params = ["body" => ["secret" => theme_options("captcha_secret"), "response" => $captcha_token]];
- $post_request = wp_remote_post("https://www.google.com/recaptcha/api/siteverify", $params);
- $response = json_decode(wp_remote_retrieve_body($post_request));
- if (!$response->success) {
- echo json_encode(["register" => false, "errors" => ["captcha_humain_fail" => [__("<strong>خطا: </strong> مشکلی در تایید انسان بودن شما رخ داده است مجدد تلاش کنید.", "kelaketfilm")]]]);
- wp_die();
- }
- }
- if ($_POST["username"] == "" || $_POST["password"] == "" || $_POST["password2"] == "" || $_POST["email"] == "") {
- echo json_encode(["register" => false, "error" => __("وارد کردن تمامی فیلد ها الزامی میباشد.", "kelaketfilm")]);
- } else if (!is_email(convertPersianDigitsToEnglish($_POST["email"]))) {
- echo json_encode(["register" => false, "error" => __("ایمیل وارد شده صحیح نمیباشد.", "kelaketfilm")]);
- } else if (email_exists(convertPersianDigitsToEnglish($_POST["email"]))) {
- echo json_encode(["register" => false, "error" => __("ایمیل وارد شده از قبل در سایت موجود میباشد.", "kelaketfilm")]);
- } else if (theme_options("phone_number_required") && !kelaket_is_valid_mobile($_POST["phone"])) {
- echo json_encode(["register" => false, "error" => __("شماره موبایل وارد شده صحیح نمی باشد.", "kelaketfilm")]);
- } else if ($_POST["password"] != $_POST["password2"]) {
- echo json_encode(["register" => false, "error" => __("رمز عبور و تایید یکسان نمیباشند.", "kelaketfilm")]);
- } else if (!preg_match("/^[A-Za-z0-9\\s.,!?'\\\"-_]+\$/", $_POST["username"])) {
- echo json_encode(["register" => false, "error" => __("نام کاربری باید به انگلیسی وارد شود.", "kelaketfilm")]);
- } else if (!preg_match("/^(?=.*[A-Z]).{8,}\$/", $_POST["password"])) {
- echo json_encode(["register" => false, "error" => __("لطفا رمز عبور قوی تری انتخاب کنید. شرایط: حداقل ۸ کاراکتر دارای حداقل یک حروف بزرگ ", "kelaketfilm")]);
- } else {
- $userInfo = [];
- $userInfo["user_login"] = sanitize_user(convertPersianDigitsToEnglish($_POST["username"]));
- $userInfo["user_pass"] = sanitize_text_field(convertPersianDigitsToEnglish($_POST["password"]));
- $userInfo["user_email"] = sanitize_email(convertPersianDigitsToEnglish($_POST["email"]));
- $mobileNumber = sanitize_text_field($_POST["phone"]);
- $userInfo["display_name"] = $_POST["username"];
- if (isset($mobileNumber) && !empty($mobileNumber)) {
- list($users) = get_users(["meta_key" => "phone", "meta_value" => $mobileNumber, "number" => 1, "count_total" => false]);
- if ($users) {
- echo json_encode(["register" => false, "error" => __("شماره موبایل وارد شده از قبل موجود میباشد.", "kelaketfilm")]);
- exit;
- }
- }
- if (username_exists($userInfo["user_login"])) {
- echo json_encode(["register" => false, "error" => __("نام کاربری شما از قبل در سیستم موجود می باشد.", "kelaketfilm")]);
- exit;
- }
- if (theme_options("active_2fa_email")) {
- $email_otp = sanitize_text_field($_POST["otp"]);
- if (isset($email_otp) && !empty($email_otp)) {
- if (empty($email_otp)) {
- echo json_encode(["register" => false, "otp_sent" => true, "error" => __("کد تایید ارسال شده به ایمیل را وارد کنید.", "kelaketfilm")]);
- wp_die();
- }
- $user_email = sanitize_email($userInfo["user_email"]);
- $query = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $tablename . " WHERE mobile = %s AND is_expire = %d ORDER BY ID DESC LIMIT 1", $user_email, 0));
- if ($query) {
- $savedToken = $query[0]->token;
- $id = $query[0]->id;
- }
- if ($savedToken == $email_otp) {
- $wpdb->query($wpdb->prepare("UPDATE " . $tablename . " SET is_expire= 1 WHERE id=" . $id));
- $user_register = wp_insert_user($userInfo);
- if (is_wp_error($user_register)) {
- echo json_encode(["register" => false, "errors" => $user_register->errors]);
- } else {
- $RegistredUser = get_user_by("id", $user_register);
- $RegistredUser->set_role("subscriber");
- update_user_meta($RegistredUser->id, "phone", $mobileNumber);
- $userSignIn = wp_signon(["user_login" => $userInfo["user_login"], "user_password" => $userInfo["user_pass"], "remember" => true], true);
- if (is_wp_error($userSignIn)) {
- echo json_encode(["register" => false, "info" => $userInfo, "errors" => $userSignIn->errors]);
- } else {
- echo json_encode(["register" => true]);
- }
- }
- } else {
- echo json_encode(["register" => false, "otp_sent" => true, "error" => __("کد وارد شده صحیح نمی باشد.", "kelaketfilm")]);
- wp_die();
- }
- wp_die();
- } else {
- $otpToken = rand(100000, 999999);
- $data = ["token" => $otpToken, "mobile" => $userInfo["user_email"], "is_expire" => 0, "created_at" => wp_date("Y-m-d h:i:s", time())];
- $wpdb->insert($tablename, $data);
- kelaket_email($userInfo["user_email"], __("کد تایید عضویت شما", "kelaketfilm"), $otpToken);
- echo json_encode(["register" => false, "otp_sent" => true]);
- wp_die();
- }
- }
- $user_register = wp_insert_user($userInfo);
- if (is_wp_error($user_register)) {
- echo json_encode(["register" => false, "errors" => $user_register->errors]);
- } else {
- $RegistredUser = get_user_by("id", $user_register);
- $RegistredUser->set_role("subscriber");
- update_user_meta($RegistredUser->id, "phone", $mobileNumber);
- $userSignIn = wp_signon(["user_login" => $userInfo["user_login"], "user_password" => $userInfo["user_pass"], "remember" => true], true);
- if (is_wp_error($userSignIn)) {
- echo json_encode(["register" => false, "info" => $userInfo, "errors" => $userSignIn->errors]);
- } else {
- echo json_encode(["register" => true]);
- }
- }
- }
- wp_die();
- }
- function kelaket_strposa($haystack, array $needles = 0, int $offset): int
- {
- foreach ($needles as $needle) {
- if (strpos($haystack, $needle, $offset) !== false) {
- return true;
- }
- }
- return false;
- }
- function get_trends($limit = 10)
- {
- global $wpdb;
- $table_name = $wpdb->prefix . "relevanssi_log";
- $query = $wpdb->get_results("SELECT *, count(query) as count FROM " . $table_name . " GROUP BY query ORDER BY count(query) DESC LIMIT " . $limit);
- $data = [];
- if (theme_options("trends_exculed_words")) {
- $exculed_words = [];
- foreach (theme_options("trends_exculed_words") as $words) {
- array_push($exculed_words, $words["trends_exculed_words_context"]);
- }
- foreach ($query as $item) {
- if (!kelaket_strposa($item->query, $exculed_words)) {
- $data[] = ["title" => $item->query, "count" => $item->count];
- }
- }
- } else {
- foreach ($query as $item) {
- $data[] = ["title" => $item->query, "count" => $item->count];
- }
- }
- return $data;
- }
- function data_fetch2()
- {
- check_ajax_referer("sexy_ajax_call", "nonce");
- $the_query = new WP_Query(["relevanssi" => get_option("my_framework")["use_relevanssi"] ? true : false, "posts_per_page" => 7, "s" => esc_attr($_POST["keyword"]), "post_type" => "post", "post_status" => "publish"]);
- if ($the_query->have_posts()) {
- while ($the_query->have_posts()) {
- $the_query->the_post();
- echo " <div class=\"search_row\">\n <a class=\"d-flex\" href=\"";
- the_permalink();
- echo "\">\n <div class=\"search_image\">\n ";
- the_post_thumbnail("post-thumb");
- echo " </div>\n <div class=\"search_row_info\">\n <div class=\"title\">\n ";
- the_title();
- echo " </div>\n <div class=\"year\">\n ";
- if (get_the_term_list(get_the_ID(), "year", "", "، ", "")) {
- echo " ";
- echo strip_tags(get_the_term_list(get_the_ID(), "yearr", "", "، ", ""));
- echo " |\n ";
- }
- echo " ";
- the_field("time");
- echo " </div>\n <div class=\"genres\">\n ";
- if (get_the_term_list(get_the_ID(), "genre", "", "، ", "")) {
- echo " ";
- echo strip_tags(get_the_term_list(get_the_ID(), "genre", "", "، ", ""));
- echo " ";
- }
- echo " </div>\n <div class=\"plot\">\n <p>";
- the_field("story");
- echo "</p>\n </div>\n <div class=\"watch\">\n <i class=\"fa fa-circle-play\"></i>\n ";
- _e("دانلود و تماشا", "kelaketfilm");
- echo " </div>\n\n </div>\n </a>\n </div>\n ";
- }
- echo " <div class=\"center\"><a class=\"show_more\" href=\"";
- bloginfo("url");
- echo "/?s=";
- echo $_POST["keyword"];
- echo "\">مشاهده همه نتایج ";
- echo $_POST["keyword"];
- echo "</a></div>\n ";
- wp_reset_postdata();
- } else {
- echo "<h6>" . __("چیزی پیدا نشد لطفا دوباره تلاش کنید!", "kelaketfilm") . "</h6>";
- }
- exit;
- }
- function data_fetch_profile()
- {
- $the_query = new WP_Query(["relevanssi" => get_option("my_framework")["use_relevanssi"] ? true : false, "posts_per_page" => 30, "s" => esc_attr($_POST["keyword"]), "post_type" => "post"]);
- if ($the_query->have_posts()) {
- echo " <ul id=\"filmItemSelect\">\n ";
- while ($the_query->have_posts()) {
- $the_query->the_post();
- $image = get_the_post_thumbnail_url(get_the_ID(), "post_retina");
- echo " <li class=\"d-flex mb-2\">\n <a data-id=\"";
- echo get_the_ID();
- echo "\" data-link=\"";
- echo get_the_permalink();
- echo "\" data-name=\"";
- echo get_the_title();
- echo "\" data-image=\"";
- echo $image;
- echo "\" href=\"#\" class=\"link_abs\"></a>\n <figure class=\"ms-2\">\n <img width=\"60\" height=\"70\" src=\"";
- echo $image;
- echo "\">\n </figure>\n <figcaption>\n <h2>";
- the_title();
- echo "</h2>\n <p>";
- echo limited_excerpt(get_field("story"), 170);
- echo "</p>\n <div class=\"film_s_imdb\">\n <i class=\"fa fa-star\"></i> ";
- the_field("imdbRating");
- echo " </div>\n </figcaption>\n </li>\n ";
- }
- echo " </ul>\n ";
- wp_reset_postdata();
- } else {
- echo "<h6>" . __("چیزی پیدا نشد لطفا دوباره تلاش کنید!", "kelaketfilm") . "</h6>";
- }
- exit;
- }
- function checkIndexExists($array, $index)
- {
- if (is_array($array) && array_key_exists($index, $array)) {
- return true;
- }
- return false;
- }
- function wpdocs_flush_rules()
- {
- $rules = get_option("rewrite_rules");
- if (!isset($rules["(lists)/(\\d*)\$"])) {
- global $wp_rewrite;
- $wp_rewrite->flush_rules();
- }
- if (!isset($rules["(lists)/(\\d*)/(page)/(\\d*)\$"])) {
- global $wp_rewrite;
- $wp_rewrite->flush_rules();
- }
- if (!isset($rules["(profile)/([^/]*)/?"])) {
- global $wp_rewrite;
- $wp_rewrite->flush_rules();
- }
- }
- function wpdocs_insert_rewrite_rules($rules)
- {
- $newrules = [];
- $newrules["(lists)/(\\d*)\$"] = "index.php?pagename=\$matches[1]&id=\$matches[2]";
- return $newrules + $rules;
- }
- function wpdocs_insert_query_vars($vars)
- {
- array_push($vars, "id");
- return $vars;
- }
- function wpdocs_insert_rewrite_rules2($rules)
- {
- $newrules = [];
- $newrules["(lists)/(\\d*)/(page)/(\\d*)\$"] = "index.php?pagename=\$matches[1]&id=\$matches[2]&paged=\$mateched[3]";
- return $newrules + $rules;
- }
- function wpd_query_vars($query_vars)
- {
- $query_vars[] = "username";
- return $query_vars;
- }
- function wpd_user_rewrite_rule()
- {
- add_rewrite_rule("(profile)/([^/]*)/?", "index.php?pagename=\$matches[1]&username=\$matches[2]", "top");
- }
- function load_user_visited_films($history, $limit = 10)
- {
- if (isset($history)) {
- $films = $history;
- } else {
- $films = [];
- }
- if (!empty($films)) {
- $query = new WP_Query(["post_type" => "post", "post__in" => $films, "posts_per_page" => $limit, "no_found_rows" => true]);
- if ($query->have_posts()) {
- while ($query->have_posts()) {
- $query->the_post();
- update_post_thumbnail_cache($query);
- echo " <div class=\"update_block\">\n <a href=\"";
- the_permalink();
- echo "\">\n ";
- the_post_thumbnail("post-thumb", ["alt" => esc_html(get_the_title()), "title" => esc_html(get_the_title())]);
- echo " <div class=\"update_block__text\">\n <div class=\"txt_flow\">";
- the_title();
- echo "</div>\n <span>\n ";
- echo strip_tags(get_the_term_list(get_the_ID(), "genre", "", " - ", ""));
- echo " </span>\n </div>\n </a>\n </div>\n ";
- }
- echo " ";
- wp_reset_postdata();
- echo " ";
- }
- } else {
- echo "<span class=\"widget-bg not_found\">" . __("تاریخچه شما خالی میباشد.", "kelaketfilm") . "</span>";
- }
- echo " ";
- }
- function modified($query)
- {
- if ($query->is_main_query() && ($query->is_home() || $query->is_search() || $query->is_archive())) {
- $query->set("orderby", "modified");
- $query->set("order", "desc");
- }
- }
- function register_user_lists_menu()
- {
- add_menu_page(__("لیست های کاربران", "kelaketfilm"), __("لیست های کاربران", "kelaketfilm"), "manage_options", "user_lists", "admin_user_lists", "dashicons-editor-ul", 31);
- }
- function admin_user_lists()
- {
- if (!current_user_can("manage_options")) {
- wp_die(__("شما به این صفحه دسترسی ندارید!", "kelaketfilm"));
- }
- echo " <div class=\"wrap\">\n <h1>مدیریت لیست های کاربران</h1>\n ";
- require_once get_template_directory() . "/inc/admin/lists_table.php";
- $user_lists_table = new Lists_Table();
- $user_lists_table->prepare_items();
- $user_lists_table->display();
- if (isset($_GET["action"]) && !empty($_GET["list_id"])) {
- global $wpdb;
- $tablename = $wpdb->prefix . "kelaket_lists";
- $res = $wpdb->delete($tablename, ["id" => (int) $_GET["list_id"]]);
- if ($res) {
- wp_redirect($_SERVER["HTTP_REFERER"]);
- }
- }
- echo " </div>\n ";
- }
- function add_phone_to_rcp()
- {
- $phone_number = get_user_meta(get_current_user_id(), "phone", true);
- echo " <p>\n <label for=\"rcp_mobile\">";
- _e("شماره موبایل", "kelaketfilm");
- echo "</label>\n <input name=\"rcp_mobile\" class=\"rcp-input\" id=\"rcp_mobile\" type=\"text\" value=\"";
- echo esc_attr($phone_number);
- echo "\" />\n </p>\n ";
- }
- function save_phone_to_rcp($user_id)
- {
- if (!empty($_POST["rcp_mobile"])) {
- if (preg_match("/^09[0-9]{9}\$/", $_POST["rcp_mobile"])) {
- list($users) = get_users(["meta_key" => "phone", "meta_value" => $_POST["rcp_mobile"], "number" => 1, "count_total" => false]);
- if ($users && $users->id !== $user_id) {
- $redirect = add_query_arg("msg", "phone_exists", $_SERVER["HTTP_REFERER"]);
- wp_redirect($redirect);
- exit;
- }
- update_user_meta($user_id, "phone", sanitize_text_field($_POST["rcp_mobile"]));
- } else {
- $redirect = add_query_arg("msg", "wrong_number", $_SERVER["HTTP_REFERER"]);
- wp_redirect($redirect);
- exit;
- }
- }
- }
- function ajax_resetpass()
- {
- $email = sanitize_user($_POST["email"]);
- if (isset($email) && !empty($email)) {
- if (is_email($email)) {
- if (email_exists($email)) {
- $found_user = get_user_by("email", $email);
- $results = retrieve_password($found_user->user_login);
- if (true === $results) {
- echo json_encode(["sent" => true]);
- } else {
- echo json_encode(["sent" => false, "wp_error" => true, "msg" => $results->get_error_message()]);
- }
- } else {
- echo json_encode(["sent" => false, "error" => __("کاربری با این ایمیل وجود ندارد.", "kelaketfilm")]);
- }
- } else {
- echo json_encode(["sent" => false, "error" => __("لطفا ایمیل را بصورت صحیح وارد کنید.", "kelaketfilm")]);
- }
- } else {
- echo json_encode(["sent" => false, "error" => __("ایمیل خود را وارد کنید.", "kelaketfilm")]);
- }
- wp_die();
- }
- function get_anime_data($post_id)
- {
- if (get_post_type() == "post" && get_post_status() !== "trash" && get_field("mal_id", $post_id)) {
- $mal_key = get_option("my_framework")["mal-api-token"];
- $args = ["sslverify" => true, "user-agent" => "kelaketfilm", "headers" => ["Content-Type" => "application/json", "X-MAL-CLIENT-ID" => $mal_key]];
- $request = wp_safe_remote_get("https://api.myanimelist.net/v2/anime/" . get_field("mal_id", $post_id) . "?fields=id,title,main_picture,alternative_titles,start_date,end_date,synopsis,mean,rank,popularity,num_list_users,num_scoring_users,nsfw,created_at,updated_at,media_type,status,genres,my_list_status,num_episodes,start_season,broadcast,source,average_episode_duration,rating,pictures,background,related_anime,related_manga,recommendations,studios,statistics", $args);
- if (is_wp_error($request)) {
- return false;
- }
- $data = json_decode(wp_remote_retrieve_body($request));
- $myAnimeRating = $data->mean;
- $myAnimeVotes = $data->num_scoring_users;
- $myAnimeRuntime = $data->average_episode_duration / 60;
- $myAnimePoster = $data->main_picture->large;
- $myAnimeAirStatus = $data->status;
- $myAnimeGenres = $data->genres;
- $myAnimeRate = $data->rating;
- $myAnimeTitle = $data->title;
- $myAnimeStory = $data->synopsis;
- $myAnimeStartSeason = $data->start_season;
- if ($myAnimePoster) {
- generate_featured_image($myAnimePoster, $post_id);
- }
- update_field("mal_id", "", $post_id);
- update_field("malRating", $myAnimeRating, $post_id);
- update_field("story", kelaket_translate($myAnimeStory), $post_id);
- update_field("Language", "ژاپنی", $post_id);
- update_field("en_title", $myAnimeTitle, $post_id);
- update_field("malVotes", $myAnimeVotes, $post_id);
- update_field("time", round($myAnimeRuntime) . " دقیقه", $post_id);
- if ($myAnimeAirStatus == "finished_airing") {
- update_field("air_status", "اتمام پخش", $post_id);
- } else if ($myAnimeAirStatus == "currently_airing") {
- update_field("air_status", "درحال پخش", $post_id);
- }
- $genresArray = [];
- if ($myAnimeGenres) {
- foreach ($myAnimeGenres as $genre) {
- array_push($genresArray, $genre->name);
- }
- }
- if ($myAnimeStartSeason) {
- $year_start = $myAnimeStartSeason->year;
- wp_set_object_terms($post_id, (string) $year_start, "yearr");
- update_field("released", $year_start, $post_id);
- }
- wp_set_object_terms($post_id, $genresArray, "genre");
- wp_set_object_terms($post_id, $myAnimeRate, "rate");
- wp_set_object_terms($post_id, "japan", "country");
- }
- }
- function get_post_votes($post_id)
- {
- $dislikes = (int) get_post_meta($post_id, "kelaket_dislikes", true);
- $likes = (int) get_post_meta($post_id, "kelaket_likes", true);
- if ($likes != 0 || $dislikes != 0) {
- $percent = ceil($likes / ($dislikes + $likes) * 100);
- } else {
- $percent = 0;
- }
- return ["like" => $likes, "dislike" => $dislikes, "totalVotes" => $likes + $dislikes, "percent" => $percent];
- }
- function setVote()
- {
- check_ajax_referer("post_vote", "nonce");
- if (isset($_POST["user_id"]) && isset($_POST["post_id"]) && isset($_POST["user_action"])) {
- $user_id = (int) $_POST["user_id"];
- $post_id = (int) $_POST["post_id"];
- $user_action = sanitize_key($_POST["user_action"]);
- if (get_current_user_id() !== $user_id) {
- wp_send_json_error(["msg" => __("شما نمیتوانید برای کاربر دیگری نظر ثبت کنید.", "kelaketfilm")]);
- exit;
- }
- if ($user_id == 0 || empty($user_id)) {
- wp_send_json_error(["msg" => __("برای ثبت رای وارد حساب کاربری خود شوید", "kelaketfilm")]);
- }
- $dislikes = get_post_meta($post_id, "kelaket_dislikes", true);
- $likes = get_post_meta($post_id, "kelaket_likes", true);
- $vote_history = get_user_meta($user_id, "voted_posts", true);
- if (!is_array($vote_history) || empty($vote_history)) {
- $vote_history = [];
- }
- $vote_key = array_search($post_id, $vote_history);
- if ($vote_key !== false) {
- wp_send_json_error(["msg" => __("شما قبلا به این فیلم رای دادید!", "kelaketfilm")]);
- } else {
- $vote_history[] = $post_id;
- }
- update_user_meta($user_id, "voted_posts", $vote_history);
- if ($user_action == "like") {
- $likes = empty($likes) ? 0 : $likes;
- $new_likes = $likes + 1;
- update_post_meta($post_id, "kelaket_likes", $new_likes);
- wp_send_json_success(["likes" => (int) $new_likes, "dislikes" => (int) $dislikes, "totalVotes" => $new_likes + $dislikes, "percent" => get_post_votes($post_id)["percent"]]);
- } else if ($user_action == "dislike") {
- $dislikes = empty($dislikes) ? 0 : $dislikes;
- $new_dislikes = $dislikes + 1;
- update_post_meta($post_id, "kelaket_dislikes", $new_dislikes);
- wp_send_json_success(["likes" => (int) $likes, "dislikes" => (int) $new_dislikes, "totalVotes" => $new_dislikes + $likes, "percent" => get_post_votes($post_id)["percent"]]);
- } else {
- wp_send_json_error(["msg" => __("رای ثبت نشد!", "kelaketfilm")]);
- }
- }
- }
- function setVote2()
- {
- check_ajax_referer("post_vote", "nonce");
- if (isset($_POST["user_id"]) && isset($_POST["post_id"]) && isset($_POST["user_action"])) {
- $post_id = (int) $_POST["post_id"];
- $user_action = sanitize_key($_POST["user_action"]);
- $dislikes = get_post_meta($post_id, "kelaket_dislikes", true);
- $likes = get_post_meta($post_id, "kelaket_likes", true);
- $cookie_name = "like_" . $post_id;
- $cookie_value = "liked";
- setcookie($cookie_name, $cookie_value, time() + 2592000, "/");
- if ($user_action == "like" && !isset($_COOKIE["like_" . $post_id])) {
- $likes = empty($likes) ? 0 : (int) $likes;
- $new_likes = (int) $likes + 1;
- update_post_meta($post_id, "kelaket_likes", $new_likes);
- wp_send_json_success(["likes" => (int) $new_likes, "dislikes" => (int) $dislikes, "totalVotes" => (int) $new_likes + (int) $dislikes, "percent" => get_post_votes($post_id)["percent"]]);
- } else if ($user_action == "dislike" && !isset($_COOKIE["like_" . $post_id])) {
- $dislikes = empty($dislikes) ? 0 : $dislikes;
- $new_dislikes = (int) $dislikes + 1;
- update_post_meta($post_id, "kelaket_dislikes", $new_dislikes);
- wp_send_json_success(["likes" => (int) $likes, "dislikes" => (int) $new_dislikes, "totalVotes" => $new_dislikes + $likes, "percent" => get_post_votes($post_id)["percent"]]);
- } else {
- wp_send_json_error(["msg" => __("شما قبلا رای داده اید!", "kelaketfilm")]);
- }
- }
- }
- function showFaNameOfDay($day_code)
- {
- switch ($day_code) {
- case "Sat":
- return __("شنبه", "kelaketfilm");
- break;
- case "Sun":
- return __("یکشنبه", "kelaketfilm");
- break;
- case "Mon":
- return __("دوشنبه", "kelaketfilm");
- break;
- case "Tue":
- return __("سهشنبه", "kelaketfilm");
- break;
- case "Wed":
- return __("سهشنبه", "kelaketfilm");
- break;
- case "Thu":
- return __("پنجشنبه", "kelaketfilm");
- break;
- case "Fri":
- return __("جمعه", "kelaketfilm");
- break;
- }
- }
- function kelaket_user_access($user_id, $post_id, $is_free = false)
- {
- if (!theme_options("vip")) {
- return true;
- }
- if (theme_options("vip_system") == "rcp") {
- if ($is_free) {
- return true;
- }
- return rcp_user_can_access($user_id, $post_id);
- }
- if (theme_options("vip_system") == "kelaketfilm") {
- if (user_can($user_id, "manage_options")) {
- return true;
- }
- if (get_field("vip_moaf", $post_id)) {
- return true;
- }
- if (theme_options("moaf_vip_cat")) {
- $categories = get_the_category($post_id);
- $category_ids = [];
- if (!empty($categories)) {
- foreach ($categories as $category) {
- $category_ids[] = $category->term_id;
- }
- }
- if (!empty($category_ids) && array_intersect(theme_options("moaf_vip_cat"), $category_ids)) {
- return true;
- }
- }
- if ($is_free) {
- return true;
- }
- $locked_features = theme_options("vip_system__lock");
- if (is_single()) {
- if (is_array($locked_features) && in_array("download", $locked_features)) {
- if (kelaket_user_has_active_membership(get_current_user_id())) {
- return true;
- }
- return false;
- }
- return true;
- }
- if (is_page("playonline")) {
- if (is_array($locked_features) && in_array("playonline", $locked_features)) {
- if (kelaket_user_has_active_membership(get_current_user_id())) {
- return true;
- }
- return false;
- }
- return true;
- }
- }
- }
- function kelaket_is_restricted_content($post_id)
- {
- $locked_features = theme_options("vip_system__lock");
- if (get_field("vip_moaf", $post_id)) {
- return false;
- }
- if (theme_options("moaf_vip_cat")) {
- $categories = get_the_category($post_id);
- $category_ids = [];
- if (!empty($categories)) {
- foreach ($categories as $category) {
- $category_ids[] = $category->term_id;
- }
- }
- if (!empty($category_ids) && array_intersect(theme_options("moaf_vip_cat"), $category_ids)) {
- return false;
- }
- }
- if (is_array($locked_features) && (in_array("download", $locked_features) || in_array("playonline", $locked_features))) {
- return true;
- }
- }
- function remove_dashboard_widgets()
- {
- remove_meta_box("dashboard_primary", "dashboard", "side");
- remove_meta_box("dashboard_secondary", "dashboard", "side");
- }
- function kelaket_translate($text = "", $source = "en", $target = "fa")
- {
- $url = "https://translate.google.com/translate_a/single?client=at&dt=t&dt=ld&dt=qca&dt=rm&dt=bd&dj=1&hl=es-ES&ie=UTF-8&oe=UTF-8&inputm=2&otf=2&iid=1dd3b944-fa62-4b55-b330-74909a99969e";
- $fields = ["sl" => urlencode($source), "tl" => urlencode($target), "q" => urlencode($text)];
- $fields_string = "";
- foreach ($fields as $key => $value) {
- $fields_string .= $key . "=" . $value . "&";
- }
- rtrim($fields_string, "&");
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POST, count($fields));
- curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_ENCODING, "UTF-8");
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt($ch, CURLOPT_USERAGENT, "AndroidTranslate/5.3.0.RC02.130475354-53000263 5.1 phone TRANSLATE_OPM5_TEST_1");
- $result = curl_exec($ch);
- curl_close($ch);
- $sentencesArray = json_decode($result, true);
- $sentences = "";
- foreach ($sentencesArray["sentences"] as $s) {
- $sentences .= $s["trans"];
- }
- return $sentences;
- }
- function kelaket_translate_ajax_handler()
- {
- $text = $_POST["text"];
- if (!empty($text)) {
- if (is_rtl()) {
- wp_send_json_success(["text" => kelaket_translate($text)]);
- } else {
- wp_send_json_success(["text" => $text]);
- }
- } else {
- wp_send_json_error(["msg" => __("متنی جهت ترجمه ارسال نشده است.", "kelaketfilm")]);
- }
- }
- function uploadActorsByChunk_ajax()
- {
- if (isset($_REQUEST["post_id"])) {
- $data = $_REQUEST["data"];
- $post_id = $_REQUEST["post_id"];
- $current_chunk = $_REQUEST["chunk"];
- $all_chunks = $_REQUEST["all_chunks"];
- $temp = [];
- foreach ($data[$current_chunk] as $cast) {
- array_push($temp, $cast["name"]);
- wp_insert_term($cast["name"], "actor");
- $term = get_term_by("slug", $cast["name"], "actor");
- if (!get_field("actor_image_link", $term)) {
- if (strpos($cast["image"], "nopicture") !== false) {
- } else {
- $image_temp = uploadimage($cast["image"], $post_id, false);
- update_field("actor_image_link", $image_temp, $term);
- }
- }
- }
- $acros_tax = wp_set_object_terms($post_id, $temp, "actor", true);
- if (is_wp_error($acros_tax)) {
- } else if ($current_chunk == $all_chunks) {
- wp_send_json(["success" => true, "finish" => true]);
- } else {
- wp_send_json(["success" => true, "next_chunk" => $current_chunk + 1]);
- }
- exit;
- }
- }
- function kelaket_get_user_expiration($user_id = 0)
- {
- if (!function_exists("rcp_get_customer")) {
- return "rcp is not active";
- }
- if (!is_user_logged_in() && empty($user_id)) {
- return "";
- }
- if ($user_id) {
- $customer = rcp_get_customer_by("user_id", (int) $user_id);
- } else {
- $customer = rcp_get_customer();
- }
- if (empty($customer)) {
- return "";
- }
- $membership = rcp_get_customer_single_membership($customer->get_id());
- if (empty($membership)) {
- return "";
- }
- return $membership->get_expiration_time();
- }
- function kelaket_comment_vote()
- {
- check_ajax_referer("comment_vote", "nonce");
- $comment_id = (int) $_POST["comment_id"];
- $user_action = sanitize_key($_POST["user_action"]);
- $dislikes = get_comment_meta($comment_id, "cld_dislike_count", true);
- $likes = get_comment_meta($comment_id, "cld_like_count", true);
- $cookie_name = "vote_" . $comment_id;
- $cookie_value = "voted";
- setcookie($cookie_name, $cookie_value, time() + 2592000, "/");
- if ($user_action == "like" && !isset($_COOKIE["vote_" . $comment_id])) {
- $likes = empty($likes) ? 0 : $likes;
- $new_likes = $likes + 1;
- update_comment_meta($comment_id, "cld_like_count", $new_likes);
- wp_send_json_success(["likes" => (int) $new_likes, "dislikes" => (int) $dislikes]);
- } else if ($user_action == "dislike" && !isset($_COOKIE["vote_" . $comment_id])) {
- $dislikes = empty($likes) ? 0 : $dislikes;
- $new_dislikes = $dislikes + 1;
- update_comment_meta($comment_id, "cld_dislike_count", $new_dislikes);
- wp_send_json_success(["likes" => (int) $likes, "dislikes" => (int) $new_dislikes]);
- } else {
- wp_send_json_error(["msg" => __("شما قبلا به این دیدگاه رای دادید!", "kelaketfilm")]);
- }
- }
- function kelaket_admin_text()
- {
- echo "سپاسگذاریم که از قالب <a target=\"_blank\" href=\"https://www.rtl-theme.com/kelaketfilm-wordpress-theme/\">کلاکت فیلم</a> استفاده میکنید.";
- }
- function set_imdb_250_movies($upload = false)
- {
- $req = wp_remote_get("https://raw.githubusercontent.com/mahmood/kelaketFilmIMDBAssist/refs/heads/main/top250movies.json");
- if (is_array($req) && !is_wp_error($req)) {
- $response = json_decode($req["body"]);
- }
- $data = [];
- foreach ($response as $item) {
- if ($upload) {
- $image_url = $item->image;
- $image = kelaket_uploadImage($image_url, $item->id);
- } else {
- $image = $item->image;
- }
- $data[] = ["id" => $item->id, "rank" => $item->rank, "title" => $item->title, "imdb_rate" => $item->rate, "image" => $image];
- }
- update_option("imdb_top_250_movies", ["update_date" => current_time("mysql"), "data" => $data], "", "no");
- return ["success" => true, "msg" => "اطلاعات با موفقیت دریافت شد."];
- }
- function set_imdb_250_series($upload = false)
- {
- $req = wp_remote_get("https://raw.githubusercontent.com/mahmood/kelaketFilmIMDBAssist/refs/heads/main/top250series.json");
- if (is_array($req) && !is_wp_error($req)) {
- $response = json_decode($req["body"]);
- }
- $data = [];
- foreach ($response as $item) {
- if ($upload) {
- $image_url = $item->image;
- $image = kelaket_uploadImage($image_url, $item->id);
- } else {
- $image = $item->image;
- }
- $data[] = ["id" => $item->id, "rank" => $item->rank, "title" => $item->title, "imdb_rate" => $item->rate, "image" => $image];
- }
- update_option("imdb_top_250_series", ["update_date" => current_time("mysql"), "data" => $data], "", "no");
- return ["success" => true, "msg" => "اطلاعات با موفقیت دریافت شد."];
- }
- function set_imdb_250_movies_ajax()
- {
- $save_poster = $_POST["save_poster"];
- if ($save_poster == "true") {
- $save_poster = true;
- } else {
- $save_poster = false;
- }
- $return = set_imdb_250_movies($save_poster);
- wp_send_json_success([$return]);
- }
- function set_imdb_250_series_ajax()
- {
- $save_poster = $_POST["save_poster"];
- if ($save_poster == "true") {
- $save_poster = true;
- } else {
- $save_poster = false;
- }
- $return = set_imdb_250_series($save_poster);
- wp_send_json_success([$return]);
- }
- function get_imdb_250_movies()
- {
- return get_option("imdb_top_250_movies");
- }
- function get_imdb_250_series()
- {
- return get_option("imdb_top_250_series");
- }
- function kelaket_ago_date($date)
- {
- $current_time = current_time("U");
- return human_time_diff($date, $current_time) . __(" پیش ", "kelaketfilm");
- }
- function kelaket_uploadImage($image_url, $imdb_id)
- {
- $upload_dir = wp_upload_dir();
- $image_data = file_get_contents_curl($image_url);
- if (!empty($upload_dir["basedir"])) {
- $user_dirname = $upload_dir["basedir"] . "/kelaket_images";
- if (!file_exists($user_dirname)) {
- wp_mkdir_p($user_dirname);
- }
- $filename = basename($image_url);
- if (wp_mkdir_p($user_dirname)) {
- $file = $user_dirname . "/" . $imdb_id . ".jpg";
- } else {
- $file = $user_dirname . "/" . $imdb_id . ".jpg";
- }
- if (!file_exists($file)) {
- file_put_contents($file, $image_data);
- }
- return "/kelaket_images/" . $filename;
- }
- }
- function kelaket_is_url($url, $imdb_id = "")
- {
- if (filter_var($url, FILTER_VALIDATE_URL)) {
- return $url;
- }
- $upload_dir = wp_upload_dir();
- return $upload_dir["baseurl"] . "/kelaket_images/" . $imdb_id . ".jpg";
- }
- function get_comingsoon()
- {
- return get_option("kelaket_comingsoon");
- }
- function set_comingsoon($upload = false)
- {
- $api_token = get_option("my_framework")["imdb-api-token"];
- $api_url = "https://imdb-api.com/en/API/ComingSoon/" . $api_token;
- $request = wp_remote_get($api_url);
- if (is_wp_error($request)) {
- return ["error" => true, "req" => $request];
- }
- $response = json_decode(wp_remote_retrieve_body($request));
- $data = [];
- foreach ($response->items as $item) {
- if ($upload) {
- $image_url = preg_replace("/_V1[\\s\\S]+?_AL_/", "UX256", $item->image);
- $image = kelaket_uploadimage($image_url, $item->id);
- } else {
- $image = preg_replace("/_V1[\\s\\S]+?_AL_/", "UX256", $item->image);
- }
- $data[] = ["id" => $item->id, "title" => $item->title, "full_title" => $item->fullTitle, "rel_date" => $item->releaseState, "image" => $image, "genres" => $item->genres];
- }
- update_option("kelaket_comingsoon", ["update_date" => current_time("mysql"), "data" => $data], "", "no");
- return ["success" => true, "msg" => "اطلاعات با موفقیت دریافت شد."];
- }
- function set_comingsoon_ajax()
- {
- $save_poster = $_POST["save_poster"];
- if ($save_poster == "true") {
- $save_poster = true;
- } else {
- $save_poster = false;
- }
- $return = set_comingsoon($save_poster);
- wp_send_json_success([$return]);
- }
- function kelaket_auth_token()
- {
- if (!class_exists("Jwt_Auth_Public")) {
- return NULL;
- }
- if (isset($_GET["token"])) {
- $token = $_GET["token"];
- $jwt_instance = new Jwt_Auth_Public("jwt-auth", "1");
- $validated_token = $jwt_instance->kelaket_valid_token($token);
- if (is_wp_error($validated_token)) {
- return NULL;
- }
- if ($validated_token["is_ok"] === true) {
- $user = get_user_by("id", $validated_token["id"]);
- wp_clear_auth_cookie();
- wp_set_current_user((int) $validated_token["id"]);
- wp_set_auth_cookie((int) $validated_token["id"], true, is_ssl());
- do_action("wp_login", $user->user_login, $user);
- wp_redirect(get_home_url() . "/panel?action=dashboard&redirect=buy_vip");
- exit;
- }
- }
- }
- function redirect_vip()
- {
- if (isset($_GET["redirect"])) {
- wp_redirect(get_home_url() . "/panel?action=vip");
- exit;
- }
- }
- function kelaket_remove_trend()
- {
- global $wpdb;
- check_ajax_referer("sexy_ajax_call", "nonce");
- $table_name = $wpdb->prefix . "relevanssi_log";
- $trend_name = sanitize_text_field($_POST["trend_name"]);
- if (empty($trend_name)) {
- return NULL;
- }
- $remove_query = $wpdb->delete($table_name, ["query" => $trend_name]);
- wp_send_json_success(["msg" => __("آیتم با موفقیت حذف شد.", "kelaketfilm")]);
- }
- function strip_param_from_url($url, $param)
- {
- $base_url = strtok($url, "?");
- $parsed_url = parse_url($url);
- if (array_key_exists("query", $parsed_url)) {
- $query = $parsed_url["query"];
- parse_str($query, $parameters);
- unset($parameters[$param]);
- $new_query = http_build_query($parameters);
- $url = $base_url . "?" . $new_query;
- }
- return $url;
- }
- function kelaket_log_visits()
- {
- if (is_single() && get_post_type() == "post") {
- $post_id = get_the_ID();
- $cookie_name = "recent_views";
- $visited_posts = [];
- if (isset($_COOKIE[$cookie_name])) {
- $decoded_data = json_decode(stripslashes($_COOKIE[$cookie_name]), true);
- if (is_array($decoded_data)) {
- $visited_posts = $decoded_data;
- }
- }
- if (!in_array($post_id, $visited_posts)) {
- $visited_posts[] = $post_id;
- $json_data = json_encode($visited_posts);
- setcookie($cookie_name, $json_data, time() + MONTH_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN);
- }
- }
- }
- function clear_recent_history()
- {
- check_ajax_referer("sexy_ajax_call", "nonce");
- setcookie("recent_views", "", 1, "/", NULL);
- wp_send_json_success(["msg" => __("تاریخچه با موفقیت حذف شد.", "kelaketfilm"), "after" => __("تاریخچه شما خالی میباشد.", "kelaketfilm")]);
- }
- function rm_register_meta_box()
- {
- add_meta_box("rm-meta-box-id", esc_html__("تگ ساز", "kelaketfilm"), "rm_meta_box_callback", "post", "side", "high");
- }
- function rm_meta_box_callback($meta_id)
- {
- $template = "";
- $template .= "<p>بعد از انتشار مطلب دکمه پایین را زده تا تگ های مطلب بر اساس تمپلیت تعریف شده از قبل ایجاد شوند.</p>";
- $template .= "<button type=\"button\" class=\"button button-primary button-large btn-cs create_kelaket_tags\">ساخت تگ های مطلب</button>";
- echo " <script>\n jQuery(document).ready(function() {\n jQuery('.create_kelaket_tags').on('click', function(e) {\n var type = jQuery(e.target).attr('data-type');\n jQuery.ajax({\n url: ajaxurl,\n data: {\n action: 'create_kelaket_tags',\n post_id: ";
- echo $_GET["post"];
- echo ",\n },\n type: 'POST',\n beforeSend: function(xhr) {\n jQuery(e.target).attr('disabled', 'disabled');\n },\n success: function(response) {\n if (response.success) {\n jQuery(e.target).removeAttr('disabled');\n var res = confirm('تگ ها با موفقیت اضافه شدند با تایید کردن صفحه رفرش خواهد شد.');\n if (res) {\n window.location.reload();\n } else {\n return;\n }\n }\n },\n error: function(error) {\n jQuery(e.target).removeAttr('disabled');\n\n alert('مشکلی پیش آمد کنسول مرورگر را برای عیب یابی بررسی کنید. \\n ' + error.statusText);\n console.error(error);\n }\n });\n });\n });\n </script>\n ";
- echo $template;
- }
- function create_kelaket_tags_ajax()
- {
- $post_id = $_POST["post_id"];
- $tags_template = theme_options("tags_template");
- $tags_template_array = explode(PHP_EOL, $tags_template);
- $tags_proccesed = [];
- $type = get_the_terms($post_id, "type_of_post");
- $year = get_the_terms($post_id, "yearr");
- $content_replace = ["{title}" => get_the_title($post_id), "{en_title}" => get_field("en_title", $post_id), "{site_title}" => theme_options("logo_text"), "{type_fa}" => $type[0]->name, "{type_en}" => $type[0]->slug, "{year}" => $year[0]->name];
- foreach ($tags_template_array as $index => $tag) {
- $tags_proccesed[] = strtr($tag, $content_replace);
- }
- $inserted = wp_add_post_tags($post_id, $tags_proccesed);
- if ($inserted) {
- wp_send_json_success(["tags" => $inserted]);
- }
- }
- function create_kelaket_default_pages()
- {
- create_imdb250series_page();
- create_imdb250movies_page();
- create_auth_page();
- create_boxoffice_page();
- create_coomingsoon_page();
- create_playonline_page();
- create_panel_page();
- create_login_page();
- create_register_page();
- create_forgetpass_page();
- create_lists_page();
- create_actors_page();
- create_notification_page();
- create_plans_page();
- }
- function create_imdb250series_page()
- {
- $page_slug = "imdb-series-top-250";
- $new_page = ["post_type" => "page", "post_title" => "۲۵۰ سریال برتر IMDB", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-imdb250_series.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function create_imdb250movies_page()
- {
- $page_slug = "imdb-top-250";
- $new_page = ["post_type" => "page", "post_title" => "۲۵۰ فیلم برتر IMDB", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-imdb250.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function create_auth_page()
- {
- $page_slug = "auth";
- $new_page = ["post_type" => "page", "post_title" => "auth", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-auth.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function create_boxoffice_page()
- {
- $page_slug = "boxoffice";
- $new_page = ["post_type" => "page", "post_title" => "auth", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-box_office.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function create_coomingsoon_page()
- {
- $page_slug = "comingsoon";
- $new_page = ["post_type" => "page", "post_title" => "فیلم و سریال های بزودی", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-comingsoon.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function create_playonline_page()
- {
- $page_slug = "playonline";
- $new_page = ["post_type" => "page", "post_title" => "پخش آنلاین", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-playonline.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function create_notification_page()
- {
- $page_slug = "notification";
- $new_page = ["post_type" => "page", "post_title" => "اعلانات", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-notification.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function create_panel_page()
- {
- $page_slug = "panel";
- $new_page = ["post_type" => "page", "post_title" => "پنل کاربری", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-panel.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function create_register_page()
- {
- $page_slug = "register";
- $new_page = ["post_type" => "page", "post_title" => "ثبت نام", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-register.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function create_login_page()
- {
- $page_slug = "login";
- $new_page = ["post_type" => "page", "post_title" => "ورود", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-register.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function create_forgetpass_page()
- {
- $page_slug = "reset-pass";
- $new_page = ["post_type" => "page", "post_title" => "فراموشی رمز", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-reset-pass.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function create_actors_page()
- {
- $page_slug = "actors";
- $new_page = ["post_type" => "page", "post_title" => "لیست بازیگران", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-actors.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function create_lists_page()
- {
- $page_slug = "lists";
- $new_page = ["post_type" => "page", "post_title" => "لیست های کاربران", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-lists.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function create_plans_page()
- {
- $page_slug = "plans";
- $new_page = ["post_type" => "page", "post_title" => "پنل های اشتراک ویژه", "post_content" => "", "post_status" => "publish", "post_author" => 1, "post_name" => $page_slug, "page_template" => "page-templates/page-plans.php"];
- if (!get_page_by_path($page_slug, OBJECT, "page")) {
- $new_page_id = wp_insert_post($new_page);
- }
- }
- function kelaket_get_current_page_url()
- {
- $url_parts = parse_url(home_url());
- $current_url_with_query_string = $url_parts["scheme"] . "://" . $url_parts["host"] . add_query_arg(NULL, NULL);
- return $current_url_with_query_string;
- }
- function additional_fields()
- {
- echo "<div class=\"mb-2 mt-2\"><div class=\"switch-toggle\">\n <label>\n <input name=\"spoil\" type=\"checkbox\">\n <span></span>\n </label><small>";
- _e("دیدگاه داستان فیلم را اسپویل میکند؟", "kelaketfilm");
- echo "</small></div></div>";
- }
- function save_comment_meta_data($comment_id)
- {
- $spoil = $_POST["spoil"];
- if (isset($spoil)) {
- $spoil = true;
- } else {
- $spoil = false;
- }
- add_comment_meta($comment_id, "spoil", $spoil);
- }
- function extend_comment_add_meta_box()
- {
- add_meta_box("title", __("اسپویل دیدگاه ها"), "extend_comment_meta_box", "comment", "normal", "high");
- }
- function extend_comment_meta_box($comment)
- {
- $spoil = get_comment_meta($comment->comment_ID, "spoil", true);
- wp_nonce_field("extend_comment_update", "extend_comment_update", false);
- echo " <p>\n <input type=\"checkbox\" name=\"spoil\" ";
- echo $spoil ? "checked='checked'" : "";
- echo " class=\"widefat\" />\n <label for=\"spoil\">";
- _e("این دیدگاه داستان فیلم را اسپویل میکند؟", "kelaketfilm");
- echo "</label>\n </p>\n\n ";
- }
- function extend_comment_edit_metafields($comment_id)
- {
- if (!isset($_POST["extend_comment_update"]) || !wp_verify_nonce($_POST["extend_comment_update"], "extend_comment_update")) {
- return NULL;
- }
- if (isset($_POST["spoil"])) {
- $spoil = wp_filter_nohtml_kses($_POST["spoil"]);
- update_comment_meta($comment_id, "spoil", $spoil);
- } else {
- delete_comment_meta($comment_id, "spoil");
- }
- }
- function kelaket_change_wp_reset_pass_url($lost_password_url)
- {
- return home_url() . "/reset-pass";
- }
- function kelaket_importer_dashboard()
- {
- wp_add_dashboard_widget("dashboard_widget", "دریافت اطلاعات از IMDB", "kelaket_importer_dashboard_callback");
- }
- function kelaket_importer_dashboard_callback($post, $callback_args)
- {
- get_template_part("inc/template_parts/global/admin_dashboard");
- }
- function getBoxOfficeDataFromImdb_ajax()
- {
- $box_office = new imdbScrapper("https://www.imdb.com/chart/boxoffice/");
- $box_office_data = $box_office->get_boxOffice();
- $cache_data = set_transient("box_office", ["date" => current_time("timestamp"), "data" => $box_office_data], 0);
- wp_send_json_success($box_office_data);
- }
- function convertPersianDigitsToEnglish($string)
- {
- $persian = ["۰", "۱", "۲", "۳", "۴", "۵", "", "۷", "۸", "۹"];
- $english = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
- $output = str_replace($persian, $english, $string);
- return trim($output);
- }
- function kelaket_load_more_cats()
- {
- echo " ";
- $all_rows = count(theme_options("film_cat_home"));
- $limit = 2;
- $current_page = (int) $_POST["page"];
- $chunked = array_chunk(theme_options("film_cat_home"), $limit);
- foreach ($chunked[$current_page] as $index => $item) {
- if ($index === $limit) {
- exit;
- }
- if ($item["film_cat_item__style"]) {
- include get_template_directory() . "/inc/template_parts/posts/template/namava_big.php";
- } else {
- include get_template_directory() . "/inc/template_parts/posts/template/namava_normal.php";
- }
- }
- }
- function kelaket_is_file($input)
- {
- $pattern = "/^(http|https):\\/\\/\\S+\\.(m3u8|mp3|mp4|hls|mkv)\$/i";
- return preg_match($pattern, $input);
- }
- function kelaket_remove_param($url, $param)
- {
- $url = preg_replace("/(&|\\?)" . preg_quote($param) . "=[^&]*\$/", "", $url);
- $url = preg_replace("/(&|\\?)" . preg_quote($param) . "=[^&]*&/", "\$1", $url);
- return $url;
- }
- function findPostByImdbId($imdb_id)
- {
- if (empty($imdb_id)) {
- return NULL;
- }
- $args = ["meta_key" => "imdb", "meta_value" => $imdb_id];
- $post = get_posts($args);
- if (!empty($post[0])) {
- return $post[0];
- }
- return NULL;
- }
- function kelaket_email($to, $subject, $message)
- {
- $headers = ["Content-Type: text/html; charset=UTF-8"];
- $mail_template = "";
- $mail_template .= "<table style=\"margin: 0 auto;background: #fff;box-shadow: 0 0 7px #f5f5f5; padding: 20px; border: solid 1px #ddd;\" width=\"40%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td align=\"center\">";
- $mail_template .= "<h1 style=\"margin-bottom: 20px; font-size: 22px; margin-top: 0;\">" . $subject . "</h1>";
- $mail_template .= "<p>" . $message . "</p>";
- $mail_template .= "<a style=\"text-align: center; display: block; margin-top: 30px\" href=\"" . home_url() . "\">" . get_bloginfo("name") . "</a>";
- $mail_template .= "</td></tr></table>";
- wp_mail($to, $subject, $mail_template, $headers);
- }
- function kelaket_custom_genres_list()
- {
- $genres = ["all" => "همه ژانر ها"];
- $args = ["taxonomy" => "genre", "hide_empty" => false];
- $genres_temp = get_terms($args);
- foreach ($genres_temp as $key => $genre) {
- $genres[$genre->term_id] = $genre->name;
- }
- return $genres;
- }
- function kelaket_custom_post_type_list()
- {
- $genres = ["all" => "همه نوع پست ها"];
- $args = ["taxonomy" => "type_of_post", "hide_empty" => false];
- $genres_temp = get_terms($args);
- foreach ($genres_temp as $key => $genre) {
- $genres[$genre->term_id] = $genre->name;
- }
- return $genres;
- }
- function file_get_contents_curl($url)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_AUTOREFERER, true);
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
- $data = curl_exec($ch);
- curl_close($ch);
- return $data;
- }
- function acf_add_allowed_iframe_tag($tags, $context)
- {
- if ($context === "acf") {
- $tags["iframe"] = ["src" => true, "height" => true, "width" => true, "frameborder" => true, "allowfullscreen" => true];
- $tags["script"] = ["src" => true, "type" => true];
- $tags["style"] = [];
- }
- return $tags;
- }
- function kelaket_getSingleTabContents()
- {
- $post_id = $_POST["post_id"];
- switch ($_POST["data"]) {
- case "pills-testimontial":
- echo get_template_part("inc/template_parts/single/tabs/testimontial");
- break;
- case "pills-comments":
- echo get_template_part("inc/template_parts/single/tabs/comments", NULL, ["post_id" => $post_id]);
- break;
- case "pills-misc":
- echo get_template_part("inc/template_parts/single/tabs/moreinfo", NULL, ["post_id" => $post_id]);
- break;
- case "pills-lists":
- echo get_template_part("inc/template_parts/single/tabs/lists", NULL, ["post_id" => $post_id]);
- break;
- default:
- wp_die();
- }
- }
- function kelaket_customize_must_log_in_message($defaults)
- {
- if (theme_options("mobile-auth")) {
- $login_url = get_site_url() . "/auth?backto=" . get_permalink();
- } else {
- $login_url = get_site_url() . "/login?backto=" . get_permalink();
- }
- $custom_message = sprintf(__("برای ارسال دیدگاه وارد شوید <a href=\"%s\">ورود/عضویت</a>", "kelaketfilm"), esc_url($login_url));
- $defaults["must_log_in"] = "<p class=\"must-log-in\">" . $custom_message . "</p>";
- return $defaults;
- }
- function custom_reply_login_link_filter($link, $args, $comment, $post)
- {
- if (!is_user_logged_in() && get_option("comment_registration")) {
- if (theme_options("mobile-auth")) {
- $login_url = get_site_url() . "/auth?backto=" . get_permalink();
- } else {
- $login_url = get_site_url() . "/login?backto=" . get_permalink();
- }
- $custom_login_text = sprintf(__("برای پاسخ دادن <a href=\"%s\">وارد شوید.</a>", "kelaketfilm"), esc_url($login_url));
- return "<span class=\"custom-login-reply\">" . $custom_login_text . "</span>";
- }
- return $link;
- }
- function kelaket_register_panel_query_vars($vars)
- {
- $vars[] = "panel_action";
- $vars[] = "panel_sub_action";
- $vars[] = "item_id";
- $vars[] = "payment";
- $vars[] = "transaction";
- return $vars;
- }
- function kelaket_add_panel_rewrite_rules()
- {
- add_rewrite_rule("^panel/([^/]+)/([^/]+)/(\\d+)/?\$", "index.php?pagename=panel&panel_action=\$matches[1]&panel_sub_action=\$matches[2]&item_id=\$matches[3]", "top");
- add_rewrite_rule("^panel/([^/]+)/?\$", "index.php?pagename=panel&panel_action=\$matches[1]", "top");
- if (theme_options("vip_system") == "kelaketfilm") {
- add_rewrite_rule("^payment/([^/]+)/?\$", "index.php?payment=1&transaction=\$matches[1]", "top");
- }
- }
- function kelaket_flush_rewrite_rules_on_activate()
- {
- kelaket_add_panel_rewrite_rules();
- flush_rewrite_rules();
- }
- function kelaket_validate_discount_code()
- {
- global $wpdb;
- $discount_code = sanitize_text_field($_POST["code"]);
- $plan_id = sanitize_text_field($_POST["plan_id"]);
- if (empty($discount_code)) {
- wp_send_json_error(["msg" => __("کد تخفیف را وارد کنید.", "kelaketfilm")]);
- }
- if (function_exists("kelaket_get_discount_code")) {
- $res = kelaket_get_discount_code($discount_code);
- if (!empty($res)) {
- if (!empty($res["plan"])) {
- $plans_array = explode(",", $res["plan"]);
- if (!in_array($plan_id, $plans_array)) {
- wp_send_json_error(["msg" => __("کدتخفیف وارد شده اشتباه می باشد.", "kelaketfilm")]);
- }
- }
- if (!empty($res["expiration_date"])) {
- $now = current_time("Y-m-d");
- if (strtotime($res["expiration_date"]) < strtotime($now)) {
- wp_send_json_error(["msg" => __("کد تخفیف منقضی شده است.", "kelaketfilm")]);
- }
- }
- if ($res["single_use"] && $res["is_expired"]) {
- wp_send_json_error(["msg" => __("کد تخفیف وارد شده قبلا استفاده شده است.", "kelaketfilm")]);
- }
- $plans = kelaket_get_sub_plans();
- foreach ($plans as $plan) {
- if ($plan["id"] == $plan_id) {
- $real_price = number_format($plan["plan_price"]) . __(" تومان ", "kelaketfilm");
- $price = $plan["plan_price"];
- $percent = intval($res["percent"]);
- if ($percent < 0) {
- $percent = 0;
- }
- if (100 < $percent) {
- $percent = 100;
- }
- if (!empty($plan["plan_discounted_price"])) {
- $price = $plan["plan_discounted_price"];
- }
- $discounted = $price * $percent / 100;
- $now_price = $price - $discounted;
- $discounted = number_format($discounted) . __(" تومان ", "kelaketfilm");
- $now_price = number_format($now_price) . __(" تومان ", "kelaketfilm");
- }
- }
- wp_send_json_success(["msg" => __("کدتخفیف با موفقیت اعمال گردید.", "kelaketfilm"), "real_price" => $real_price, "discounted" => $discounted, "now_price" => $now_price, "code" => $discount_code]);
- } else {
- wp_send_json_error(["msg" => __("کدتخفیف وارد شده اشتباه می باشد.", "kelaketfilm")]);
- }
- }
- }
- function kelaketfilm_add_default_seo_meta_description()
- {
- if (!is_single()) {
- return NULL;
- }
- global $post;
- $description = "";
- $yoast_desc = get_post_meta($post->ID, "_yoast_wpseo_metadesc", true);
- $rank_math_desc = get_post_meta($post->ID, "rank_math_description", true);
- $aioseo_desc = get_post_meta($post->ID, "_aioseo_description", true);
- if (!empty($yoast_desc) || !empty($rank_math_desc) || !empty($aioseo_desc)) {
- return NULL;
- }
- if (has_excerpt($post->ID)) {
- $description = get_the_excerpt($post->ID);
- } else {
- $description = $post->post_content;
- }
- $description = strip_shortcodes($description);
- $description = wp_strip_all_tags($description);
- $description = trim(preg_replace("/\\s+/", " ", $description));
- $max_length = 155;
- if ($max_length < mb_strlen($description)) {
- $description = mb_substr($description, 0, $max_length);
- $last_space = mb_strrpos($description, " ");
- if (false !== $last_space) {
- $description = mb_substr($description, 0, $last_space) . "...";
- } else {
- $description .= "...";
- }
- }
- if (!empty($description)) {
- echo "<meta name=\"description\" content=\"" . esc_attr($description) . "\" />" . "\n";
- } else {
- echo "<meta name=\"description\" content=\"" . esc_attr(get_field("story", $post->ID)) . "\" />" . "\n";
- }
- }
- function kelaket_send_email($to, $subject, $title, $message)
- {
- ob_start();
- include get_template_directory() . "/inc/email-template.php";
- $email_template = ob_get_clean();
- $email_template = str_replace("عنوان ایمیل شما", $title, $email_template);
- $email_template = str_replace("بادی", $message, $email_template);
- $headers = ["Content-Type: text/html; charset=UTF-8"];
- if (wp_mail($to, $subject, $email_template, $headers)) {
- return true;
- }
- return false;
- }
- function handle_ticket_submission()
- {
- if (!isset($_POST["send_ticket"])) {
- return NULL;
- }
- global $wpdb;
- $tablename = $wpdb->prefix . "kelaket_tickets";
- $message_table = $wpdb->prefix . "kelaket_tickets_msg";
- $user_id = get_current_user_id();
- if (!$user_id) {
- return NULL;
- }
- $val = new Validation();
- if (!isset($_POST["dep"])) {
- $_POST["dep"] = "";
- }
- $val->name("عنوان تیکت")->value($_POST["subject"])->min(3)->required();
- $val->name("توضیحات")->value($_POST["msg"])->min(5)->required();
- $val->name("دپارتمان")->value($_POST["dep"])->required();
- if ($val->isSuccess()) {
- $subject = sanitize_text_field($_POST["subject"]);
- $msg = sanitize_textarea_field($_POST["msg"]);
- $dep = sanitize_text_field($_POST["dep"]);
- $wpdb->insert($tablename, ["subject" => $subject, "status" => 1, "department" => $dep, "user_id" => $user_id, "created_at" => current_time("Y-m-d H:i:s")]);
- $lastid = $wpdb->insert_id;
- $wpdb->insert($message_table, ["ticket_id" => $lastid, "msg" => $msg, "user_id" => $user_id, "created_at" => current_time("Y-m-d H:i:s")]);
- wp_redirect(get_home_url() . "/panel?action=tickets&msg=1");
- exit;
- }
- $error_url = get_home_url() . "/panel?action=add_ticket&error=validation";
- wp_redirect($error_url);
- exit;
- }
- function handle_create_list_submission()
- {
- if (!isset($_POST["create_list_nonce"])) {
- return NULL;
- }
- if (!wp_verify_nonce($_POST["create_list_nonce"], "create_list")) {
- wp_die("به دلیل مسائل امنیتی امکان ساخت لیست وجود ندارد.");
- }
- global $wpdb;
- $tablename = $wpdb->prefix . "kelaket_lists";
- $user_id = get_current_user_id();
- if (empty($_POST["list_name"]) || strlen($_POST["list_name"]) <= 5) {
- $error_url = get_home_url() . "/panel?action=create_list&error=invalid_name";
- wp_redirect($error_url);
- exit;
- }
- $list_name = sanitize_text_field($_POST["list_name"]);
- $list_desc = sanitize_text_field($_POST["list_desc"]);
- $res = $wpdb->insert($tablename, ["name" => $list_name, "list_desc" => $list_desc, "user_id" => $user_id, "films" => "", "created_at" => current_time("Y-m-d H:i:s")]);
- if ($res) {
- $last_id = $wpdb->insert_id;
- wp_redirect(get_home_url() . "/panel?action=edit_list_item&id=" . $last_id);
- exit;
- }
- $error_url = get_home_url() . "/panel?action=create_list&error=db_error";
- wp_redirect($error_url);
- exit;
- }
- function handle_edit_list_submission()
- {
- if (!isset($_POST["edit_list_nonce"])) {
- return NULL;
- }
- if (!wp_verify_nonce($_POST["edit_list_nonce"], "edit_list")) {
- wp_die("Security check failed.");
- }
- $user_id = get_current_user_id();
- $list_id = isset($_POST["list_id"]) ? (int) $_POST["list_id"] : 0;
- $redirect_url = get_home_url() . "/panel?action=edit_list&id=" . $list_id;
- if (empty($_POST["list_name"]) || strlen($_POST["list_name"]) <= 5) {
- wp_redirect($redirect_url . "&error_msg=invalid_name");
- exit;
- }
- if (!$user_id || !$list_id || !checkListBelongToUser($user_id, $list_id)) {
- wp_redirect(get_home_url() . "/404");
- exit;
- }
- global $wpdb;
- $tablename = $wpdb->prefix . "kelaket_lists";
- $list_name_new = sanitize_text_field($_POST["list_name"]);
- $list_desc_new = sanitize_textarea_field($_POST["list_desc"]);
- $wpdb->update($tablename, ["name" => $list_name_new, "list_desc" => $list_desc_new, "updated_at" => current_time("Y-m-d H:i:s")], ["id" => $list_id, "user_id" => $user_id]);
- wp_redirect(get_home_url() . "/panel?action=lists&msg=updated");
- exit;
- }
- function handle_edit_list_item_submission()
- {
- if (!isset($_POST["edit_film_list_item"])) {
- return NULL;
- }
- if (!wp_verify_nonce($_POST["edit_list_item_nonce"], "edit_list_item")) {
- wp_die("Security check failed.");
- }
- $user_id = get_current_user_id();
- $list_id = isset($_POST["list_id"]) ? (int) $_POST["list_id"] : 0;
- $redirect_url = get_home_url() . "/panel?action=edit_list_item&id=" . $list_id;
- if (empty($_POST["list_name"]) || strlen($_POST["list_name"]) <= 5) {
- wp_redirect($redirect_url . "&error=invalid_name");
- exit;
- }
- if (!$user_id || !$list_id || !checkListBelongToUser($user_id, $list_id)) {
- wp_redirect(get_home_url() . "/404");
- exit;
- }
- global $wpdb;
- $tablename = $wpdb->prefix . "kelaket_lists";
- $list_name_new = sanitize_text_field($_POST["list_name"]);
- $list_desc_new = sanitize_textarea_field($_POST["list_desc"]);
- $private = isset($_POST["private"]) && $_POST["private"] === "on" ? 1 : 0;
- $list_films_new = isset($_POST["ids"]) ? (array) $_POST["ids"] : [];
- $sanitized_film_ids = array_map("intval", $list_films_new);
- $list_films_string = implode(",", $sanitized_film_ids);
- $wpdb->update($tablename, ["name" => $list_name_new, "list_desc" => $list_desc_new, "films" => $list_films_string, "is_private" => $private, "updated_at" => current_time("Y-m-d H:i:s")], ["id" => $list_id, "user_id" => $user_id]);
- wp_redirect($redirect_url . "&msg=success");
- exit;
- }
- function handle_delete_list_action()
- {
- if (!isset($_GET["action"]) || $_GET["action"] !== "delete_list") {
- return NULL;
- }
- $list_id = isset($_GET["id"]) ? (int) $_GET["id"] : 0;
- $user_id = get_current_user_id();
- if (!$user_id || !$list_id) {
- wp_redirect(get_home_url() . "/panel?action=lists&msg=error");
- exit;
- }
- if (!isset($_GET["my_nonce"]) || !wp_verify_nonce($_GET["my_nonce"], "delete_list_nonce_" . $list_id)) {
- wp_die("Security check failed.");
- }
- if (!checkListBelongToUser($user_id, $list_id)) {
- wp_redirect(get_home_url() . "/404");
- exit;
- }
- global $wpdb;
- $tablename = $wpdb->prefix . "kelaket_lists";
- $result = $wpdb->delete($tablename, ["id" => $list_id, "user_id" => $user_id]);
- if ($result) {
- wp_redirect(get_home_url() . "/panel?action=lists&msg=ds");
- } else {
- wp_redirect(get_home_url() . "/panel?action=lists&msg=de");
- }
- exit;
- }
- function handle_film_request_submission()
- {
- if (!isset($_POST["req_submit"])) {
- return NULL;
- }
- $user_id = get_current_user_id();
- if (!$user_id) {
- return NULL;
- }
- global $wpdb;
- $tablename = $wpdb->prefix . "kelaket_reqs";
- $film_name = sanitize_text_field($_POST["film_name"]);
- $req_type_str = sanitize_text_field($_POST["type"]);
- if (empty($film_name) || empty($req_type_str)) {
- return NULL;
- }
- $req_type = $req_type_str == "movie" ? 1 : 2;
- if (theme_options("request_limit")) {
- $limit_query = $wpdb->prepare("\n SELECT COUNT(*) FROM " . $tablename . "\n WHERE user_id = %d AND created_at > now() - interval 24 hour", $user_id);
- $send_reqs_last24hour = $wpdb->get_var($limit_query);
- if ((int) theme_options("request_limit") <= $send_reqs_last24hour) {
- wp_redirect(get_home_url() . "/panel?action=req&msg=3");
- exit;
- }
- }
- $duplicate_query = $wpdb->prepare("SELECT id FROM " . $tablename . " WHERE name = %s", $film_name);
- $duplicate = $wpdb->get_var($duplicate_query);
- if ($duplicate) {
- wp_redirect(get_home_url() . "/panel?action=req&msg=4");
- exit;
- }
- $res = $wpdb->insert($tablename, ["name" => $film_name, "type" => $req_type, "user_id" => $user_id, "created_at" => current_time("Y-m-d H:i:s")]);
- if ($res) {
- wp_redirect(get_home_url() . "/panel?action=req&msg=1");
- } else {
- wp_redirect(get_home_url() . "/panel?action=req&msg=2");
- }
- exit;
- }
- function handle_vip_checkout_process()
- {
- if (!isset($_POST["buy_sub"])) {
- return NULL;
- }
- if (!isset($_POST["checkout_nonce"]) || !wp_verify_nonce($_POST["checkout_nonce"], "buy_sub_" . get_current_user_id())) {
- wp_die("خطای امنیتی رخ داد. لطفاً صفحه را رفرش کرده و مجدد تلاش کنید.");
- }
- $plan_id = isset($_POST["plan_id"]) ? absint($_POST["plan_id"]) : 0;
- $gateway_id = isset($_POST["gateway_id"]) ? sanitize_text_field($_POST["gateway_id"]) : "";
- $discount_code = isset($_POST["discount_code"]) ? sanitize_text_field($_POST["discount_code"]) : "";
- $user_id = get_current_user_id();
- if (!$plan_id || !$gateway_id || !$user_id) {
- wp_redirect(home_url("/panel/vip/checkout/" . $plan_id . "?status=nok&msg=اطلاعات-ناقص-است"));
- exit;
- }
- $plans = kelaket_get_sub_plans();
- $existing_plan_ids = wp_list_pluck($plans, "id");
- if (!in_array($plan_id, $existing_plan_ids)) {
- wp_redirect(home_url("/panel/vip?status=nok&msg=پلن-نامعتبر-است"));
- exit;
- }
- kelaket_gateway::create_payment($plan_id, $gateway_id, $discount_code);
- exit;
- }
- function validate_vip_plan_id_on_load()
- {
- if (is_page("panel") && get_query_var("panel_sub_action") === "checkout") {
- $plan_id = get_query_var("item_id");
- if (!empty($plan_id)) {
- $plans = kelaket_get_sub_plans();
- $existing_plan_ids = wp_list_pluck($plans, "id");
- if (!in_array($plan_id, $existing_plan_ids)) {
- wp_redirect(home_url("/panel/vip"));
- exit;
- }
- }
- }
- }
- function handle_profile_update_submission()
- {
- if (!isset($_POST["edit_profile"])) {
- return NULL;
- }
- if (!isset($_POST["kelaket_edit_nonce"]) || !wp_verify_nonce($_POST["kelaket_edit_nonce"], "edit_profile")) {
- wp_die("Security check failed.");
- }
- $user_id = get_current_user_id();
- if (!$user_id) {
- return NULL;
- }
- $redirect_url = home_url("/panel/editprofile");
- if (!empty($_POST["rcp_mobile"])) {
- $phone_number = sanitize_text_field($_POST["rcp_mobile"]);
- if (!preg_match("/^09[0-9]{9}\$/", $phone_number)) {
- wp_redirect(add_query_arg("msg", "wrong_number", $redirect_url));
- exit;
- }
- $existing_user = get_users(["meta_key" => "phone", "meta_value" => $phone_number, "exclude" => [$user_id]]);
- if (!empty($existing_user)) {
- wp_redirect(add_query_arg("msg", "phone_exists", $redirect_url));
- exit;
- }
- update_user_meta($user_id, "phone", $phone_number);
- }
- $user_args = ["ID" => $user_id, "user_email" => sanitize_email($_POST["rcp_email"]), "display_name" => sanitize_text_field($_POST["rcp_display_name"])];
- $pass1 = isset($_POST["rcp_new_user_pass1"]) ? $_POST["rcp_new_user_pass1"] : "";
- $pass2 = isset($_POST["rcp_new_user_pass2"]) ? $_POST["rcp_new_user_pass2"] : "";
- if (!empty($pass1)) {
- if ($pass1 !== $pass2) {
- wp_redirect(add_query_arg("msg", "password_mismatch", $redirect_url));
- exit;
- }
- if (strlen($pass1) < 6) {
- wp_redirect(add_query_arg("msg", "password_weak", $redirect_url));
- exit;
- }
- $user_args["user_pass"] = $pass1;
- }
- update_user_meta($user_id, "first_name", sanitize_text_field($_POST["rcp_first_name"]));
- update_user_meta($user_id, "last_name", sanitize_text_field($_POST["rcp_last_name"]));
- $update_result = wp_update_user($user_args);
- if (is_wp_error($update_result)) {
- wp_redirect(add_query_arg("msg", "update_failed", $redirect_url));
- } else {
- wp_redirect(add_query_arg("msg", "user_updated", $redirect_url));
- }
- exit;
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment