Ejemplo n.º 1
0
 /**
  * Výchozí callback MetaBoxu, který zpracuje zpracování dat a zobrazení formuláře, či vyvolá dále vlastní callback
  * Pozn.: není třeba volat "ručně", jedná se o automatickou systémovou funkci
  *
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  *
  * @param WP_Post|null $post
  * @param array $args
  * @throws KT_Not_Implemented_Exception
  */
 public function metaboxCallback($post, $args)
 {
     $dataType = $this->getDataType();
     $currentValue = $dataType->getCurrentValue();
     $fieldset = $args["args"][0];
     $form = null;
     if (KT::issetAndNotEmpty($fieldset) && $fieldset instanceof KT_Form_Fieldset) {
         $fieldset->setTitle("");
         $form = new KT_Form();
         $form->addFieldsetByObject($fieldset);
         if ($form->isFormSend()) {
             $form->validate();
         }
     }
     switch ($currentValue) {
         case KT_MetaBox_Data_Type_Enum::POST_META:
             $form->loadDataFromPostMeta($post->ID);
             break;
         case KT_MetaBox_Data_Type_Enum::COMMENT_META:
             $form->loadDataFromCommentMeta($post->comment_ID);
             break;
         case KT_MetaBox_Data_Type_Enum::OPTIONS:
             $form->loadDataFromOptions();
             break;
         case KT_MetaBox_Data_Type_Enum::CRUD:
             $crudInstance = $this->getCrudInstance();
             if (KT::issetAndNotEmpty($crudInstance)) {
                 foreach ($form->getFieldsets() as $fieldset) {
                     $postPrefix = $fieldset->getPostPrefix();
                     if (KT::issetAndNotEmpty($postPrefix)) {
                         $fieldset->setFieldsData($crudInstance->getData());
                     } else {
                         throw new KT_Not_Implemented_Exception(__("Zatím jsou podporované pouze formuláře se zadaným PostPrefixem", "KT_CORE_DOMAIN"));
                     }
                 }
             }
             break;
         case KT_MetaBox_Data_Type_Enum::CUSTOM:
             $customCallback = $this->getCustomCallback();
             call_user_func_array("{$customCallback}", array($post, $form ?: $args));
             return;
         default:
             throw new KT_Not_Implemented_Exception(sprintf(__("Datový typ MetaBoxu: %s", "KT_CORE_DOMAIN"), $currentValue));
     }
     echo $form->getInputsToTable();
 }