/** * 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; }
/** * 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; }
/** * 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} >"; }