/**
  * replace the post gallery with unite gallery
  */
 function unitegallery_postgallery($output = '', $atts, $content = false, $tag = false)
 {
     $alias = UniteFunctionsUG::getVal($atts, "unitegallery");
     if (empty($alias)) {
         return $output;
     }
     $ids = UniteFunctionsUG::getVal($atts, "ids");
     if (empty($ids)) {
         return $output;
     }
     //get items
     $arrIDs = explode(",", $ids);
     $arrItems = UniteFunctionsWPUG::getArrItemsFromAttachments($arrIDs);
     //output gallery
     $objItems = new UniteGalleryItems();
     $arrUniteItems = $objItems->getItemsFromArray($arrItems);
     $content = HelperUG::outputGallery($alias, null, "alias", $arrUniteItems);
     return $content;
 }
 /**
  * run client ajax actions
  */
 function onClientAjaxActions()
 {
     $action = UniteFunctionsUG::getPostGetVariable("action");
     if ($action != "unitegallery_ajax_action") {
         echo "nothing here";
         exit;
     }
     $clientAction = UniteFunctionsUG::getPostGetVariable("client_action");
     $objItems = new UniteGalleryItems();
     $galleryHtmlID = UniteFunctionsUG::getPostVariable("galleryID");
     $data = UniteFunctionsUG::getPostVariable("data");
     if (empty($data)) {
         $data = array();
     }
     $data["galleryID"] = HelperGalleryUG::getGalleryIDFromHtmlID($galleryHtmlID);
     try {
         switch ($clientAction) {
             case "front_get_cat_items":
                 $html = $objItems->getHtmlFrontFromData($data);
                 $output = array("html" => $html);
                 HelperUG::ajaxResponseData($output);
                 break;
             default:
                 HelperUG::ajaxResponseError("wrong ajax action: <b>{$action}</b> ");
                 break;
         }
     } catch (Exception $e) {
         $message = $e->getMessage();
         $errorMessage = $message;
         if (GlobalsUG::SHOW_TRACE == true) {
             $trace = $e->getTraceAsString();
             $errorMessage = $message . "<pre>" . $trace . "</pre>";
         }
         HelperUG::ajaxResponseError($errorMessage);
     }
     //it's an ajax action, so exit
     HelperUG::ajaxResponseError("No response output on <b> {$action} </b> action. please check with the developer.");
     exit;
 }
 /**
  * 
  * onAjax action handler
  */
 public static function onAjaxAction()
 {
     $actionType = UniteFunctionsUG::getPostGetVariable("action");
     if ($actionType != "unitegallery_ajax_action") {
         return false;
     }
     $gallery = new UniteGalleryGallery();
     $galleries = new UniteGalleryGalleries();
     $categories = new UniteGalleryCategories();
     $items = new UniteGalleryItems();
     $operations = new UGOperations();
     $action = UniteFunctionsUG::getPostGetVariable("client_action");
     $data = UniteFunctionsUG::getPostVariable("data");
     $data = UniteProviderFunctionsUG::normalizeAjaxInputData($data);
     $galleryType = UniteFunctionsUG::getPostVariable("gallery_type");
     $urlGalleriesView = HelperUG::getGalleriesView();
     try {
         switch ($action) {
             case "gallery_actions":
                 $galleryID = UniteFunctionsUG::getVal($data, "galleryID");
                 $galleryAction = UniteFunctionsUG::getVal($data, "gallery_action");
                 $galleryData = UniteFunctionsUG::getVal($data, "gallery_data", array());
                 self::onGalleryAjaxAction($galleryType, $galleryAction, $galleryData, $galleryID);
                 break;
             case "get_thumb_url":
                 $urlImage = UniteFunctionsUG::getVal($data, "urlImage");
                 $imageID = UniteFunctionsUG::getVal($data, "imageID");
                 $urlThumb = $operations->getThumbURLFromImageUrl($urlImage, $imageID);
                 $arrData = array("urlThumb" => $urlThumb);
                 HelperUG::ajaxResponseData($arrData);
                 break;
             case "add_category":
                 $catData = $categories->addFromData();
                 HelperUG::ajaxResponseData($catData);
                 break;
             case "remove_category":
                 $response = $categories->removeFromData($data);
                 HelperUG::ajaxResponseSuccess(__("The category deleted successfully.", UNITEGALLERY_TEXTDOMAIN), $response);
                 break;
             case "update_category":
                 $categories->updateFromData($data);
                 HelperUG::ajaxResponseSuccess(__("Category updated.", UNITEGALLERY_TEXTDOMAIN));
                 break;
             case "update_cat_order":
                 $categories->updateOrderFromData($data);
                 HelperUG::ajaxResponseSuccess(__("Order updated.", UNITEGALLERY_TEXTDOMAIN));
                 break;
             case "add_item":
                 $itemData = $items->addFromData($data);
                 HelperUG::ajaxResponseData($itemData);
                 break;
             case "get_item_data":
                 $response = $items->getItemData($data);
                 HelperUG::ajaxResponseData($response);
                 break;
             case "update_item_data":
                 $response = $items->updateItemData($data);
                 HelperUG::ajaxResponseSuccess(__("Item data updated!", UNITEGALLERY_TEXTDOMAIN), $response);
                 break;
             case "remove_items":
                 $response = $items->removeItemsFromData($data);
                 HelperUG::ajaxResponseSuccess(__("Items Removed", UNITEGALLERY_TEXTDOMAIN), $response);
                 break;
             case "get_cat_items":
                 $responeData = $items->getCatItemsHtmlFromData($data);
                 //update category param if inside gallery
                 $gallery->updateItemsCategoryFromData($data);
                 HelperUG::ajaxResponseData($responeData);
                 break;
             case "update_item_title":
                 $items->updateItemTitleFromData($data);
                 HelperUG::ajaxResponseSuccess(__("Item Title Updated", UNITEGALLERY_TEXTDOMAIN));
                 break;
             case "duplicate_items":
                 $response = $items->duplicateItemsFromData($data);
                 HelperUG::ajaxResponseSuccess(__("Items Duplicated", UNITEGALLERY_TEXTDOMAIN), $response);
                 break;
             case "update_items_order":
                 $items->saveOrderFromData($data);
                 HelperUG::ajaxResponseSuccess(__("Order Saved", UNITEGALLERY_TEXTDOMAIN));
                 break;
             case "copy_move_items":
                 $response = $items->copyMoveItemsFromData($data);
                 HelperUG::ajaxResponseSuccess(__("Done Operation", UNITEGALLERY_TEXTDOMAIN), $response);
                 break;
             case "create_gallery":
                 $galleryID = $galleries->addGaleryFromData($galleryType, $data);
                 $urlView = HelperUG::getGalleryView($galleryID);
                 HelperUG::ajaxResponseSuccessRedirect(__("Gallery Created", UNITEGALLERY_TEXTDOMAIN), $urlView);
                 break;
             case "delete_gallery":
                 $galleries->deleteGalleryFromData($data);
                 HelperUG::ajaxResponseSuccessRedirect(__("Gallery deleted", UNITEGALLERY_TEXTDOMAIN), $urlGalleriesView);
                 break;
             case "update_gallery":
                 $galleries->updateGalleryFromData($data);
                 HelperUG::ajaxResponseSuccess(__("Gallery Updated"));
                 break;
             case "duplicate_gallery":
                 $galleries->duplicateGalleryFromData($data);
                 HelperUG::ajaxResponseSuccessRedirect(__("Gallery duplicated", UNITEGALLERY_TEXTDOMAIN), $urlGalleriesView);
                 break;
             case "update_plugin":
                 if (method_exists("UniteProviderFunctionsUG", "updatePlugin")) {
                     UniteProviderFunctionsUG::updatePlugin();
                 } else {
                     echo "Functionality Don't Exists";
                 }
                 break;
             case "export_gallery_settings":
                 $galleryID = UniteFunctionsUG::getPostGetVariable("galleryid");
                 $galleries->exportGallerySettings($galleryID);
                 break;
             case "import_gallery_settings":
                 $galleryID = UniteFunctionsUG::getPostGetVariable("galleryid");
                 $galleries->importGallerySettingsFromUploadFile($galleryID);
                 break;
             default:
                 HelperUG::ajaxResponseError("wrong ajax action: <b>{$action}</b> ");
                 break;
         }
     } catch (Exception $e) {
         $message = $e->getMessage();
         $errorMessage = $message;
         if (GlobalsUG::SHOW_TRACE == true) {
             $trace = $e->getTraceAsString();
             $errorMessage = $message . "<pre>" . $trace . "</pre>";
         }
         HelperUG::ajaxResponseError($errorMessage);
     }
     //it's an ajax action, so exit
     HelperUG::ajaxResponseError("No response output on <b> {$action} </b> action. please check with the developer.");
     exit;
 }
 /**
  * 
  * add item to database from data, init the item on the way by the record.
  * return item id
  */
 public function add($data)
 {
     $catID = UniteFunctionsUG::getVal($data, "catID");
     $type = UniteFunctionsUG::getVal($data, "type");
     $params = "";
     $urlImage = UniteFunctionsUG::getVal($data, "urlImage");
     $urlImage = HelperUG::URLtoRelative($urlImage);
     $urlThumb = UniteFunctionsUG::getVal($data, "urlThumb");
     $urlThumb = HelperUG::URLtoRelative($urlThumb);
     //get max items order
     $items = new UniteGalleryItems();
     $maxOrder = $items->getMaxOrder($catID);
     $arrInsert = array();
     $arrInsert["type"] = $type;
     $arrInsert["published"] = 1;
     $arrInsert["ordering"] = $maxOrder + 1;
     $arrInsert["catid"] = $catID;
     $arrInsert["url_image"] = $urlImage;
     $arrInsert["url_thumb"] = $urlThumb;
     $arrParams = array();
     switch ($type) {
         case self::TYPE_IMAGE:
             $urlImage = UniteFunctionsUG::getVal($data, "urlImage");
             $arrInsert["catid"] = $catID;
             //set params
             $title = HelperUG::getTitleFromUrl($urlImage, $this->itemTitleBase);
             $imageID = UniteFunctionsUG::getVal($data, "imageID", 0);
             $arrInsert["imageid"] = $imageID;
             //get title from attachment
             if (!empty($imageID)) {
                 $data = null;
                 if (method_exists("UniteProviderFunctionsUG", "getImageDataFromImageID")) {
                     $data = UniteProviderFunctionsUG::getImageDataFromImageID($imageID);
                 }
                 //set title from image meta
                 $dataTitle = UniteFunctionsUG::getVal($data, "title");
                 if (!empty($dataTitle)) {
                     $title = $dataTitle;
                 }
                 //set decription from image meta
                 $dataDesc = UniteFunctionsUG::getVal($data, "description");
                 if (!empty($dataDesc)) {
                     $arrParams["ug_item_description"] = $dataDesc;
                 }
             }
             break;
         default:
             //add media item
             $title = UniteFunctionsUG::getVal($data, "title");
             $arrInsert = $this->getAddDataFromMedia($data, $arrInsert);
             break;
     }
     UniteFunctionsUG::validateNotEmpty($title, "title");
     $arrInsert["title"] = $title;
     //add params
     $arrParamsExisting = UniteFunctionsUG::getVal($arrInsert, "params");
     if (is_array($arrParamsExisting)) {
         $arrParams = array_merge($arrParams, $arrParamsExisting);
     }
     $jsonParams = json_encode($arrParams);
     $arrInsert["params"] = $jsonParams;
     //insert the category
     $itemID = $this->db->insert(GlobalsUG::$table_items, $arrInsert);
     $arrInsert["id"] = $itemID;
     $this->initByDBRecord($arrInsert);
     return $itemID;
 }
    /**
     * 
     * put the gallery
     */
    public function putGallery($galleryID, $arrOptions = array(), $initType = "id")
    {
        try {
            $objCategories = new UniteGalleryCategories();
            $this->initGallery($galleryID);
            $this->setOutputOptions();
            $this->putScripts();
            $enableCatTabs = $this->getParam('enable_category_tabs', self::FORCE_BOOLEAN);
            //custom items pass
            if (is_array($arrOptions) && array_key_exists("items", $arrOptions)) {
                $arrItems = $arrOptions["items"];
                $enableCatTabs = false;
            } else {
                //set gallery category
                $optCatID = UniteFunctionsUG::getVal($arrOptions, "categoryid");
                if (!empty($optCatID) && $objCategories->isCatExists($optCatID)) {
                    $categoryID = $optCatID;
                } else {
                    if ($enableCatTabs == true) {
                        $categoryID = $this->getParam("tabs_init_catid");
                        if ($categoryID == "first") {
                            //get first category from tabs
                            $strCatIDs = $this->getParam("categorytabs_ids");
                            $arrIDs = explode(",", $strCatIDs);
                            if (!empty($arrIDs)) {
                                $categoryID = $arrIDs[0];
                            }
                        }
                        if (empty($categoryID) || is_numeric($categoryID) == false) {
                            $categoryID = $this->getParam("category");
                        }
                    } else {
                        $categoryID = $this->getParam("category");
                    }
                }
                if (empty($categoryID)) {
                    UniteFunctionsUG::throwError(__("No items category selected", UNITEGALLERY_TEXTDOMAIN));
                }
                $items = new UniteGalleryItems();
                $arrItems = $items->getCatItems($categoryID);
            }
            if (empty($arrItems)) {
                UniteFunctionsUG::throwError("No gallery items found", UNITEGALLERY_TEXTDOMAIN);
            }
            //set wrapper style
            //size validation
            $this->getParam("gallery_width", self::FORCE_SIZE);
            if ($this->isTilesType == false) {
                $this->getParam("gallery_height", self::VALIDATE_NUMERIC);
            }
            $fullWidth = $this->getParam("full_width", self::FORCE_BOOLEAN);
            if ($fullWidth == true) {
                $this->arrParams["gallery_width"] = "100%";
            }
            $wrapperStyle = $this->getPositionString();
            //set position
            $htmlTabs = "";
            if ($enableCatTabs == true) {
                $htmlTabs = $this->getCategoryTabsHtml($this->galleryHtmlID, $objCategories);
                $this->arrParams["gallery_initial_catid"] = $categoryID;
            }
            //get output related variables
            $addStyles = $this->getAdditionalStyles();
            $position = $this->getParam("position");
            $isRtlWrapper = $position == "right";
            if ($isRtlWrapper == true) {
                $rtlWrapperStyle = $wrapperStyle;
                if (!empty($rtlWrapperStyle)) {
                    $rtlWrapperStyle = " style='{$rtlWrapperStyle}'";
                }
                $wrapperStyle = "";
                //move the wrapper style to rtl wrapper
            }
            if (!empty($wrapperStyle)) {
                $wrapperStyle = " style='{$wrapperStyle}'";
            }
            global $uniteGalleryVersion;
            $output = "\n\t\t\t\t\t\n\n\t\t\t\t\t<!-- START UNITE GALLERY LITE {$uniteGalleryVersion} -->\n\t\t\t\t\t\n\t\t\t\t";
            if (!empty($addStyles)) {
                $output = $this->putInlineStyle($addStyles, $output);
            }
            if ($this->putJsToBody == true) {
                $output .= $this->putJsIncludesToBody();
            }
            if ($enableCatTabs == true) {
                $output .= $htmlTabs;
            }
            //add rtl prefix to get the gallery to right if needed
            if ($isRtlWrapper == true) {
                $output .= self::LINE_PREFIX1 . "<div class='ug-rtl'{$rtlWrapperStyle}>";
            }
            $output .= self::LINE_PREFIX1 . "<div id='{$this->galleryHtmlID}' class='unite-gallery'{$wrapperStyle}>";
            $output .= self::LINE_PREFIX2 . $this->putItems($arrItems);
            $output .= self::LINE_PREFIX1 . "</div>";
            if ($isRtlWrapper == true) {
                $output .= self::LINE_PREFIX1 . "</div>";
            }
            $output .= self::BR;
            $output = $this->putGalleryScripts($output);
            $output .= self::BR;
            $output .= self::LINE_PREFIX1 . "<!-- END UNITEGALLERY LITE-->";
            $compressOutput = $this->getParam("compress_output", self::FORCE_BOOLEAN);
            if ($compressOutput == true) {
                $output = str_replace("\r", "", $output);
                $output = str_replace("\n", "", $output);
                $output = trim($output);
            }
            return $output;
            ?>
				
			<?php 
        } catch (Exception $e) {
            $prefix = __("Unite Gallery Error", UNITEGALLERY_TEXTDOMAIN);
            $output = $this->getErrorMessage($e, $prefix);
            return $output;
        }
    }