/** * 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; }
/** * Označení zda jsou komentáře povoleny (obecně i pro příspěvek) * * @author Martin Hlaváč * @link http://www.ktstudio.cz * * @return boolean */ public function getCommentsEnabled() { if (KT::issetAndNotEmpty($this->commentsEnabled)) { return $this->commentsEnabled; } return $this->commentsEnabled = comments_open($this->getPostId()) && post_type_supports(KT_PRODUCT_KEY, "comments") && !post_password_required($this->getPost()); }
/** * @return array */ public function getOptionsData() { if (KT::issetAndNotEmpty($this->dataManager)) { return $this->getDataManager()->getData(); } return array(); }
/** * Nastaví textarea počet sloupců attr cols="" * * @author Tomáš Kocifaj * @link http://www.ktstudio.cz * * @param int $cols * @return \KT_Textarea_Field */ public function setCols($cols) { if (KT::issetAndNotEmpty($cols)) { $this->addAttribute("cols", $cols); } return $this; }
/** * Zruší head na základě názvu a případných argumentů * * @author Martin Hlaváč * @link http://www.ktstudio.cz * * @param string $headName * @param array $args * * @return \KT_WP_Head_Remover_Configurator */ public function removeHead($headName, array $args = null) { if (KT::issetAndNotEmpty($headName)) { $this->data["{$headName}"] = $args; } return $this; }
/** * 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; }
/** * @return \KT_Log_Level_Enum */ public function getLevel() { $level = $this->level; if (KT::issetAndNotEmpty($level)) { return $level; } return $this->level = new KT_Log_Level_Enum($this->getLevelId()); }
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>"; } }
/** * @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"); }
/** * Výpis postů podle zadané query v zadané loopě * * @param WP_Query $query * @param string $loopName */ protected function theQueryLoops(WP_Query $query, $loopName) { if (KT::issetAndNotEmpty($query) && $query->have_posts()) { while ($query->have_posts()) { $query->the_post(); global $post; include locate_template("loops/loop-" . $loopName . ".php"); } wp_reset_postdata(); } }
/** * 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; }
/** * 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; }
/** * 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; }
/** * Výpis postů podle zadané query v zadané loopě * * @author Martin Hlaváč * @link http://www.ktstudio.cz * * @param WP_Query $query * @param string $loopName * @param array $clearfixes pole clearfixů k printu podle klíče (modulo) */ public static function theQueryLoops(WP_Query $query, $loopName, array $clearfixes = null) { if (KT::issetAndNotEmpty($query) && $query->have_posts()) { $isClearfixes = KT::arrayIssetAndNotEmpty($clearfixes); self::$currentQueryLoopIndex = 0; while ($query->have_posts()) { $query->the_post(); global $post; include locate_template("loops/loop-" . $loopName . ".php"); self::$currentQueryLoopIndex++; if ($isClearfixes) { self::theClearfixes($clearfixes, self::$currentQueryLoopIndex); } } self::$currentQueryLoopIndex = null; wp_reset_postdata(); } }
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; }
/** * Provede registraci všech scriptů, které byly přidáno do assetConfigurátoru * NENÍ POTŘEBA VOLAT VEŘEJNĚ * * @author Tomáš Kocifaj * @link http://www.ktstudio.cz */ public function registerScriptsAction() { if (KT::notIssetOrEmpty($this->getAssetsConfigurator()->getScriptCollection())) { return; } foreach ($this->getAssetsConfigurator()->getScriptCollection() as $script) { /* @var $script \KT_WP_Script_Definition */ if (KT::notIssetOrEmpty($script->getId()) || KT::notIssetOrEmpty($script->getSource())) { continue; } wp_register_script($script->getId(), $script->getSource(), $script->getDeps(), $script->getVersion(), $script->getInFooter()); if (KT::issetAndNotEmpty($script->getLocalizationData())) { foreach ($script->getLocalizationData() as $name => $data) { wp_localize_script($script->getId(), $name, $data); } } } }
/** * Provede update řádku na základě setWhere clausule * updatuje všechny parametry v $this->data * * @author Tomáš Kocifaj * @link http://www.ktstudio.cz * * @return mixed int | false */ private function updateRow() { if (!$this->isInDatabase()) { return; } global $wpdb; $updateValue = $this->getColumnsWithFormatsData(); // Povolení filtru, který ze "NULL" strinogové hodnoty udělá v SQL dotazu běžný NULL pro nullable sloupce add_filter("query", array($this, "nullUpdateFilterCallback")); $sql = $wpdb->update($this->getTable(), $updateValue->columns, array($this->getPrimaryKeyColumn() => $this->getId()), $updateValue->formats); remove_filter("query", array($this, "nullUpdateFilterCallback")); // Zrušení předešlého filtru if ($sql) { return $sql; } if (KT::issetAndNotEmpty($wpdb->last_error)) { $this->addError("Došlo k chybě při změně dat v DB", $wpdb->last_error); return false; } return true; // nedošlo ke změnám }
/** * Připraví html content s <option> pro výběr selectu * * @author Tomáš Kocifaj * @link http://www.ktstudio.cz * * @return string */ public function getOptionsContent() { $html = ""; $emptyOption = "<option value=\"\">" . $this->getFirstEmpty() . "</option>"; if (KT::issetAndNotEmpty($this->getFirstEmpty())) { $html .= $emptyOption; } foreach ($this->getOptionsData() as $optionKey => $optionValue) { if (KT::arrayIssetAndNotEmpty($optionValue)) { $html .= $this->getOptionsGroupContent($optionValue); } else { $html .= $this->getSignleOptionItem($optionKey, $optionValue); } } 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} >"; }
public function __construct(array $data = array()) { if (KT::issetAndNotEmpty($data)) { $this->setData($data); } }
private function theSocialListItem($url, $title, $class) { if (KT::issetAndNotEmpty($url) && KT::issetAndNotEmpty($title) && KT::issetAndNotEmpty($class)) { echo "<li><a href=\"{$url}\" title=\"{$title}\" target=\"_blank\" class=\"{$class}\">{$title}</a></li>"; } }
<?php if (KT::issetAndNotEmpty($post)) { $frontPagePresenter = new KT_WP_Post_Base_Presenter($post); $frontPageModel = $frontPagePresenter->getModel(); ?> <section id="front-page"> <header> <h1><?php echo $frontPageModel->getTitle(); ?> </h1> </header> <?php if ($frontPageModel->hasExcerpt()) { echo $frontPageModel->getExcerpt(); } echo $frontPageModel->getContent(); ?> </section> <?php }
protected function getPasword(array $values) { $form = $this->getForm(); $password = KT::arrayTryGetValue($values, KT_User_Profile_Config::PASSWORD); if (KT::issetAndNotEmpty($password)) { $fieldset = $form->getFieldSetByName(KT_User_Profile_Config::USER_PROFILE_FIELDSET); $passwordConfirm = KT::arrayTryGetValue($values, KT_User_Profile_Config::PASSWORD_CONFIRM); if (KT::issetAndNotEmpty($passwordConfirm)) { if ($password === $passwordConfirm) { // OK return $password; } else { // hesla se nerovnají $passwordConfirmField = $fieldset->getFieldByName(KT_User_Profile_Config::PASSWORD_CONFIRM); $passwordConfirmField->setErrorMsg("Heslo a jeho potvrzení musejí být stejné."); $form->setError(true); } } else { // heslo je zadané, ale potvrzení ne $passwordField = $fieldset->getFieldByName(KT_User_Profile_Config::PASSWORD); $passwordField->setErrorMsg("Pro změnu hesla musí být zadané heslo i jeho potvrzení."); $form->setError(true); } } return null; }
/** * Vrací pole ve tvaru klíč (název) => hodnota podle konstant a vlastních hodnot a klíčů * * @author Martin Hlaváč * @link http://www.ktstudio.cz * * @return array */ public final function getAllKeyValues() { $values = array(); $customKeyValues = $this->getCustomKeyValues(); if (KT::issetAndNotEmpty($customKeyValues) && count($customKeyValues) > 0) { foreach ($customKeyValues as $key => $value) { $values[$key] = $value; } } $reflectionClass = new ReflectionClass(get_class($this)); foreach ($reflectionClass->getConstants() as $key => $value) { $values[$key] = $value; } return $values; }
/** * Přidá jednu class do HTML attr CLASS danému elementu * * @author Tomáš Kocifaj * * @param string $class * @return \KT_HTML_Tag_Base */ public function addAttrClass($class) { $classes = explode(" ", $class); if (KT::issetAndNotEmpty($classes)) { $currentClasses = $this->getClasses(); $newClasses = array_merge($classes, $currentClasses); $this->setClasses($newClasses); return $this; } if (array_key_exists(self::CLASS_KEY, $this->attributes)) { array_push($this->attributes[self::CLASS_KEY], $class); return $this; } $this->attributes[self::CLASS_KEY][] = $class; return $this; }
/** * Zkontroluje, zda požadované role uživatelů je ve WP zavedena. * Pokud ano, všechny je stáhne a vrátí je v poli potřeném pro * funkce s výpisem <optin> kolekce * * Pokud požadovaná role není v rámci Wordpress registrovná, vrátí automaticky prázdné pole * * @author Tomáš Kocifaj * @link http://www.ktstudio.cz * * @param string $role * @return string */ private function getUsersByRole($role) { if (!in_array($role, array_keys($this->getAllUserRoles()))) { return array(); } $userQueryParams = array("role" => $role, "fields" => array("ID", "display_name", "user_login")); $userMetaQuery = $this->getUserMetaQuery(); if (KT::issetAndNotEmpty($userMetaQuery) && is_array($userMetaQuery) && count($userMetaQuery) > 0) { $userQueryParams["meta_query"] = $userMetaQuery; } $userQuery = new WP_User_Query($userQueryParams); return $userQuery->results; }