コード例 #1
0
 public function addColumns($defaults)
 {
     global $typenow;
     $postType = KT::arrayTryGetValue($_REQUEST, "post_type") ?: $typenow;
     if ($this->postType == $postType) {
         $columns = array();
         $indexes = array();
         foreach ($this->columns as $key => $args) {
             $columns[$key] = $args[self::LABEL_PARAM_KEY];
             $index = KT::tryGetInt($args[self::INDEX_PARAM_KEY]);
             if (is_numeric($index) && $index >= 0) {
                 $indexes[$key] = $index;
             }
         }
         $defaults = array_merge($defaults, $columns);
         foreach ($indexes as $key => $index) {
             // případné repozicování na základě zadaných indexů
             $column = $defaults[$key];
             // mezipaměť pro vložení
             $defaults = KT::arrayRemoveByKey($defaults, $key);
             // odstranění ze současné pozice
             $defaults = KT::arrayInsert($defaults, $index, $key, $column);
             // nová požadovaná pozice
         }
     }
     return $defaults;
 }
コード例 #2
0
 /**
  * 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;
 }
コード例 #3
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;
 }
コード例 #4
0
 /**
  * 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();
     }
 }
コード例 #5
0
 /**
  * Základní presenter pro práci s daty postu
  * 
  * @author Tomáš Kocifaj
  * @link http://www.ktstudio.cz
  *
  * @param KT_Modelable|WP_Post $item
  * @param int $otherPostsLimit
  * 
  * @return \kt_post_type_presenter_base
  */
 function __construct($item = null, $otherPostsLimit = self::DEFAULT_OTHER_POSTS_LIMIT)
 {
     if (KT::issetAndNotEmpty($item)) {
         if ($item instanceof KT_Postable) {
             parent::__construct($item);
         } elseif ($item instanceof WP_Post) {
             /**
              * Kvůli zpětné kompatibilitě, časem bude zrušeno -> používejte modely...
              */
             parent::__construct(new KT_WP_Post_Base_Model($item));
             if (is_singular($item->post_type)) {
                 static::singularDetailPostProcess();
             }
         } else {
             throw new KT_Not_Supported_Exception("KT WP Post Base Presenter - Type of {$item}");
         }
     } else {
         parent::__construct();
     }
     $this->otherPostsLimit = KT::tryGetInt($otherPostsLimit);
 }
コード例 #6
0
 /**
  * Nastaví HTML parametr tabindex fieldu
  * 
  * @author Tomáš Kocifaj
  * @link http://www.ktstudio.cz
  * 
  * @param type $tabindex
  * @return \KT_Field
  */
 public function setTabindex($tabindex)
 {
     $tabindex = KT::tryGetInt($tabindex);
     if (KT::isIdFormat($tabindex)) {
         $this->addAttribute("tabindex", $tabindex);
     }
     return $this;
 }
コード例 #7
0
 /**
  * Nastaví, kolik celkových výsledků bylo při nastavené dotazu zjištěno.
  * 
  * @author Tomáš Kocifaj
  * @link http://www.ktstudio.cz
  * 
  * @param int $countItems
  * @return \KT_Repository
  */
 protected function setCountItems($countItems)
 {
     if (KT::isIdFormat($countItems)) {
         $countItems = KT::tryGetInt($countItems);
         $this->countItems = $countItems;
     }
     return $this;
 }
コード例 #8
0
 /**
  * Nastavení (vlastní) sanatizační kód pro hodnotu(y) (výpis)
  * 
  * @author Matin Hlaváč
  * @link http://www.ktstudio.cz
  * 
  * @param int $code
  * @return \KT_Field
  */
 public function setFilterSanitize($code)
 {
     $this->filterSanitize = KT::tryGetInt($code);
     return $this;
 }
コード例 #9
0
 /**
  * Nastaví (povinné volitelné) pořadí (pokud je používáno)
  *
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  *
  * @param string $menuOrder
  * @return \KT_Catalog_Model_Base
  * @throws KT_Not_Set_Argument_Exception
  */
 public function setMenuOrder($menuOrder)
 {
     $menuOrder = KT::tryGetInt($menuOrder);
     if (is_integer($menuOrder)) {
         $this->addNewColumnValue(self::MENU_ORDER_COLUMN, $menuOrder);
         return $this;
     }
     throw new KT_Not_Set_Argument_Exception("menu_order");
 }
コード例 #10
0
 /**
  * Povolí aplikaci automatická verze - vhodné pro cachování
  * Pozor: pokud není aktivní cachování, tak hrozí zpomalení potencionálně v řádu desítek až stovek milisekund s každým souborem, především pro externí soubory mimo vlastní server
  * Pozn.: aplikuje se pouze, pokud není zadána verze explicitně
  * Pozn.: pro cachování využívá cookies nebo zadejte NULL (= bez cache)
  * 
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  * 
  * @param mixed int|null $expiration
  * @return \kt_wp_script_handle
  */
 public function enableAutoVersion($expiration = self::DEFAULT_VERSION_EXPIRATION)
 {
     $this->isAutoVersion = true;
     $this->autoVersionExpiration = KT::tryGetInt($expiration);
     return $this;
 }
