/**
  * 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>";
     }
 }
Exemple #26
0
<?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;
 }
Exemple #28
0
 /**
  * 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;
 }