/**
  * Vrátí pole s metas
  * 
  * @return array
  */
 public final function getMetas()
 {
     if (KT::notIssetOrEmpty($this->metas)) {
         $this->initMetas();
     }
     return $this->metas;
 }
 /**
  * @return array
  */
 public function getOptionsData()
 {
     if (KT::issetAndNotEmpty($this->dataManager)) {
         return $this->getDataManager()->getData();
     }
     return array();
 }
 /**
  * Zruší metabox na základě názvu, stránky a contextu
  *
  * @param string $metaboxId
  * @param string $postType
  * @param string $context
  * @return \KT_WP_Metabox_Remover_Configurator
  */
 public function removeMetabox($metaboxId, $postType, $context)
 {
     if (KT::issetAndNotEmpty($metaboxId) && KT::issetAndNotEmpty($postType) && KT::issetAndNotEmpty($context)) {
         array_push($this->data, array($metaboxId, $postType, $context));
     }
     return $this;
 }
 /**
  * Zruší widget na základě názvu
  *
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  * 
  * @param string $widgetName
  * @return \KT_WP_Widget_Remover_Configurator
  */
 public function removeWidget($widgetName)
 {
     if (KT::issetAndNotEmpty($widgetName)) {
         array_push($this->data, $widgetName);
     }
     return $this;
 }
 public function renderPrevReferenceLink()
 {
     $adjacent = get_adjacent_post(false, "", true);
     if (KT::issetAndNotEmpty($adjacent)) {
         $url = get_permalink($adjacent->ID);
         echo "<a href=\"{$url}\" title=\"Předchozí naše práce\" class=\"prev\">Předchozí reference</a>";
     }
 }
