Current File : /home/kelaby89/listingslad.com/wp-content/plugins/listivo-core/framework/functions.php |
<?php
use Elementor\Core\Kits\Documents\Kit;
use Stripe\StripeClient;
use Tangibledesign\Framework\Core\App;
use Tangibledesign\Framework\Core\Collection;
use Tangibledesign\Framework\Core\Settings\Settings;
use Tangibledesign\Framework\Factories\CommentFactory;
use Tangibledesign\Framework\Factories\FieldFactory;
use Tangibledesign\Framework\Factories\ImageFactory;
use Tangibledesign\Framework\Factories\ModelFactory;
use Tangibledesign\Framework\Factories\NotificationFactory;
use Tangibledesign\Framework\Factories\NotificationTaskFactory;
use Tangibledesign\Framework\Factories\OrderFactory;
use Tangibledesign\Framework\Factories\PaymentPackageFactory;
use Tangibledesign\Framework\Factories\PostFactory;
use Tangibledesign\Framework\Factories\ReviewFactory;
use Tangibledesign\Framework\Factories\SubscriptionFactory;
use Tangibledesign\Framework\Factories\TemplateFactory;
use Tangibledesign\Framework\Factories\TemplateTypeFactory;
use Tangibledesign\Framework\Factories\TermFactory;
use Tangibledesign\Framework\Factories\UserFactory;
use Tangibledesign\Framework\Factories\UserPaymentPackageFactory;
use Tangibledesign\Framework\Factories\UserSubscriptionFactory;
use Tangibledesign\Framework\Factories\WooProductFactory;
use Tangibledesign\Framework\Models\Currency;
use Tangibledesign\Framework\Models\Field\AttachmentsField;
use Tangibledesign\Framework\Models\Field\EmbedField;
use Tangibledesign\Framework\Models\Field\Field;
use Tangibledesign\Framework\Models\Field\GalleryField;
use Tangibledesign\Framework\Models\Field\Helpers\SimpleTextValue;
use Tangibledesign\Framework\Models\Field\LinkField;
use Tangibledesign\Framework\Models\Field\LocationField;
use Tangibledesign\Framework\Models\Field\NumberField;
use Tangibledesign\Framework\Models\Field\PriceField;
use Tangibledesign\Framework\Models\Field\RichTextField;
use Tangibledesign\Framework\Models\Field\SalaryField;
use Tangibledesign\Framework\Models\Field\TaxonomyField;
use Tangibledesign\Framework\Models\Field\TextField;
use Tangibledesign\Framework\Models\Model;
use Tangibledesign\Framework\Models\Payments\PaymentPackageRepository;
use Tangibledesign\Framework\Models\Payments\Subscription;
use Tangibledesign\Framework\Models\Payments\UserPaymentPackageRepository;
use Tangibledesign\Framework\Models\User\User;
use Tangibledesign\Framework\Queries\QueryAttachments;
use Tangibledesign\Framework\Queries\QueryBlogPosts;
use Tangibledesign\Framework\Queries\QueryFields;
use Tangibledesign\Framework\Queries\QueryImages;
use Tangibledesign\Framework\Queries\QueryModels;
use Tangibledesign\Framework\Queries\QueryNotifications;
use Tangibledesign\Framework\Queries\QueryNotificationTasks;
use Tangibledesign\Framework\Queries\QueryOrders;
use Tangibledesign\Framework\Queries\QueryPages;
use Tangibledesign\Framework\Queries\QueryPaymentPackages;
use Tangibledesign\Framework\Queries\QueryPosts;
use Tangibledesign\Framework\Queries\QueryReviews;
use Tangibledesign\Framework\Queries\QuerySubscriptions;
use Tangibledesign\Framework\Queries\QueryTemplates;
use Tangibledesign\Framework\Queries\QueryTerms;
use Tangibledesign\Framework\Queries\QueryUserPaymentPackages;
use Tangibledesign\Framework\Queries\QueryUsers;
use Tangibledesign\Framework\Queries\QueryUserSubscriptions;
/**
* @param array $array
* @return Collection
*/
function tdf_collect(array $array = []): Collection
{
return new Collection($array);
}
/**
* @return string
*/
function tdf_prefix(): string
{
return apply_filters('tdf/prefix', 'tdf');
}
/**
* @return string
*/
function tdf_short_prefix(): string
{
return apply_filters('tdf/shortPrefix', 'tdf');
}
/**
* @param string $key
* @return string
*/
function tdf_admin_string(string $key): string
{
return App::getInstance()->get($key . '_admin_string');
}
/**
* @param string $key
* @return mixed|null
*/
function tdf_app(string $key)
{
return App::getInstance()->get($key);
}
function tdf_slug(string $key): string
{
return App::getInstance()->get($key . '_slug');
}
function tdf_string(string $key): string
{
return App::getInstance()->get($key . '_string');
}
function tdf_settings(): Settings
{
return tdf_app('settings');
}
/**
* @return Collection|Currency[]
*/
function tdf_currencies(): Collection
{
return tdf_app('currencies');
}
/**
* @return Currency|false
*/
function tdf_current_currency()
{
return tdf_app('current_currency');
}
/**
* @return Collection|Field[]
*/
function tdf_fields(): Collection
{
return tdf_app('fields');
}
/**
* @return Collection|Field[]
*/
function tdf_ordered_fields(): Collection
{
return tdf_app('ordered_fields');
}
/**
* @return Collection|PriceField[]
*/
function tdf_price_fields(): Collection
{
return tdf_app('price_fields');
}
/**
* @return Collection|PriceField[]
*/
function tdf_currency_fields(): Collection
{
return tdf_fields()->filter(static function ($field) {
return $field instanceof PriceField || $field instanceof SalaryField;
});
}
/**
* @return Collection|EmbedField[]
*/
function tdf_embed_fields(): Collection
{
return tdf_fields()->filter(static function ($field) {
return $field instanceof EmbedField;
});
}
/**
* @return Collection|NumberField[]
*/
function tdf_number_fields(): Collection
{
return tdf_app('number_fields');
}
/**
* @return Collection|TextField[]
*/
function tdf_text_fields(): Collection
{
return tdf_app('text_fields');
}
/**
* @return Collection|LinkField[]
*/
function tdf_link_fields(): Collection
{
return tdf_app('link_fields');
}
/**
* @return Collection|TextField[]
*/
function tdf_rich_text_fields(): Collection
{
return tdf_fields()->filter(static function ($field) {
return $field instanceof RichTextField;
});
}
/**
* @return Collection|GalleryField[]
*/
function tdf_gallery_fields(): Collection
{
return tdf_fields()->filter(static function ($field) {
return $field instanceof GalleryField;
});
}
/**
* @return Collection|AttachmentsField[]
*/
function tdf_attachment_fields(): Collection
{
return tdf_fields()->filter(static function ($field) {
return $field instanceof AttachmentsField;
});
}
/**
* @return Collection|LocationField[]
*/
function tdf_location_fields(): Collection
{
return tdf_app('location_fields');
}
/**
* @return Collection|TaxonomyField[]
*/
function tdf_taxonomy_fields(): Collection
{
return tdf_app('taxonomy_fields');
}
function tdf_taxonomy_keys(): array
{
return tdf_app('taxonomy_keys');
}
function tdf_action_url(string $action): string
{
return admin_url('admin-post.php?action=' . $action);
}
/**
* @param string $path
* @param array $params
*/
function tdf_load_view(string $path, array $params = []): void
{
foreach ($params as $key => $value) {
${$key} = $value;
}
require tdf_app('path') . 'views/' . $path . '.php';
}
function tdf_subscription_factory(): SubscriptionFactory
{
return tdf_app('subscription_factory');
}
function tdf_user_subscription_factory(): UserSubscriptionFactory
{
return tdf_app('user_subscription_factory');
}
function tdf_notification_factory(): NotificationFactory
{
return tdf_app('notification_factory');
}
function tdf_notification_task_factory(): NotificationTaskFactory
{
return tdf_app('notification_task_factory');
}
function tdf_term_factory(): TermFactory
{
return tdf_app('term_factory');
}
function tdf_woo_product_factory(): WooProductFactory
{
return tdf_app('woo_product_factory');
}
function tdf_model_factory(): ModelFactory
{
return tdf_app('model_factory');
}
function tdf_query_notifications(): QueryNotifications
{
return new QueryNotifications();
}
function tdf_query_notification_tasks(): QueryNotificationTasks
{
return new QueryNotificationTasks();
}
function tdf_query_terms(string $taxonomyKey = ''): QueryTerms
{
if (!empty($taxonomyKey)) {
return (new QueryTerms())->setTaxonomy($taxonomyKey);
}
return new QueryTerms();
}
function tdf_query_users(): QueryUsers
{
return new QueryUsers();
}
function tdf_user_factory(): UserFactory
{
return tdf_app('user_factory');
}
function tdf_template_type_factory(): TemplateTypeFactory
{
return tdf_app('template_type_factory');
}
function tdf_template_factory(): TemplateFactory
{
return tdf_app('template_factory');
}
function tdf_field_factory(): FieldFactory
{
return tdf_app('field_factory');
}
function tdf_payment_package_factory(): PaymentPackageFactory
{
return tdf_app('payment_package_factory');
}
function tdf_user_payment_package_factory(): UserPaymentPackageFactory
{
return tdf_app('user_payment_package_factory');
}
function tdf_query_templates(string $type = ''): QueryTemplates
{
if (!empty($type)) {
return (new QueryTemplates())->setType($type);
}
return new QueryTemplates();
}
function tdf_order_factory(): OrderFactory
{
return tdf_app('order_factory');
}
/**
* @return PostFactory
*/
function tdf_post_factory(): PostFactory
{
return tdf_app('post_factory');
}
function tdf_query_posts(): QueryPosts
{
return new QueryPosts();
}
function tdf_query_orders(): QueryOrders
{
return new QueryOrders();
}
function tdf_query_pages(): QueryPages
{
return new QueryPages();
}
function tdf_query_payment_packages(): QueryPaymentPackages
{
return new QueryPaymentPackages();
}
function tdf_query_subscriptions(): QuerySubscriptions
{
return new QuerySubscriptions();
}
function tdf_query_user_subscriptions(): QueryUserSubscriptions
{
return new QueryUserSubscriptions();
}
function tdf_query_user_payment_packages(): QueryUserPaymentPackages
{
return new QueryUserPaymentPackages();
}
function tdf_image_factory(): ImageFactory
{
return tdf_app('image_factory');
}
function tdf_query_reviews(): QueryReviews
{
return new QueryReviews();
}
function tdf_review_factory(): ReviewFactory
{
return tdf_app('review_factory');
}
function tdf_pages(): Collection
{
return tdf_app('pages');
}
function tdf_contact_forms(): Collection
{
return tdf_app('contact_forms');
}
function tdf_query_blog_posts(): QueryBlogPosts
{
return new QueryBlogPosts();
}
/**
* @return CommentFactory
*/
function tdf_comment_factory(): CommentFactory
{
return tdf_app('comment_factory');
}
function tdf_simple_text_value_fields(): Collection
{
return tdf_ordered_fields()->filter(static function ($field) {
return $field instanceof SimpleTextValue;
});
}
function tdf_filter($value)
{
return $value;
}
function tdf_query_images(): QueryImages
{
return new QueryImages();
}
function tdf_query_attachments(): QueryAttachments
{
return new QueryAttachments();
}
/**
* @return User|false
*/
function tdf_current_user()
{
return tdf_app('current_user');
}
function tdf_model_post_type(): string
{
return tdf_app('model_post_type');
}
function tdf_review_post_type(): string
{
return tdf_app('review_post_type');
}
function tdf_model_archive_slug(): string
{
return apply_filters(tdf_prefix() . '/model/archiveSlug', '');
}
function tdf_query_models(): QueryModels
{
return new QueryModels();
}
function tdf_query_fields(): QueryFields
{
return new QueryFields();
}
function tdf_payment_packages_repository(): PaymentPackageRepository
{
return tdf_app('payment_package_repository');
}
function tdf_user_payment_packages_repository(): UserPaymentPackageRepository
{
return tdf_app('user_payment_package_repository');
}
function tdf_payment_packages(): Collection
{
return tdf_app('payment_packages');
}
/**
* @return Collection|Subscription[]
*/
function tdf_subscriptions(): Collection
{
return tdf_app('subscriptions');
}
function tdf_bumps_payment_packages(): Collection
{
return tdf_app('bumps_payment_packages');
}
/**
* @param $date
* @return string
*/
function tdf_get_hum_date_diff($date): string
{
$humanTimeDiff = human_time_diff(strtotime($date), current_time('timestamp', 1));
$ago = tdf_string('ago');
if (strpos($ago, '%s') === false) {
return $humanTimeDiff . ' ' . $ago . '2';
}
return sprintf($ago, $humanTimeDiff);
}
/**
* @return Model|false
*/
function tdf_current_model()
{
return tdf_app('current_model');
}
/**
* @return Kit|false
*/
function tdf_current_kit()
{
return tdf_app('current_kit');
}
function tdf_stripe(): StripeClient
{
return tdf_app('stripe');
}
function tdf_load_icon(string $url): string
{
$parsedUrl = parse_url($url);
if (!isset($parsedUrl['path'])) {
return (string)file_get_contents($url);
}
$icon = (string)file_get_contents(ABSPATH . ltrim($parsedUrl['path'], '/'));
if (!empty($icon)) {
return $icon;
}
return '';
}
function tdf_logout_url(): string
{
return admin_url('admin-post.php?action=' . tdf_prefix() . '/logout');
}
function tdf_date_diff(string $date): string
{
try {
$nowDate = new DateTime();
$finalDate = new DateTime($date);
} catch (Exception $e) {
return '';
}
$difference = $nowDate->diff($finalDate);
if (!$difference) {
return '';
}
if ($difference->days === 1) {
$daysString = mb_strtolower(tdf_string('day'), 'UTF-8');
} else {
$daysString = mb_strtolower(tdf_string('days'), 'UTF-8');
}
if ($difference->h === 1) {
$hoursString = mb_strtolower(tdf_string('hour'), 'UTF-8');
} else {
$hoursString = mb_strtolower(tdf_string('hours'), 'UTF-8');
}
if ($difference->i === 1) {
$minutesString = mb_strtolower(tdf_string('minute'), 'UTF-8');
} else {
$minutesString = mb_strtolower(tdf_string('minutes'), 'UTF-8');
}
if (empty($difference->days) && !empty($difference->h)) {
return $difference->h . ' ' . $hoursString . ', ' . $difference->i . ' ' . $minutesString;
}
if (empty($difference->days)) {
return $difference->i . ' ' . $minutesString;
}
return $difference->days . ' ' . $daysString . ', ' . $difference->h . ' ' . $hoursString;
}
function tdf_render_icon(array $icon): void
{
if (isset($icon['library']) && $icon['library'] === 'svg' && !empty($icon['value']['url'])) : ?>
<?php echo tdf_load_icon($icon['value']['url']); ?>
<?php else : ?>
<i class="<?php echo esc_attr($icon['value']); ?>"></i>
<?php endif;
}
function tdf_template(string $template, array $args = []): void
{
get_template_part('templates/' . $template, args: $args);
}