コード例 #11
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;
 }
コード例 #12
0
 private function setCategoryId($value)
 {
     $this->categoryId = KT::tryGetInt($value);
     return $this;
 }
コード例 #13
0
 /**
  * Výpis postů podle zadané query v zadané loopě
  * 
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  * 
  * @param array $items
  * @param string $loopName
  * @param mixed int|null $count
  * @param mixed int|null $offset
  * @param array $clearfixes pole clearfixů k printu podle klíče (modulo)
  */
 public static function theItemsLoops(array $items, $loopName, $count = null, $offset = null, array $clearfixes = null)
 {
     if (KT::arrayIssetAndNotEmpty($items)) {
         $isClearfixes = KT::arrayIssetAndNotEmpty($clearfixes);
         self::$currentItemsLoopIndex = 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");
             self::$currentItemsLoopIndex++;
             if ($isClearfixes) {
                 self::theClearfixes($clearfixes, self::$currentItemsLoopIndex);
             }
         }
         self::$currentItemsLoopIndex = null;
         wp_reset_postdata();
     }
 }
コード例 #14
0
 /**
  * Nastaví minimální povolený level
  * 
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz 
  * 
  * @param int $minLevel
  */
 public static function setMinLevel($minLevel)
 {
     self::$minLevel = KT::tryGetInt($minLevel);
 }
コード例 #15
0
ファイル: kt.inc.php プロジェクト: ktstudio/wp-framework
 /**
  * Vrátí časové pásmo, resp. časovou zónu zadanou v administraci (cachovanou per request)
  * 
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  * 
  * @return int
  */
 public static function dateGmtOffset()
 {
     $dateGmtOffset = self::$dateGmtOffset;
     if (isset($dateGmtOffset)) {
         return $dateGmtOffset;
     }
     return self::$dateGmtOffset = KT::tryGetInt(get_option("gmt_offset"));
 }
コード例 #16
0
 /**
  * Vratí seřazené pole s odeslanými hodnoty
  * @return array
  */
 private function prepareValue()
 {
     $finalValue = [];
     // Počet vygenerovaných fieldů uživatelem
     $count = KT::tryGetInt($this->getCoutField()->getValue());
     for ($i = 0; $i < $count; $i++) {
         // Vygenerování příslušného fieldsetu
         $fieldset = $this->getFieldset();
         $postPrefix = $fieldset->getName() . "-" . $i;
         $fieldset->setPostPrefix($postPrefix);
         // Kontrola odelasní dat
         if (!isset($_REQUEST[$postPrefix])) {
             continue;
         }
         //Sběr dat
         $fieldsetValues = [];
         foreach ($fieldset->getFields() as $field) {
             $fieldsetValues[$field->getName()] = $field->getValue();
         }
         $finalValue[] = $fieldsetValues;
     }
     return $finalValue;
 }
コード例 #17
0
 /**
  * Založení základního presenteru pro výpis komentářů postu
  * 
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  * 
  * @param int $postId
  */
 public function __construct($postId)
 {
     parent::__construct();
     $this->postId = KT::tryGetInt($postId);
 }
コード例 #18
0
 /**
  * Provede odstraní všech zadaných head hodnot
  * Pozn.: netřeba volat veřejně - provede se automaticky v rámci @see \KT_WP_Configurator
  * 
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  * 
  * @return \KT_WP_Head_Remover_Configurator
  */
 public function doRemoveHeads()
 {
     foreach ($this->getHeadRemoverData() as $head => $args) {
         if (KT::arrayIssetAndNotEmpty($args)) {
             $priority = KT::arrayTryGetValue($args, "priority");
             if (KT::tryGetInt($priority)) {
                 $params = KT::arrayTryGetValue($args, "params");
                 if (KT::tryGetInt($priority)) {
                     remove_action("wp_head", "{$head}", $priority, $params);
                 } else {
                     remove_action("wp_head", "{$head}", $priority);
                 }
             }
         } else {
             remove_action("wp_head", "{$head}");
         }
     }
 }
コード例 #19
0
 /**
  * Nastavení délku excreptu pří výpisu entit.
  *
  * @author Tomáš Kocifaj
  * @link http://www.ktstudio.cz
  *
  * @param int $excerptLenght
  * @return \KT_WP_Configurator
  */
 public function setExcerptLength($excerptLenght)
 {
     $excerptLenght = KT::tryGetInt($excerptLenght);
     if (KT::issetAndNotEmpty($excerptLenght)) {
         $this->excerptLength = $excerptLenght;
     }
     return $this;
 }
コード例 #20
0
 /**
  * Nastaví pořadí sloupce v tabulce zařeno 1,2,3...n
  *  
  * @author Tomáš Kocifaj
  * @link www.ktstduio.cz
  * 
  * @param int $position
  * @return \KT_CRUD_Admin_Column
  */
 public function setPosition($position)
 {
     if (!KT::tryGetInt($position)) {
         throw new InvalidArgumentException("position have to by an int type");
     }
     $this->position = KT::tryGetInt($position);
     return $this;
 }