function kt_zzz_load_more_posts_callback()
{
    if (KT::arrayIssetAndNotEmpty($_REQUEST)) {
        $presenter = new KT_ZZZ_Posts_Presenter();
        die($presenter->getPostsOutput());
    }
    die(false);
}
 /**
  * @param string $action - WP nonce akce
  * @param string $name - hash v poli
  * @param string $label - popisek v HTML
  */
 public function __construct($action, $name, $label)
 {
     parent::__construct($name, $label);
     if (KT::issetAndNotEmpty($action)) {
         $this->action = $action;
     } else {
         throw new KT_Not_Supported_Exception("Empty Nonce Action");
     }
 }
 protected function getNameAttribute()
 {
     $afterNameString = static::getAfterNameValue();
     if (KT::issetAndNotEmpty($this->getPostPrefix())) {
         return "{$this->getPostPrefix()}[{$this->getName()}]{$afterNameString}";
     } else {
         return "{$this->getName()}{$afterNameString}";
     }
 }
 /**
  * Objektu automaticky nastaví query po selekci stránek
  * 
  * @return \KT_Page_Field
  */
 private function pageQueryArgsInit()
 {
     $args = array("post_type" => KT_WP_PAGE_KEY, "posts_per_page" => self::DEFAUL_PAGE_COUNT, "post_status" => "publish", "orderby" => "parent title", "order" => KT_Repository::ORDER_ASC);
     if (KT::issetAndNotEmpty($this->getParentPage())) {
         $args["post_parent"] = $this->getParentPage();
     }
     $dataManager = new KT_Custom_Post_Data_Manager();
     $dataManager->setQueryArgs($args);
     $this->setDataManager($dataManager);
 }
 /**
  * Vytažení všech termů pro zadané taxonomy vlastním způsobem ve formátu [ID, slug, name]
  *
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  * @link http://codeblow.com/questions/wordpress-get-terms-function-no-longer-working-during-my-wordpress-plugin/
  *
  * @global $wpdb
  * @param string $taxonomyName
  * @return array
  * @throws KT_Not_Set_Argument_Exception
  */
 public static function getAllTermsByTaxonomy($taxonomyName)
 {
     if (KT::issetAndNotEmpty($taxonomyName)) {
         global $wpdb;
         $query = "SELECT DISTINCT {$wpdb->terms}.term_id as ID, {$wpdb->terms}.slug as slug, {$wpdb->terms}.name as name\n\t\t\t\t\t  FROM {$wpdb->terms}\n\t\t\t\t\t  LEFT JOIN {$wpdb->term_taxonomy}\n\t\t\t\t\t  ON {$wpdb->terms}.term_id = {$wpdb->term_taxonomy}.term_id\n\t\t\t\t\t  WHERE {$wpdb->term_taxonomy}.taxonomy = '%s'\n\t\t\t\t\t  ORDER BY {$wpdb->terms}.name";
         $results = $wpdb->get_results($wpdb->prepare($query, $taxonomyName), ARRAY_A);
         return $results;
     }
     throw new KT_Not_Set_Argument_Exception("taxonomy");
 }
 /**
  * Vrátí HTML strukturu pro zobrazní fieldu
  *
  * @author Tomáš Kocifaj
  * @link http://www.ktstudio.cz
  *
  * @return string
  */
 public function getField()
 {
     $html = "";
     $html .= "<textarea " . $this->getBasicHtml() . ">";
     $html .= KT::stringHtmlDecode($this->getValue());
     $html .= "</textarea>";
     if ($this->hasErrorMsg()) {
         $html .= parent::getHtmlErrorMsg();
     }
     return $html;
 }
 public static function getParamsFieldset()
 {
     $fieldset = new KT_Form_Fieldset(self::PARAMS_FIELDSET, __("Parametry", "ZZZ_ADMIN_DOMAIN"));
     $fieldset->setPostPrefix(self::PARAMS_FIELDSET);
     $referenceTypes = new KT_ZZZ_Reference_Type_Enum();
     $referenceOptions = KT::arrayRemoveByKey($referenceTypes->getTranslates(), KT_ZZZ_Reference_Type_Enum::NONE);
     $fieldset->addText(self::PARAMS_DATE, __("Datum:", "ZZZ_ADMIN_DOMAIN"));
     $fieldset->addText(self::PARAMS_CLIENT, __("Klient:", "ZZZ_ADMIN_DOMAIN"));
     $fieldset->addCheckbox(self::PARAMS_TYPES, __("Typy:", "ZZZ_ADMIN_DOMAIN"))->setOptionsData($referenceOptions);
     return $fieldset;
 }
 /**
  * Na základě odřádkování (tzn. po řádcích) rozdělí zadaný text a vrátí jako HTML seznam zadaného tagu
  * 
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  * 
  * @param string $format @see sprintf()
  * @return string (HTML)
  */
 public function getList($format = "%s", $unsafe = false)
 {
     $lines = $this->getLinesArray($unsafe);
     if (!KT::arrayIssetAndNotEmpty($lines)) {
         return;
     }
     $output = "";
     foreach ($lines as $line) {
         $output .= sprintf($format, $line);
     }
     return $output;
 }
/**
 * Funkce obslouží ajax dotaz, který má provést uložení pořadí itemů po Sortable
 * 
 * @author Tomáš Kocifaj
 * @link http://www.ktstudio.cz
 */
function kt_edit_sorting_crud_list_callback()
{
    $itemCollection = $_REQUEST["data"];
    $className = $_REQUEST["class_name"];
    if (KT::arrayIssetAndNotEmpty($itemCollection)) {
        foreach ($itemCollection as $index => $itemId) {
            $crudClassObject = new $className($itemId);
            if ($crudClassObject->isInDatabase()) {
                $crudClassObject->setMenuOrder($index)->saveRow();
            }
        }
    }
}
 private function initPosts()
 {
     $args = array("post_type" => KT_WP_POST_KEY, "post_status" => "publish", "posts_per_page" => self::DEFAULT_COUNT, "orderby" => "date", "order" => KT_Repository::ORDER_DESC, "cat" => KT_ZZZ::getThemeModel()->getCategoryNewsId());
     $query = new WP_Query();
     $posts = $query->query($args);
     if (KT::arrayIssetAndNotEmpty($posts)) {
         $this->posts = $posts;
         $this->postsCount = count($posts);
     } else {
         $this->posts = array();
         $this->postsCount = 0;
     }
 }
/**
 * Založí tabulku dle zadaného názvu (pro kontrolu) a SQL skriptu
 * s
 * @author Martin Hlaváč
 * @link http://www.ktstudio.cz
 * 
 * @param string $tableName
 * @param string $sql
 * @return boolean
 * @global \WPDB $wpdb
 */
function kt_sql_create_sql($tableName, $sql)
{
    /* @var $wpdb \WPDB */
    global $wpdb;
    if (KT::issetAndNotEmpty($tableName) && KT::issetAndNotEmpty($sql)) {
        if (strcasecmp($wpdb->get_var("SHOW TABLES LIKE '{$tableName}'"), $tableName) !== 0) {
            if ($wpdb->query($sql)) {
                return true;
            }
        }
    }
    return false;
}
 private function initPosts()
 {
     $args = array("post_type" => KT_ZZZ_SLIDER_KEY, "post_status" => "publish", "posts_per_page" => self::DEFAULT_COUNT, "orderby" => "menu_order title", "order" => KT_Repository::ORDER_ASC);
     $query = new WP_Query();
     $posts = $query->query($args);
     if (KT::arrayIssetAndNotEmpty($posts)) {
         $this->posts = $posts;
         $this->postsCount = count($posts);
     } else {
         $this->posts = array();
         $this->postsCount = 0;
     }
 }
 /**
  * Vrátí základní fieldset pro číselník
  *
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  *
  * @param string $name
  * @param string $prefix
  * @param KT_Catalog_Model_Base $item
  * @return \KT_Form_Fieldset
  */
 public static function getCatalogBaseFieldset($name, $prefix, $title = null, KT_Catalog_Model_Base $item = null)
 {
     $fieldset = new KT_Form_Fieldset($name, $title);
     $fieldset->setPostPrefix($prefix);
     $fieldset->addText(KT_Catalog_Model_Base::TITLE_COLUMN, __("Název*: ", KT_DOMAIN))->addRule(KT_Field_Validator::REQUIRED, "Název je povinná položka", KT_DOMAIN)->addRule(KT_Field_Validator::MIN_LENGTH, __("Název musí mít alespoň 3 znaky", KT_DOMAIN), 3)->addRule(KT_Field_Validator::MAX_LENGTH, __("Název může mít maximálně 50 znaků", KT_DOMAIN), 50);
     $fieldset->addTextarea(KT_Catalog_Model_Base::DESCRIPTION_COLUMN, __("Popis: ", KT_DOMAIN))->setRows(5)->setTooltip(__("Doplňující údaj informačního charakteru...", KT_DOMAIN));
     $fieldset->addText(KT_Catalog_Model_Base::CODE_COLUMN, __("Kód: ", KT_DOMAIN))->addAttribute("maxlength", 30)->addRule(KT_Field_Validator::MAX_LENGTH, __("Kód může mít maximálně 30 znaků", KT_DOMAIN), 30);
     $fieldset->addSwitch(KT_Catalog_Model_Base::VISIBILITY_COLUMN, __("Viditelnost*: ", KT_DOMAIN))->setValue(KT_Switch_Field::YES)->addRule(KT_Field_Validator::REQUIRED, __("Viditelnost je povinná položka", KT_DOMAIN));
     if (KT::issetAndNotEmpty($item) && $item->isInDatabase()) {
         $fieldset->addHidden(KT_Catalog_Model_Base::ID_COLUMN)->setValue($item->getId());
         $fieldset->setFieldsData($item->getData());
     }
     return $fieldset;
 }
function kt_cron_schedules_metabox_callback()
{
    $schedules = wp_get_schedules();
    if (KT::arrayIssetAndNotEmpty($schedules)) {
        echo "<ol>";
        foreach ($schedules as $key => $values) {
            if (KT::arrayIssetAndNotEmpty($values)) {
                $interval = KT::arrayTryGetValue($values, "interval");
                $display = KT::arrayTryGetValue($values, "display");
                echo "<li><b>{$key}</b> (<i>{$display}</i>) - {$interval} [s]</li>";
            }
        }
        echo "</ol>";
    }
}
 /**
  * Vrátí číslo (v podstatě ID) právě na základě ID property, resp. její číselné přípony
  * 
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  * 
  * @return int
  */
 public function getNumber()
 {
     $id = $this->getId();
     if (KT::issetAndNotEmpty($id)) {
         $parts = explode("-", $id);
         $parts = array_reverse($parts);
         $number = KT::tryGetInt($parts[0]);
         if (KT::isIdFormat($number)) {
             return $number;
         } else {
             return next_widget_id_number($this->getName());
         }
     }
     return 0;
 }
Beispiel #21
0
 /**
  * Ořízně text (řetezec), pokud je delší než požadovaná maximální délka včetně případné přípony
  * 
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  * 
  * @param int $maxLength - požadovaná maxiální délka (ořezu)
  * @param boolean $fromBeginOrEnd - true od začátku, false od konce
  * @param string $suffixPrefix - ukončovácí přípona/předpona navíc (podle parametru $fromBeginOrEnd)
  * @return KT_String
  */
 public function crop($maxLength, $fromBeginOrEnd = true, $suffixPrefix = "...")
 {
     $text = $this->getUnsafeValue();
     $maxLength = KT::tryGetInt($maxLength);
     $currentLength = strlen($text);
     if ($maxLength > 0 && $currentLength > $maxLength) {
         if ($fromBeginOrEnd) {
             $text = mb_substr($text, 0, $maxLength) . $suffixPrefix;
         } else {
             $text = $suffixPrefix . mb_substr($text, $currentLength - $maxLength, $currentLength);
         }
     }
     $this->unsafeValue = $text;
     return $this;
 }
 /**
  * Vrátí HTML strukturu pro zobrazní fieldu
  *
  * @author Tomáš Kocifaj
  * @link http://www.ktstudio.cz
  *
  * @return string
  */
 public function getField()
 {
     $html = "";
     $value = htmlentities($this->getValue());
     $html .= "<input type=\"text\" ";
     $html .= $this->getBasicHtml();
     $html .= " value=\"{$value}\" ";
     if (KT::notIssetOrEmpty($this->getDefaultColor())) {
         $html .= " data-default-color=\"{$this->getDefaultColor()}\"";
     }
     $html .= "/>";
     if ($this->hasErrorMsg()) {
         $html .= parent::getHtmlErrorMsg();
     }
     return $html;
 }
 public function getField()
 {
     $fieldValue = $this->getValue();
     $accept = $this->getAcceptFileTypeString();
     $html = "<input type=\"file\"";
     $html .= $this->getBasicHtml();
     if (KT::issetAndNotEmpty($fieldValue)) {
         $html .= " value=\"{$fieldValue}\" ";
     }
     if (KT::issetAndNotEmpty($accept)) {
         $html .= "accept=\"{$accept}\" ";
     }
     $html .= "/>";
     if ($this->hasErrorMsg()) {
         $html .= parent::getHtmlErrorMsg();
     }
     return $html;
 }
 /**
  * Výpis postů podle zadané query v zadané loopě
  * 
  * @param WP_Query $query
  * @param string $loopName
  * @param mixed int|null $count
  * @param mixed int|null $offset
  */
 protected function theItemsLoops(array $items, $loopName, $count = null, $offset = null)
 {
     if (KT::arrayIssetAndNotEmpty($items)) {
         $index = 0;
         if (KT::tryGetInt($offset) > 0) {
             $items = array_slice($items, $offset);
         }
         if (KT::tryGetInt($count) > 0) {
             $items = array_slice($items, 0, $count);
         }
         foreach ($items as $item) {
             global $post;
             $post = $item;
             include locate_template("loops/loop-{$loopName}.php");
             $index++;
         }
         wp_reset_postdata();
     }
 }
 /**
  * Vrátí HTML strukturu pro zobrazní fieldu
  *
  * @author Tomáš Kocifaj
  * @link http://www.ktstudio.cz
  *
  * @return string
  */
 public function getField()
 {
     $html = "";
     if (KT::notIssetOrEmpty($this->getOptionsData())) {
         return $html = KT_EMPTY_SYMBOL;
     }
     foreach ($this->getOptionsData() as $key => $value) {
         $html .= "<span class=\"input-wrap radio\">";
         $html .= "<input type=\"radio\" ";
         $html .= $this->getBasicHtml($key);
         $html .= " value=\"{$key}\" ";
         if ($key == $this->getValue() && $this->getValue() !== null) {
             $html .= "checked=\"checked\"";
         }
         $html .= "> <span class=\"radio radio-name-{$this->getAttrValueByName("id")} radio-key-{$key} \"><label for=\"{$this->getName()}-{$key}\">{$value}</label></span> ";
         $html .= "</span>";
     }
     if ($this->hasErrorMsg()) {
         $html .= parent::getHtmlErrorMsg();
     }
     return $html;
 }
 /**
  * Vrátí obsah proužku s potvrzením cookie (v patičce)
  * NENÍ POTŘEBA VOLAT VEŘEJNĚ
  *
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  */
 public static function getCookieStatementHtml()
 {
     $cookueStatementKey = KT::arrayTryGetValue($_COOKIE, self::COOKIE_STATEMENT_KEY);
     if (KT::notIssetOrEmpty($cookueStatementKey)) {
         $text = __("Tyto stránky využívají Cookies. Používáním těchto stránek vyjadřujete souhlas s používáním Cookies.", "KT_CORE_DOMAIN");
         $moreInfoTitle = __("Zjistit více", "KT_CORE_DOMAIN");
         $moreInfoUrl = apply_filters("kt_cookie_statement_more_info_url_filter", "https://www.google.com/policies/technologies/cookies/");
         $confirmTitle = __("OK, rozumím", "KT_CORE_DOMAIN");
         $html = "<span id=\"ktCookieStatementText\">{$text}</span>";
         $html .= "<span id=\"ktCookieStatementMoreInfo\"><a href=\"{$moreInfoUrl}\" title=\"{$moreInfoTitle}\" target=\"_blank\">{$moreInfoTitle}</a></span>";
         $html .= "<span id=\"ktCookieStatementConfirm\">{$confirmTitle}</span>";
         $content = apply_filters("kt_cookie_statement_content_filter", $html);
         $output = "<div id=\"ktCookieStatement\">{$content}</div>";
         $output .= "<noscript><style scoped>#ktCookieStatement { display:none; }</style></noscript>";
         return $output;
     }
     return null;
 }
Beispiel #27
0
 /**
  * Vrátí pole s formáty pro bezpečnější práci s daty
  *
  * @author Tomáš Kocifaj
  * @link http://www.ktstudio.cz
  *
  * @return array
  */
 private function getColumnsWithFormatsData()
 {
     $formats = array();
     $columns = array();
     foreach ($this->getColumns() as $column) {
         if ($column->getName() == $this->getPrimaryKeyColumn()) {
             continue;
         }
         $type = $column->getType();
         $value = $column->getValue();
         if ($column->getNullable() && $value == "") {
             $formats[] = "%s";
             $columns[$column->getName()] = "NULL";
             continue;
         }
         switch ($type) {
             case KT_CRUD_Column::INT:
                 $formats[] = "%d";
                 $columns[$column->getName()] = KT::tryGetInt($value);
                 break;
             case KT_CRUD_Column::BIGINT:
                 $formats[] = "%f";
                 $columns[$column->getName()] = floor(KT::tryGetFloat($value));
                 // simulace "long"
                 break;
             case KT_CRUD_Column::FLOAT:
                 $formats[] = "%f";
                 $columns[$column->getName()] = KT::tryGetFloat($value);
                 break;
             case KT_CRUD_Column::DATE:
                 $formats[] = "%s";
                 $columns[$column->getName()] = KT::dateConvert($value, "Y-m-d");
                 break;
             case KT_CRUD_Column::DATETIME:
                 $formats[] = "%s";
                 $columns[$column->getName()] = KT::dateConvert($value, "Y-m-d H:i:s");
                 break;
             default:
                 $formats[] = "%s";
                 $columns[$column->getName()] = $value;
                 break;
         }
     }
     $data = new stdClass();
     $data->formats = $formats;
     $data->columns = $columns;
     return $data;
 }
 /**
  * Vrátí HTML se skupinou (<optgroup>) všech options, které do skupiny patří
  * Jedna z položek $optionGroupData musí mít klíč self::OPTION_GROUP_KEY
  * hodnota na tomto klíči bude použitá jako label celé kolekce
  * 
  * @author Tomáš Kocifaj
  * @link http:://www.ktstudio.cz
  * 
  * @param array $optionGroupData
  * @return string
  */
 protected function getOptionsGroupContent(array $optionGroupData = array())
 {
     $html = "";
     if (!KT::arrayIssetAndNotEmpty($optionGroupData)) {
         return $html;
     }
     if (array_key_exists(self::OPTION_GROUP_NAME, $optionGroupData)) {
         $groupLable = $optionGroupData[self::OPTION_GROUP_NAME];
         unset($optionGroupData[self::OPTION_GROUP_NAME]);
     } else {
         return $html;
     }
     $html .= "<optgroup label=\"{$groupLable}\">";
     foreach ($optionGroupData as $optionKey => $optionValue) {
         $html .= $this->getSignleOptionItem($optionKey, $optionValue);
     }
     $html .= "</optgroup>";
     return $html;
 }
 private function theColumn($postId, $args)
 {
     $columnType = $args[self::TYPE_PARAM_KEY];
     switch ($columnType) {
         case self::THUMBNAIL_TYPE_KEY:
             if (has_post_thumbnail($postId)) {
                 the_post_thumbnail($args[self::SIZE_PARAM_KEY]);
             } else {
                 echo KT_EMPTY_SYMBOL;
             }
             break;
         case self::POST_PROPERTY_TYPE_KEY:
             $post = get_post($postId);
             if (KT::issetAndNotEmpty($post)) {
                 $property = $args[self::PROPERTY_PARAM_KEY];
                 $value = $post->{$property};
                 $filterFunction = KT::arrayTryGetValue($args, self::FILTER_FUNCTION);
                 if (KT::issetAndNotEmpty($filterFunction)) {
                     $value = apply_filters("{$filterFunction}", $value);
                 }
                 echo $value;
             } else {
                 echo KT_EMPTY_SYMBOL;
             }
             break;
         case self::POST_META_TYPE_KEY:
             $postMeta = get_post_meta($postId, $args[self::METAKEY_PARAM_KEY], true);
             if (isset($postMeta)) {
                 $value = $postMeta;
                 $filterFunction = KT::arrayTryGetValue($args, self::FILTER_FUNCTION);
                 if (KT::issetAndNotEmpty($filterFunction)) {
                     $value = apply_filters($filterFunction, $value);
                 }
                 echo $value;
             } else {
                 echo KT_EMPTY_SYMBOL;
             }
             break;
         case self::TAXONOMY_TYPE_KEY:
             $postType = get_post_type($postId);
             $terms = get_the_terms($postId, $args[self::TAXONOMY_PARAM_KEY]);
             if (!empty($terms)) {
                 foreach ($terms as $term) {
                     $href = "edit.php?post_type={$postType}&{$args[self::TAXONOMY_PARAM_KEY]}={$term->slug}";
                     $name = esc_html(sanitize_term_field("name", $term->name, $term->term_id, $args[self::TAXONOMY_PARAM_KEY], "edit"));
                     $post_terms[] = '<a href="' . $href . '">' . $name . '</a>';
                 }
                 echo join(", ", $post_terms);
             } else {
                 echo KT_EMPTY_SYMBOL;
             }
             break;
         default:
             throw new KT_Not_Supported_Exception(sprintf(__("Typ sloupce: %s", "KT_CORE_DOMAIN"), $columnType));
     }
 }
 /**
  * Na základě předaných parametrů zhotoví <a> tag, který odkazuje na large velikost
  * 
  * @author Tomáš Kocifaj
  * @link http://www.ktstudio.cz 
  * 
  * @param array $large // data obrázku wp_get_attachment_image_src()
  * @param array $attr // atributy obrázky
  * @param string $title // attribut title
  * @return string
  */
 private function getLinkTagToLargeImage(array $large, array $attr = array(), $title)
 {
     if (KT::issetAndNotEmpty($attr) && is_array($attr)) {
         foreach ($attr as $attrName => $attrValue) {
             $htmlAttr = " {$attrName} = \"{$attrValue}\" ";
         }
     }
     return $html = "<a href=\"{$large[0]}\" title=\"{$title}\" class=\"{$this->getLinkClass()}\" {$htmlAttr} >";
 }