Want more features on Pastebin? Sign Up, it's FREE!
Guest

bmsterling

By: a guest on May 11th, 2008  |  syntax: PHP  |  size: 54.89 KB  |  views: 1,002  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <?php
  2. //error_reporting(E_ERROR | E_WARNING);
  3. header('Content-Type: text/html; charset=UTF-8');
  4. include_once('core.php');
  5. if(!class_exists("px")){
  6.         class px extends px_core{
  7.                 var $dirName;
  8.                 var $dirPath;
  9.                 var $options;
  10.                 var $parentFile;
  11.                 var $baseFile;
  12.                 var $vars;
  13.                
  14.                 var $api_smugmug = '8vjhYpC7wz53UTdspu33yRaYXEPgrU5D';
  15.                 var $api_flickr = '99c12772538849fb2890645771d923f9';
  16.                  
  17.                 var $cur_album_id = 0;
  18.                 var $cur_album_info = NULL;
  19.                  
  20.                 var $cur_gallery_id = 0;
  21.                 var $cur_gallery_info = NULL;
  22.                 var $cur_image_group = array();
  23.                 var $cur_return = '';
  24.                 var $cur_js_func = '';
  25.                 var $cur_js_show = '';
  26.                
  27.                 var $cur_upload_dir = '';
  28.                 var $cur_album_dir = '';
  29.                 var $cur_image_info = '';
  30.                
  31.                 var $album_list = '';
  32.                
  33.                 var $safe_mode = false;
  34.                
  35.                 function px($file=''){
  36.                         global $wpdb;
  37.                         $this->baseFile = $file;
  38.                         $this->baseName = plugin_basename($this->baseFile);
  39.                         $this->dirPath = dirname($file);
  40.                         $this->dirName = basename($this->dirPath);
  41.                         $this->parentFile = array_pop( explode  ('\\',$file) );
  42.                         $this->parentFileUrl = get_bloginfo('wpurl')  . '/wp-content/plugins/' . $this->baseName;
  43.  
  44.                         $options = array(
  45.                                 // database tables
  46.                                 'albums' => $wpdb->prefix . "px_albums",
  47.                                 'albums_version' => "1.2",
  48.                                
  49.                                 'albumPhotos' => $wpdb->prefix . "px_albumPhotos",
  50.                                 'albumPhotos_version' => "1.2",
  51.  
  52.                                 'galleries' => $wpdb->prefix . "px_galleries",
  53.                                 'galleries_version' => "1.2",
  54.  
  55.                                 'photos' => $wpdb->prefix . "px_photos",
  56.                                 'photos_version' => "1.2",
  57.                                
  58.                                 'plugins' => $wpdb->prefix . "px_plugins",
  59.                                 'plugins_version' => "1.2",
  60.  
  61.                                 'js' => get_bloginfo('wpurl') . '/wp-content/plugins/' . $this->dirName . '/common/js/',
  62.  
  63.                                 'css' => get_bloginfo('wpurl') . '/wp-content/plugins/' . $this->dirName . '/common/css/',
  64.  
  65.                                 'img' => get_bloginfo('wpurl') . '/wp-content/plugins/' . $this->dirName . '/common/img/',
  66.                                
  67.                                 'pluginjs' => get_bloginfo('wpurl') . '/wp-content/plugins/' . $this->dirName . '/galleryScripts/',
  68.                                
  69.                                 'parts' => get_bloginfo('wpurl') . '/wp-content/plugins/' . $this->dirName . '/common/inc/pages/parts/'
  70.                         );
  71.                         $this->options = $options;
  72.                         unset($options);
  73.  
  74.  
  75.                         if ((gettype(ini_get('safe_mode')) == 'string')) {
  76.                                 if (ini_get('safe_mode') == 'off'){
  77.                                         $this->safe_mode = false;
  78.                                 }
  79.                                 else{
  80.                                         $this->safe_mode = ini_get('safe_mode');
  81.                                 }
  82.                         }
  83.                         else{
  84.                                 echo ini_get('safe_mode');
  85.                                 $this->safe_mode = ini_get('safe_mode');
  86.                         }
  87.                        
  88.                         add_action('admin_menu', array(&$this, 'adminMenu'));
  89.                        
  90.                         if( isset( $_POST['onetimer'] ) ){
  91.                                 $this->onetimers( $_POST['onetimer'] );
  92.                         }
  93.                         parent::px_core($file);
  94.                         unset($file);
  95.                         $this->init();
  96.                 }
  97.  
  98.  
  99.                 /**
  100.                  *     
  101.                  */
  102.                 function init(){
  103.                         add_action('activate_' . $this->dirName . '/photoxhibit.php',array(&$this,'install'));
  104.                         add_action('deactivate_' . $this->dirName . '/photoxhibit.php',array(&$this,'unintall'));
  105.                 }
  106.  
  107.                 function unintall(){}
  108.  
  109.  
  110.                 /**
  111.                  *     
  112.                  */
  113.                 function adminMenu(){
  114.                         if (function_exists('add_menu_page')) {
  115.                                 add_menu_page('PhotoXhibit','PhotoXhibit', 7, $this->baseFile, array(&$this, 'adminOverView'));
  116.                         }
  117.                         if (function_exists('add_submenu_page')) {
  118.                                 add_submenu_page($this->baseFile, __('OverView', 'photoxhibit'), __('OverView', 'photoxhibit'), 7, $this->baseFile, array(&$this, 'adminOverView'));
  119.                                 add_submenu_page($this->baseFile, __('Manage Gallery', 'photoxhibit'), __('Manage Gallery', 'photoxhibit'), 7, 'px_manage', array(&$this, 'adminManageGallery'));
  120.                                 add_submenu_page($this->baseFile, __('Build Gallery', 'photoxhibit'), __('Build Gallery', 'photoxhibit'), 7, 'px_build', array(&$this, 'adminBuild'));
  121.                        
  122.                                 add_submenu_page($this->baseFile, __('Manage Album', 'photoxhibit'), __('Manage Album', 'photoxhibit'), 7, 'px_manageAlbum', array(&$this, 'adminManageAlbum'));
  123.  
  124.                                 add_submenu_page($this->baseFile, __('Options', 'photoxhibit'), __('Options', 'photoxhibit'), 7, 'px_options', array(&$this, 'adminOptions'));
  125.  
  126.                                 add_submenu_page($this->baseFile, __('About', 'photoxhibit'), __('About', 'photoxhibit'), 7, 'px_about', array(&$this, 'adminAbout'));
  127.                         }
  128.                 }  //  end : adminMenu()
  129.                
  130.                 function edit_image_form( $id = NULL ){
  131.                         global $wpdb;
  132.                         if( $id == NULL ){
  133.                                 $id = $_GET['iid'];
  134.                         }
  135.                         $this->cur_image_info = $wpdb->get_row("SELECT * FROM ".$this->options['albumPhotos']." WHERE albumPhotos_id = ".$wpdb->escape($id));
  136.                         if( !empty($_GET['iid']) ){
  137.                                 include($this->dirPath.'/common/views/album/edit_image_attr.php');
  138.                         }
  139.                 }
  140.                
  141.                 function edit_image_single(){
  142.                         global $wpdb;
  143.                                 $sql = "UPDATE ".$this->options['albumPhotos'] . " SET
  144.                                                 albumPhotos_alt='". $wpdb->escape($_GET['albumPhotos_alt'])."',
  145.                                                 albumPhotos_tags='". $wpdb->escape($_GET['albumPhotos_tags'])."',
  146.                                                 albumPhotos_isactive='". $wpdb->escape($_GET['albumPhotos_isactive'])."' ,
  147.                                                 albumPhotos_desc='". $wpdb->escape($_GET['albumPhotos_desc'])."'
  148.                                                 WHERE albumPhotos_id=" . $wpdb->escape($_GET['albumPhotos_id']);
  149.                                 $wpdb->query($sql);
  150.                                
  151.                         echo '{"id":'.$_GET['albumPhotos_id'].'}';
  152.                        
  153.                 }
  154.                
  155.                 function delete_image( $id = NULL ){
  156.                         global $wpdb;
  157.                         if( $id == NULL ){
  158.                                 $id = $_GET['iid'];
  159.                         }
  160.                        
  161.  
  162.                         $this->edit_image_form( $id );
  163.                         $sql = "DELETE FROM ".$this->options['photos']." WHERE albumPhotos_id = " . $wpdb->escape($id) . " LIMIT 1";
  164.                         @mysql_query( $sql ) or die("An unexpected error occured.".mysql_error());
  165.                         $sql = "DELETE FROM ".$this->options['albumPhotos']." WHERE albumPhotos_id = " . $wpdb->escape($id) . " LIMIT 1";
  166.                         @mysql_query( $sql ) or die("An unexpected error occured.".mysql_error());
  167.                         $options = get_option('photoxhibit');
  168.                        
  169.  
  170.                         if( $options['options_delete'] == 1 ){
  171.                                 $this->get_upload_dir($this->cur_image_info->album_id);
  172.  
  173.                                 $dir = $this->cur_upload_dir;
  174.  
  175.                                 @unlink($dir . '/' . $this->cur_image_info->albumPhotos_file . '.' . $this->cur_image_info->albumPhotos_ext);
  176.                                 @unlink($dir . '/' . $this->cur_image_info->albumPhotos_file . '_tn.' . $this->cur_image_info->albumPhotos_ext);
  177.                                 @unlink($dir . '/' . $this->cur_image_info->albumPhotos_file . '_ltn.' . $this->cur_image_info->albumPhotos_ext);
  178.                                 @unlink($dir . '/' . $this->cur_image_info->albumPhotos_file . '_o.' . $this->cur_image_info->albumPhotos_ext);
  179.                         }
  180.  
  181.                         if( $id != NULL ){
  182.                                 echo '{"complete":true}';
  183.                                 exit(0);
  184.                         }
  185.                 }
  186.  
  187.                 /**
  188.                  *     
  189.                  */
  190.                 function get_set_album($get){
  191.                         global $wpdb;
  192.                         $id = $get['album_id'];
  193.                        
  194.                         if( $id == 0 ){
  195.                                 $sql = "INSERT INTO ".$this->options['albums'] . "
  196.                                                 (album_name) VALUES ('". $wpdb->escape($get['album_name'])."')";
  197.                                 $wpdb->query($sql);
  198.  
  199.                                 $id = mysql_insert_id();
  200.                         }
  201.                         else{
  202.                                 $sql = "UPDATE ".$this->options['albums'] . " SET album_name='". $wpdb->escape($get['album_name'])."' WHERE album_id=" . $id;
  203.                                 $wpdb->query($sql);
  204.                         }
  205.                                
  206.                         echo '{"id":'.$id.',"album_name":"'.$get['album_name'].'"}';
  207.                 }
  208.                
  209.                 function get_photos_from_album($id = NULL){
  210.                         global $wpdb;
  211.                         if( $id == NULL ){
  212.                                 $id = $_GET['aid'];
  213.                         }
  214.                         return $wpdb->get_results("SELECT * FROM ".$this->options['albumPhotos']." WHERE album_id=".$wpdb->escape($id));
  215.                 }
  216.  
  217.  
  218.                 /**
  219.                  *     
  220.                  */
  221.                 function adminManageAlbum(){
  222.                         global $wpdb;
  223.  
  224.                         $this->styles = array('base.css');
  225.                         $this->loadCss();
  226.  
  227.                         $this->js = array('jquery','ui','core','json');
  228.                         $this->getOptions();
  229.                         $this->loadJs();
  230.                        
  231.                         $imageGroup = '';
  232.  
  233.                         if( isset($_GET['do']) ){
  234.                                 $this->imageUpload();
  235.                         }
  236.                        
  237.                         $this->vars = get_option('photoxhibit');
  238.                         if( isset( $_GET['aid'] ) ){
  239.                                 $imageGroup = $this->get_photos_from_album();
  240.                                 $this->get_album_dir();
  241.                         }
  242.  
  243.                         switch($_GET['action']){
  244.                                 case 'edit_images':
  245.                                         include($this->dirPath.'/common/views/album/edit_images.php');
  246.                                         break;
  247.                                 case 'edit_image':
  248.                                         include('pages/parts/edit_image.php');
  249.                                         break;
  250.                                 case 'build_album':
  251.                                         include('pages/build_album.php');
  252.                                         break;
  253.                                 case 'delete_album':
  254.                                         $this->deleteAlbum();
  255.                                 default:
  256.                                         include('pages/albumManager.php');
  257.                         }
  258.                 }  //  end : adminManageGallery()
  259.                
  260.                 function deleteAlbum(){
  261.                         global $wpdb;
  262.                 //      $sql = "DELETE FROM ".$this->options['albums']." WHERE album_id = " . $wpdb->escape($_GET['aid']) . " LIMIT 1";
  263.                 //      @mysql_query( $sql ) or die("(deleteAlbum) An unexpected error occured.".mysql_error());
  264.                        
  265.                         $options = get_option('photoxhibit');
  266.                        
  267.                         if( $options['options_dropall'] == 1 ){
  268.  
  269.                                 $this->get_upload_dir($_GET['aid']);
  270.                                 $this->removeFolder($this->cur_upload_dir);
  271.  
  272.                                 $results = $wpdb->get_results("SELECT albumPhotos_id FROM ".$this->options['albumPhotos']."
  273.                                                                                         WHERE album_id=".$wpdb->escape($_GET['aid']));
  274.                                 if(is_array($results) && is_a($results[0], 'stdClass')){
  275.                                         foreach($results as $result => $v){
  276.                                                 $sql = "DELETE FROM ".$this->options['photos']."
  277.                                                                 WHERE albumPhotos_id = " . $wpdb->escape($v->albumPhotos_id) . "
  278.                                                                 LIMIT 1";
  279.                                                 @mysql_query( $sql ) or die("An unexpected error occured.".mysql_error());
  280.                                         }
  281.                                 }
  282.                                
  283.                                 $sql = "DELETE FROM ".$this->options['albumPhotos']."
  284.                                                 WHERE album_id = " . $wpdb->escape($_GET['aid']);
  285.                                 @mysql_query( $sql ) or die("An unexpected error occured.".mysql_error());
  286.  
  287.                         }
  288.                         else{
  289.                                 $sql = "UPDATE ".$this->options['albumPhotos'] ."
  290.                                                 SET album_id = 0
  291.                                                 WHERE album_id = " . $_GET['aid'];
  292.                                 $wpdb->query($sql);                    
  293.                         }
  294.  
  295.                         $sql = "DELETE FROM ".$this->options['albums']." WHERE album_id = " . $wpdb->escape($_GET['aid']) . " LIMIT 1";
  296.                         @mysql_query( $sql ) or die("An unexpected error occured.".mysql_error());
  297.                 }
  298.  
  299.                 function removeFolder($dir){
  300.                         if(!is_dir($dir))
  301.                                 return false;
  302.                         for($s = DIRECTORY_SEPARATOR, $stack = array($dir), $emptyDirs = array($dir); $dir = array_pop($stack);){
  303.                                 if(!($handle = @dir($dir)))
  304.                                         continue;
  305.                                 while(false !== $item = $handle->read())
  306.                                         $item != '.' && $item != '..' && (is_dir($path = $handle->path . $s . $item) ?
  307.                                         array_push($stack, $path) && array_push($emptyDirs, $path) : unlink($path));
  308.                                 $handle->close();
  309.                         }
  310.                         for($i = count($emptyDirs); $i--; rmdir($emptyDirs[$i]));
  311.                 }
  312.  
  313.  
  314.                 /**
  315.                  *      Load overview page
  316.                  */
  317.                 function adminOverView(){
  318.                         $this->write_baseCss();
  319.                         $this->checkforblogrollentry();
  320.                         include('pages/overview.php');
  321.                 }  //  end : adminOverView()
  322.  
  323.                
  324.                 function update_styles($local = false){
  325.                         global $wpdb;//editStyles
  326.                        
  327.                         if($local){
  328.                        
  329.                                 $return = '';
  330.                                 $returnA = array();
  331.                                 //if(empty($_POST['px_stylesTextarea'])) array_push($returnA,'{"error":"error_no_styles"}');
  332.                                 if(empty($_POST['gid'])) array_push($returnA,__('No gallery id'));
  333.                                
  334.                                 if( count($returnA) <= 0 ){
  335.                                         $sql = "UPDATE " . $this->options['galleries'] . " SET gallery_css='".$wpdb->escape($_POST['px_stylesTextarea']) ."' WHERE gallery_id = " . $wpdb->escape($_POST['gid']);
  336.                                         $r = @mysql_query($sql) or die("An unexpected error occured.".mysql_error());;
  337.                                 }
  338.                                 if($r){
  339.                                         echo '<div class="wrap">'.__('Styles have been updated') .'</div>';
  340.                                 }
  341.                                 else{
  342.                                         echo '<div class="wrap">' . __('Error(s) on update:') . '<br/>' . join('<br/>',$returnA) .'</div>';
  343.                                 }
  344.                         }
  345.                         else{
  346.                        
  347.                                 $return = '';
  348.                                 $returnA = array();
  349.                                 if(empty($_POST['styles'])) array_push($returnA,'{"error":"error_no_styles"}');
  350.                                 if(empty($_POST['gid'])) array_push($returnA,'{"error":"error_no_id"}');
  351.                                
  352.                                 if( count($returnA) <= 0 ){
  353.                                         $sql = "UPDATE " . $this->options['galleries'] . " SET gallery_css='".$wpdb->escape($_POST['styles']) ."' WHERE gallery_id = " . $wpdb->escape($_POST['gid']);
  354.                                         $r = @mysql_query($sql) or die("An unexpected error occured.".mysql_error());;
  355.                                 }
  356.                                 if($r){
  357.                                         echo '{"good":"no_errors"}';
  358.                                 }
  359.                                 else{
  360.                                         echo '['.'{"error":"error_update"}'.join(',',$returnA) . ']';
  361.                                 }
  362.                         }
  363.                 }
  364.  
  365.                 /**
  366.                  *      Load build page
  367.                  */
  368.                 function get_gallery_data($id=0){
  369.                         global $wpdb;
  370.                         $id = ($id==0) ? $this->cur_gallery_id : $id;
  371.                         $sql = "SELECT * FROM ".$this->options['galleries']." WHERE gallery_id = ".$wpdb->escape($id);
  372.                         return $wpdb->get_row($sql);
  373.                 }// end : get_album_data
  374.  
  375.  
  376.                 /**
  377.                  *      Get Gallery Information
  378.                  */
  379.                 function get_gallery_info(){
  380.                         global $wpdb;
  381.                         $this->cur_gallery_info = $this->get_gallery_data();
  382.                 }// end : get_album_info
  383.  
  384.  
  385.                 /**
  386.                  *      Build Image Gallery
  387.                  */
  388.                 function build_image_set($gallery_id=0, $r = false, $js = true){
  389.                         if( $gallery_id == 0 ) return;
  390.  
  391.                         $this->cur_gallery_id = $gallery_id;
  392.                         $this->cur_js_show = $js;
  393.                         $this->get_gallery_info();
  394.                        
  395.                         if($this->cur_gallery_info){
  396.                                 $this->get_js_func();
  397.                                 $this->get_imgs_group();
  398.                                 $this->buildout_images();
  399.                                
  400.                                 $this->get_css_link();
  401.                                 $this->get_js_code();
  402.                         }
  403.  
  404.                         if($r){
  405.                                 return $this->cur_return;
  406.                         }
  407.                         else{
  408.                                 echo $this->cur_return;
  409.                         }
  410.                  }  //  end :  function build_image_set()
  411.  
  412.  
  413.                 /**
  414.                  *     
  415.                  */
  416.                 function get_css_link(){
  417.                         $this->cur_return .= '<link id="px_editstylesheet" type="text/css" href="'.$this->parentFileUrl.'?option=css&gid='.$this->cur_gallery_id.'&'.time().'" rel="stylesheet"/>';
  418.                 }  // end : get_css_link
  419.  
  420.  
  421.                 /**
  422.                  *     
  423.                  */
  424.                 function get_js_func(){
  425.                         global $wpdb;
  426.                         $sql = "SELECT * FROM " . $this->options['plugins'] .' where plugin_id ='.$this->cur_gallery_info->plugin_id;
  427.                         $tmp = $wpdb->get_row($sql);
  428.                         $this->cur_js_func = $tmp->plugin_js;
  429.                 }  // end : get_js_func
  430.  
  431.  
  432.                 /**
  433.                  *     
  434.                  */
  435.                 function get_js_code(){
  436.                         if(!$this->cur_js_show) return;
  437.  
  438.                         if (!extension_loaded('json')){
  439.                                 include_once('JSON.php');
  440.                                 $json = new JSON;
  441.                                 $objs = $json->unserialize(stripslashes($this->cur_gallery_info->gallery_params));
  442.                         }
  443.                         else{
  444.                                 $objs = json_decode(stripslashes($this->cur_gallery_info->gallery_params));
  445.                         }
  446.                         $jsParam = array();
  447.                         if($objs){
  448.                                 foreach($objs as $obj => $k){
  449.                                         $k = (is_numeric($k) || is_bool($k)) ? $k : '"'.$k.'"';
  450.                                         array_push($jsParam, $obj . ':' . $k);
  451.                                 }
  452.                         }
  453.                        
  454.                         if (function_exists('wp_register_script')) {
  455.                                 wp_register_script('px_jquery', $this->options['js'] .'jquery.js');
  456.                                 wp_print_scripts('px_jquery');
  457.                
  458.                                 wp_register_script('px_tmpjs'.$this->cur_js_func, $this->options['pluginjs'].$this->cur_js_func.'/'.$this->cur_js_func.'.js', null, '2.01');
  459.                                 wp_print_scripts('px_tmpjs'.$this->cur_js_func);
  460.                         }
  461.                        
  462.                         $showA = '';
  463.                         //'a.'.$this->cur_js_func .',
  464.                         switch($this->cur_js_func){
  465.                                 case 'lightBox':
  466.                                 case 'lightboxbe':
  467.                                 case 'thickbox':
  468.                                         $selector = '#px'.$this->cur_gallery_id.' a';
  469.                                         break;
  470.                                 default:
  471.                                         $selector = '#px'.$this->cur_gallery_id;
  472.                                         break;
  473.                         }
  474.                        
  475.                         $this->cur_return .= '<script type="text/javascript">(function($){$(document).ready(function(){$("'.$selector.'").'.$this->cur_js_func.'({'.join(',',$jsParam).'});});})(jQuery);</script>';
  476.                 }  //  end : get_js_code
  477.                
  478.                 /**
  479.                  * @name buildout_images
  480.                  * @example     buildout_images()
  481.                  * @description Builds out a list item with images and links
  482.                  */
  483.                 function buildout_images(){    
  484.                         $return="";
  485.                         if($this->cur_gallery_info->gallery_structure == '0'){
  486.                                 $return .= '<ul id="px'.$this->cur_gallery_id;
  487.                                 $return .= '" title="'.htmlentities($this->cur_gallery_info->gallery_title,ENT_COMPAT, 'UTF-8').'">'."\n";
  488.  
  489.                                 foreach ($this->cur_image_group as $result) {
  490.                                         $title = htmlentities($result->photo_alt,ENT_COMPAT, 'UTF-8');
  491.  
  492.                                         if( $title == 'null' || $title == 'NULL' || $title == null || $title == NULL ){
  493.                                                 $title = '';
  494.                                         }
  495.  
  496.                                         if(!$this->cur_gallery_info->album_uselarge){
  497.                                                 $return .= '<li><a href="'.$result->photo_url;
  498.                                                 $return .= '" rel="g'.$this->cur_gallery_id.'" ';
  499.                                                 $return .= '" title="'.$title.'" ';
  500.                                                 $return .= '" alt="'.$title.'"><img src="';
  501.                                                 $return .= ($album_large) ? $result->photo_url : $result->photo_tnurl;
  502.                                                 $return .= '" metadata="';
  503.                                                 $return .= encodeURIComponent('{"tnurl":"'.$result->photo_tnurl.'","url":"'.$result->photo_url.'","alt":"'.$title.'"}');
  504.                                                 $return .= '" alt="'.$title.'"/></a></li>'."\n";
  505.                                         }
  506.                                         else{
  507.                                                 $return.= '<li><img alt="'.$title.'" src="';
  508.                                                 $return .= $result->photo_url;
  509.                                                 $return .= '" metadata="'.encodeURIComponent('{"t":"'.$result->photo_tnurl.'","f":"'.$result->photo_url.'","a":"'.$title.'"}').'"/></li>';
  510.                                         }
  511.                                 }
  512.                                 $return .= '</ul>'."\n";
  513.                                 $this->cur_return .= $return;
  514.                         }
  515.                         else if($this->cur_gallery_info->gallery_structure == '1'){
  516.                                 $return .= '<table id="px'.$this->cur_gallery_id;
  517.                                 $return .= '" title="'.htmlentities($this->cur_gallery_info->gallery_title,ENT_COMPAT, 'UTF-8').'" border="0" cellspacing="0" cellpadding="0">';
  518.                                 $i = 1;
  519.                                 $cols = $this->cur_gallery_info->gallery_extra;
  520.                                 $total = count($this->cur_image_group);
  521.                                 foreach ($this->cur_image_group as $result) {
  522.                                         $title = htmlentities($result->photo_alt,ENT_COMPAT, 'UTF-8');
  523.                                        
  524.                                         if( $title == 'null' || $title == 'NULL' || $title == null || $title == NULL ){
  525.                                                 $title = '';
  526.                                         }
  527.  
  528.                                         if(($i % $cols) == 1){
  529.                                                 $return .= "<tr>\n";
  530.                                         }
  531.                                        
  532.                                         $return .= "<td>\n";
  533.                                        
  534.                                         $return .= '<a class="'.$this->cur_js_func.'" rel="g'.$this->cur_gallery_id.'" href="'.$result->photo_url;
  535.                                         $return .= '" title="'.$title;
  536.                                         $return .= '" alt="'.$title.'"><img src="';
  537.                                         $return .= ($album_large) ? $result->photo_url : $result->photo_tnurl;
  538.                                         $return .= '" metadata="'.encodeURIComponent('{"t":"'.$result->photo_tnurl.'","f":"'.$result->photo_url.'","a":"'.$title.'"}');
  539.                                         $return .= '" alt="'.$title.'"/></a>';
  540.  
  541.                                         $return .= '<p>'.$result->photo_alt.'</p>';
  542.                                        
  543.                                         $return .= "</td>\n";
  544.                
  545.                                         if(($i % $cols) == 0){
  546.                                                 $return .= "</tr>\n";
  547.                                         }
  548.                                         else if($i == $total){
  549.                                                 //echo $cols-($total%$cols);
  550.                                                 for($j = 1; $j <= ($cols-($total%$cols)); $j++){
  551.                                                         $return .= "<td>&nbsp;</td>\n";
  552.                                                 }
  553.                                                 $return .= "</tr>\n";                  
  554.                                         }
  555.                                         $i++;
  556.                                 }
  557.                                
  558.                                 $return .= '</table>';
  559.                                 $this->cur_return .= $return;
  560.                                
  561.                         }
  562.                         else if($this->cur_gallery_info->gallery_structure == '2'){
  563.                                 $return .= '<table id="px'.$this->cur_gallery_id;
  564.                                 $return .= '" title="'.htmlentities($this->cur_gallery_info->gallery_title,ENT_COMPAT, 'UTF-8').'" border="0" cellspacing="0" cellpadding="0">';
  565.                                 $i = 1;
  566.                                 $cols = $this->cur_gallery_info->gallery_extra;
  567.                                 $total = count($this->cur_image_group);
  568.                                 foreach ($this->cur_image_group as $result) {
  569.                                         $title = htmlentities($result->photo_alt,ENT_COMPAT, 'UTF-8');
  570.                                        
  571.                                         if( $title == 'null' || $title == 'NULL' || $title == null || $title == NULL ){
  572.                                                 $title = '';
  573.                                         }
  574.  
  575.                                         if(($i % $cols) == 1){
  576.                                                 $return .= "<tr>\n";
  577.                                         }
  578.                                        
  579.                                         $return .= "<td>\n";
  580.                                        
  581.                                         $return .= '<a class="'.$this->cur_js_func.'" rel="g'.$this->cur_gallery_id.'" href="'.$result->photo_url;
  582.                                         $return .= '" title="'.$title;
  583.                                         $return .= '" alt="'.$title.'"><img src="';
  584.                                         $return .= ($album_large) ? $result->photo_url : $result->photo_tnurl;
  585.                                         $return .= '" metadata="'.encodeURIComponent('{"t":"'.$result->photo_tnurl.'","f":"'.$result->photo_url.'","a":"'.$title.'"}');
  586.                                         $return .= '" alt="'.$title.'"/></a>';
  587.  
  588.                                         $return .= "</td>\n";
  589.                
  590.                                         if(($i % $cols) == 0){
  591.                                                 $return .= "</tr>\n";
  592.                                         }
  593.                                         else if($i == $total){
  594.                                                 //echo $cols-($total%$cols);
  595.                                                 for($j = 1; $j <= ($cols-($total%$cols)); $j++){
  596.                                                         $return .= "<td>&nbsp;</td>\n";
  597.                                                 }
  598.                                                 $return .= "</tr>\n";                  
  599.                                         }
  600.                                         $i++;
  601.                                 }
  602.                                
  603.                                 $return .= '</table>';
  604.                                 $this->cur_return .= $return;
  605.                                
  606.                         }
  607.                         else if($this->cur_gallery_info->gallery_structure == '3'){
  608.                                 $return .= '<div id="px'.$this->cur_gallery_id;
  609.                                 $return .= '" title="'.htmlentities($this->cur_gallery_info->gallery_title,ENT_COMPAT, 'UTF-8').'" >';
  610.  
  611.                                 foreach ($this->cur_image_group as $result) {
  612.                                         $title = htmlentities($result->photo_alt,ENT_COMPAT, 'UTF-8');
  613.                                        
  614.                                         if( $title == 'null' || $title == 'NULL' || $title == null || $title == NULL ){
  615.                                                 $title = '';
  616.                                         }
  617.                                
  618.                                         $return .= '<div class="pxDivWrapper"><a class="'.$this->cur_js_func.'" rel="g'.$this->cur_gallery_id.'" href="'.$result->photo_url;
  619.                                         $return .= '" title="'.$title.'" ';
  620.                                         $return .= '" alt="'.$title.'"><img src="';
  621.                                         $return .= ($album_large) ? $result->photo_url : $result->photo_tnurl;
  622.                                         $return .= '" metadata="'.encodeURIComponent('{"t":"'.$result->photo_tnurl.'","f":"'.$result->photo_url.'","a":"'.$title.'"}');
  623.                                         $return .= '" alt="'.$title.'"/></a></div>';
  624.                                 }
  625.                                 $return .= '</div>';
  626.                                 $this->cur_return .= $return;
  627.                         }
  628.                         else if($this->cur_gallery_info->gallery_structure == '4'){
  629.                                 $return .= '<div id="px'.$this->cur_gallery_id;
  630.                                 $return .= '" title="'.htmlentities($this->cur_gallery_info->gallery_title,ENT_COMPAT, 'UTF-8').'" >'."\n";
  631.  
  632.                                 foreach ($this->cur_image_group as $result) {
  633.                                         $title = htmlentities($result->photo_alt,ENT_COMPAT, 'UTF-8');
  634.                                        
  635.                                         if( $title == 'null' || $title == 'NULL' || $title == null || $title == NULL ){
  636.                                                 $title = '';
  637.                                         }
  638.                                
  639.                                         $return .= '<div class="pxDivWrapper"><a class="'.$this->cur_js_func.'" rel="g'.$this->cur_gallery_id.'" href="'.$result->photo_url;
  640.                                         $return .= '" title="'.$title.'" ';
  641.                                         $return .= '" alt="'.$title.'"><img src="';
  642.                                         $return .= ($album_large) ? $result->photo_url : $result->photo_tnurl;
  643.                                         $return .= '" metadata="'.encodeURIComponent('{"t":"'.$result->photo_tnurl.'","f":"'.$result->photo_url.'","a":"'.$title.'"}');
  644.                                         $return .= '" alt="'.$title.'"/></a>';
  645.                                        
  646.                                         $return .= '<p>'.$result->photo_alt.'</p>';
  647.                                        
  648.                                         $return .= '</div>'."\n";
  649.                                 }
  650.                                 $return .= '</div>';
  651.                                 $this->cur_return .= $return;
  652.                         }
  653.                         else if($this->cur_gallery_info->gallery_structure == 'empty'){
  654.                                 $return .= '<div id="px'.$this->cur_gallery_id;
  655.                                 $return .= '" title="'.htmlentities($this->cur_gallery_info->gallery_title,ENT_COMPAT, 'UTF-8').'" >'."\n";
  656.                                 foreach ($this->cur_image_group as $result) {
  657.                                         $return .= '<a class="'.$this->cur_js_func.'" rel="g'.$this->cur_gallery_id.'" href="'.$result->photo_url;
  658.                                         $return .= '" title="'.$title.'" ';
  659.                                         $return .= '" alt="'.$title.'"><img src="';
  660.                                         $return .= ($album_large) ? $result->photo_url : $result->photo_tnurl;
  661.                                         $return .= '" metadata="'.encodeURIComponent('{"t":"'.$result->photo_tnurl.'","f":"'.$result->photo_url.'","a":"'.$title.'"}');
  662.                                         $return .= '" alt="'.$title.'"/></a>';
  663.                                 }
  664.                                 $return .= '</div>';
  665.                                 $this->cur_return .= $return;
  666.                         }
  667.                 }// end : print_img_list
  668.                
  669.  
  670.  
  671.                 /**
  672.                  *      Load build page
  673.                  */
  674.                 function adminBuild(){
  675.                         $this->vars = get_option('photoxhibit');
  676.                         $this->styles = array('base.css');
  677.                         $this->loadCss();
  678.  
  679.                         $this->js = array('jquery','ui','core','json','blockUI','ease','dimension');
  680.                         $this->getOptions();
  681.                         $this->loadJs();
  682.  
  683.                         if( isset( $_GET['gid'] ) ){
  684.                                  $this->cur_gallery_info = $this->get_gallery_data( $_GET['gid'] );
  685.  
  686.                                 $this->get_imgs_group();
  687.                         }
  688.                        
  689.                         $this->get_album_list();
  690.  
  691.                         //$this->print_supportProject();
  692.                         include('pages/build.php');
  693.                         unset($this->vars);
  694.                 }  //  end : adminBuild()
  695.                
  696.                 function get_album_list(){
  697.                         global $wpdb;
  698.                         $this->album_list = $wpdb->get_results("SELECT * FROM ".$this->options['albums']);
  699.                 }
  700.                
  701.                 /**
  702.                  * @name get_image
  703.                  * @example     get_imgs_group()
  704.                  * @description Gets the images that are related to the album
  705.                  */
  706.                 function get_imgs_group(){
  707.                         global $wpdb;
  708.                         $this->cur_image_group = $wpdb->get_results("SELECT * FROM ".$this->options['photos']." WHERE gallery_id=".$wpdb->escape($this->cur_gallery_id)." ORDER BY photo_order ASC");
  709.                 }// end : get_imgs_group
  710.                
  711.                 function build_img_admin_list(){
  712.                         if(empty($this->cur_image_group)) return;
  713.                         $return = '';
  714.                         foreach ($this->cur_image_group as $result) {
  715.                                 $return.= '<li><img alt="'.htmlentities($result->photo_alt).'" src="';
  716.                                 $return .= $result->photo_tnurl;
  717.                                 $return .= '" metadata="'.encodeURIComponent('{"t":"'.$result->photo_tnurl.'","f":"'.$result->photo_url.'","a":"'.$result->photo_alt.'","i":'.$result->albumPhotos_id.'}').'"/></li>';
  718.                         }
  719.                        
  720.                         echo $return;
  721.                 }
  722.  
  723.  
  724.                 /**
  725.                  *      Load about page
  726.                  */
  727.                 function adminAbout(){
  728.                         $this->print_supportProject();
  729.                         include('pages/about.php');
  730.                 }  //  end : adminAbout()
  731.  
  732.  
  733.  
  734.                
  735.                 function update_photos(){
  736.                         global $wpdb;
  737.                         if(empty($_GET['value'])) return '{"error":"error_no_text"}';
  738.                         if(empty($_GET['pid'])) return '{"error":"error_no_id"}';
  739.                        
  740.                         $sql = "UPDATE " . $this->options['photos'] . " SET photo_alt='".$wpdb->escape($_GET['value']) ."' WHERE photo_id = " . $wpdb->escape($_GET['pid']);
  741.                        
  742.                         $r = @mysql_query($sql) or die("An unexpected error occured.".mysql_error());;
  743.                        
  744.                         if($r){
  745.                                 echo '{"good":"no_errors"}';
  746.                         }
  747.                         else{
  748.                                 echo '{"error":"error_update"}';
  749.                         }
  750.                        
  751.                 }
  752.  
  753.                 /**
  754.                  *      Load page parts
  755.                  */
  756.                 function get_pagePart($part = NULL){
  757.                         switch($part){
  758.                                 case 'picasaParams':
  759.                                         include('pages/parts/picasaParams.php');
  760.                                         break;
  761.                                 case 'flickrParams':
  762.                                         include('pages/parts/flickrParams.php');
  763.                                         break;
  764.                                 case 'smugMugParams':
  765.                                         include('pages/parts/smugMugParams.php');
  766.                                         break;
  767.                                 case 'optionsBasic':
  768.                                         include('pages/parts/optionsBasic.php');
  769.                                         break;
  770.                                 case 'optionsServices':
  771.                                         include('pages/parts/optionsServices.php');
  772.                                         break;
  773.                                 case 'usage':
  774.                                         include('pages/parts/usage.php');
  775.                                         break;
  776.                                 case 'buildServices':
  777.                                         include('pages/parts/buildServices.php');
  778.                                         break;
  779.                                 case 'buildPicasaOptions':
  780.                                         include('pages/parts/buildPicasaOptions.php');
  781.                                         break;
  782.                                 case 'buildPicasaBasic':
  783.                                         include('pages/parts/buildPicasaBasic.php');
  784.                                         break;
  785.                                 case 'buildPicasaAdvanced':
  786.                                         include('pages/parts/buildPicasaAdvanced.php');
  787.                                         break;
  788.                                 case 'buildPicasaThumbnails':
  789.                                         include('pages/parts/buildPicasaThumbnails.php');
  790.                                         break;
  791.                                 case 'buildFlickrOptions':
  792.                                         include('pages/parts/buildFlickrOptions.php');
  793.                                         break;
  794.                                 case 'buildFlickrBasic':
  795.                                         include('pages/parts/buildFlickrBasic.php');
  796.                                         break;
  797.                                 case 'buildFlickrAPI':
  798.                                         include('pages/parts/buildFlickrAPI.php');
  799.                                         break;
  800.                                 case 'buildFlickrPhotoset':
  801.                                         include('pages/parts/buildFlickrPhotoset.php');
  802.                                         break;
  803.                                 case 'buildFlickrSearch':
  804.                                         include('pages/parts/buildFlickrSearch.php');
  805.                                         break;
  806.                                 case 'buildFlickrThumbnails':
  807.                                         include('pages/parts/buildFlickrThumbnails.php');
  808.                                         break;
  809.                                 case 'buildSmugMugOptions':
  810.                                         include('pages/parts/buildSmugMugOptions.php');
  811.                                         break;
  812.                                 case 'buildSmugMugBasic':
  813.                                         include('pages/parts/buildSmugMugBasic.php');
  814.                                         break;
  815.                                 case 'buildSmugMugAPI':
  816.                                         include('pages/parts/buildSmugMugAPI.php');
  817.                                         break;
  818.                                 case 'buildSmugMugAdvance':
  819.                                         include('pages/parts/buildSmugMugAdvance.php');
  820.                                         break;
  821.                                 case 'buildSmugMugThumbnails':
  822.                                         include('pages/parts/buildSmugMugThumbnails.php');
  823.                                         break;
  824.                                 case 'buildAlbumList':
  825.                                         include('pages/parts/buildAlbumList.php');
  826.                                         break;
  827.                                 case 'buildAlbumThumbnails':
  828.                                         include('pages/parts/buildAlbumThumbnails.php');
  829.                                         break;
  830.                                        
  831.                                 case 'buildLocal':
  832.                                         include('pages/parts/buildLocal.php');
  833.                                         break; 
  834.                                 case 'buildBrowse':
  835.                                         include('pages/parts/buildBrowse.php');
  836.                                         break;
  837.                                 case 'buildStructure':
  838.                                         include('pages/parts/buildStructure.php');
  839.                                         break;
  840.                                 case 'buildGalleryOptions':
  841.                                         include('pages/parts/buildGalleryOptions.php');
  842.                                         break;
  843.                                 case 'optionsBasics':
  844.                                         include('pages/parts/optionsBasics.php');
  845.                                         break;
  846.                         }
  847.                 }  //  end : get_pagePart()
  848.  
  849.  
  850.                 function get_plugins_selectMenu($id=0){
  851.                         $results = $this->get_plugins();
  852.                         $return = '<select name="px_selectPlugin" id="px_selectPlugin"><option';
  853.                         $return .=  ($id==0)? ' selected="selected" ' : '';
  854.                         $return .=  ' value="0"></option>';
  855.                         foreach ($results as $result) {
  856.                                 $return.= '<option value="'.$result->plugin_id.'" title="'.$result->plugin_example.'" metadata="'.encodeURIComponent($result->plugin_params).'"';
  857.                                 $return .= ($id == $result->plugin_id) ? ' selected="selected" ':'';
  858.                                 $return .= '>'.$result->plugin_title.'</option>';
  859.                         }
  860.                         echo $return .= '</select>';
  861.                 }  //  end : get_galleries_selectMenu()
  862.  
  863.                 /**
  864.                  *     
  865.                  */
  866.                 function get_plugins($id=0){
  867.                         global $wpdb;
  868.                         $sql = "SELECT * FROM " . $this->options['plugins'];
  869.                         if( $id != 0 ){
  870.                                 $sql .= ' where plugin_id ='.$wpdb->escape($id);
  871.                         }
  872.                         return $wpdb->get_results($sql);
  873.                 }  //  end : get_galleries()
  874.  
  875.  
  876.                 /**
  877.                  *      Load options page
  878.                  */
  879.                 function adminOptions(){
  880.                         $this->styles = array('base.css');
  881.                         $this->loadCss();
  882.                         $this->js = array('jquery','ui','core');
  883.                         $this->getOptions();
  884.                         $this->loadJs();
  885.                         echo '<style>@import url( "'.$this->options['css'] .'ui.flora.css");</style>';
  886.                         $this->vars = get_option('photoxhibit');
  887.                         include('pages/options.php');
  888.                         unset($this->vars);
  889.                 }  //  end : adminOverView()
  890.  
  891.  
  892.                 /**
  893.                  *      The SQL statement for Albums
  894.                  */
  895.                 function adminManageGallery(){
  896.                         global $wpdb;
  897.                         $this->js = array('jquery','ui','core','json','jquery.blockUI');
  898.                         $this->getOptions();
  899.                         $this->loadJs();
  900.  
  901.  
  902.                         if( isset( $_GET['gid'] ) ){
  903.                                 $this->cur_gallery_info = $this->get_gallery_data( $_GET['gid'] );
  904.                                 $this-> get_imgs_group();
  905.                         }
  906.  
  907.                         $this->print_supportProject();
  908.                         switch($_GET['action']){
  909.                                 case 'edit_styles':
  910.                                         if( isset($_GET['do']) && !empty($_GET['do']) && $_GET['do']=='editStyles' ){
  911.                                                 $this->update_styles(true);
  912.                                         }
  913.                                         include('pages/edit_styles.php');
  914.                                         break;
  915.                                 case 'edit_image_attr':
  916.                                         include('pages/edit_image_attr.php');
  917.                                         break;
  918.                                 case 'delete_gallery':
  919.                                         $this->delete_gallery();
  920.                                 default:
  921.                                         include($this->dirPath.'/common/views/gallery/manager.php');
  922.                         }
  923.                         unset($this->vars);
  924.                 }  //  end : adminManageGallery()
  925.                
  926.                 function delete_gallery(){
  927.                         global $wpdb;
  928.                         $sql = "DELETE FROM ".$this->options['galleries']." WHERE gallery_id = " . $wpdb->escape($_GET['gid']) . " LIMIT 1";
  929.                         @mysql_query( $sql ) or die("An unexpected error occured.".mysql_error());
  930.  
  931.                         $sql = "DELETE FROM ".$this->options['photos']." WHERE gallery_id = " . $wpdb->escape($_GET['gid']);
  932.                         @mysql_query( $sql ) or die("An unexpected error occured.".mysql_error());
  933.                 }
  934.        
  935.                 function install(){
  936.                         global $wpdb;
  937.                         require_once(ABSPATH . 'wp-admin/upgrade-functions.php');
  938.                         add_option('photoxhibit', NULL, 'Options for the PhotoXhibit plugin', 'no');
  939.                         $options = get_option('photoxhibit');
  940.                        
  941.        
  942.                         $album = $this->options['albums'];
  943.                         if($wpdb->get_var("show tables like '$album'") != $album) {
  944.                                 dbDelta($this->get_albumsCreateSql());
  945.                                 $options['album_version'] = $this->options['albums_version'];
  946.                         }
  947.                         else{
  948.                                 if($options['album_version'] != $this->options['albums_version']){
  949.                                         dbDelta($this->get_albumsCreateSql());
  950.                                         $options['album_version'] = $this->options['albums_version'];
  951.                                 }
  952.                         }
  953.        
  954.                         $plugins = $this->options['plugins'];
  955.        
  956.                         if($wpdb->get_var("show tables like '$plugins'") != $plugins) {
  957.                                 dbDelta($this->get_pluginsCreateSql());
  958.                                 $options['plugins_version'] = $this->options['plugins_version'];
  959.                                 include('pluginArray.php');
  960.        
  961.                                 $sql = "INSERT INTO " . $plugins . " (plugin_id, plugin_title, plugin_js, plugin_css, plugin_example, plugin_params, plugin_framework)  VALUES ";
  962.                                 $sqlArray = array();
  963.                                 for ($i = 0; $i < count($galleries); $i++) {
  964.                                         array_push($sqlArray, "( ".($i+1).", '". $wpdb->escape($galleries[$i]['title']) ."', '".$wpdb->escape($galleries[$i]['js'])."', '".$wpdb->escape($galleries[$i]['css'])."', '".$wpdb->escape($galleries[$i]['example'])."', '".$wpdb->escape($galleries[$i]['params'])."', '".$wpdb->escape($galleries[$i]['framework'])."')");
  965.                                 }
  966.                                 $sql .= join(',',$sqlArray);
  967.  
  968.                                 $wpdb->query($sql);
  969.                         }
  970.                         else{
  971.                                 if(     $options['plugins_version'] != $this->options['plugins_version'] ){
  972.                                         dbDelta($this->get_pluginsCreateSql());
  973.                                         $options['plugins_version'] = $this->options['plugins_version'];
  974.                                 }
  975.                         }
  976.                
  977.                         $galleries = $this->options['galleries'];
  978.                         if($wpdb->get_var("show tables like '$galleries'") != $galleries) {
  979.                                 dbDelta($this->get_galleriesCreateSql());
  980.                                 $options['galleries_version'] = $this->options['galleries_version'];
  981.                         }
  982.                         else{
  983.                                 if( $options['galleries_version'] != $this->options['galleries_version'] ){
  984.                                         dbDelta($this->get_galleriesCreateSql());
  985.                                         $options['galleries_version'] = $this->options['galleries_version'];
  986.                                 }
  987.                         }
  988.                
  989.                         $photos = $this->options['photos'];
  990.                         if($wpdb->get_var("show tables like '$photos'") != $photos) {
  991.                                 dbDelta($this->get_photoCreateSql());
  992.                                 $options['photos_version'] = $this->options['photos_version'];
  993.                         }
  994.                         else{
  995.                                 if( $options['photos_version'] != $this->options['photos_version'] ){
  996.                                         dbDelta($this->get_photoCreateSql());
  997.                                         $options['photos_version'] = $this->options['photos_version'];
  998.                                 }
  999.                         }
  1000.                
  1001.                         $aphotos = $this->options['albumPhotos'];
  1002.                         if($wpdb->get_var("show tables like '$aphotos'") != $aphotos) {
  1003.                                 dbDelta($this->get_albumPhotosCreateSql());
  1004.                                 $options['albumPhotos_version'] = $this->options['albumPhotos_version'];
  1005.                         }
  1006.                         else{
  1007.                                 if( $options['albumPhotos_version'] != $this->options['albumPhotos_version'] ){
  1008.                                         dbDelta($this->get_albumPhotosCreateSql());
  1009.                                         $options['albumPhotos_version'] = $this->options['albumPhotos_version'];
  1010.                                 }
  1011.                         }
  1012.  
  1013.                         $options['use_picasa'] = 1;
  1014.                         $options['use_flickr'] = 1;
  1015.                         $options['use_smugmug'] = 1;
  1016.                         $options['use_album'] = 1;
  1017.                         $options['use_local'] = 1;
  1018.                         $options['use_browse'] = 0;
  1019.                         $options['options_thumbailSet'] = 0;
  1020.                
  1021.                         $options["options_thumbailW"] = 100;
  1022.                         $options["options_thumbailH"] = 100;
  1023.                         $options["options_thumbailW2"] = 250;
  1024.                         $options["options_thumbailH2"] = 250;
  1025.        
  1026.                         $options['options_MaxWidth'] = 800;
  1027.                         $options['options_MaxHeight'] = 600;
  1028.                        
  1029.                         $options['options_imageQuality'] = 80;
  1030.                         $options['options_tnimageQuality'] = 90;
  1031.                        
  1032.                         $options['options_original'] = 0;
  1033.                         $options['options_dropall'] = 0;
  1034.                        
  1035.                        
  1036.                         $options["use_effectSlide"] = 0;
  1037.  
  1038.                        
  1039.                         $options['options_path'] = attribute_escape(str_replace(ABSPATH, '', get_option('upload_path')));
  1040.                         $options['options_delete'] = 1;
  1041.                         $options["use_manager"] = 0;
  1042.                        
  1043.                         $options["flash_version_multi_upload"] = 1;
  1044.                         $options["none_ajax_styles"] = 1;
  1045.                        
  1046.                         update_option('photoxhibit', $options);
  1047.                 }  //  end : install()
  1048.  
  1049.                 /**
  1050.                  *      Get Import CSS
  1051.                  */
  1052.                 function write_baseCss(){
  1053.                         echo '<style>@import url( "'.$this->options['css'] .'base.css");</style>';
  1054.                 }
  1055.  
  1056.                 /**
  1057.                  *      Get CSS
  1058.                  */
  1059.                 function print_css($id=0){
  1060.                         global $wpdb;
  1061.                         header('Content-type: text/css');
  1062.                         $r = $wpdb->get_row('SELECT gallery_css from ' . $this->options['galleries'] . ' WHERE gallery_id = ' . $id);
  1063.                         echo $r->gallery_css;
  1064.                 }
  1065.  
  1066.                 /**
  1067.                  *      Get Album JSON
  1068.                  */
  1069.                 function get_album_json_special($url = NULL){
  1070.                         include('clsParseXML.php');
  1071.                         $xmlparse = new ParseXML;
  1072.  
  1073.                         $xml = $xmlparse->GetXMLTree($url);
  1074.  
  1075.                         if (!extension_loaded('json')){
  1076.                                 include('JSON.php');
  1077.                                 $json = new JSON;
  1078.                                 $return = $json->serialize($xml['RSS'][0]['CHANNEL'][0]['ITEM']);
  1079.                         }
  1080.                         else{
  1081.                                 $return = json_encode($xml['RSS'][0]['CHANNEL'][0]['ITEM']);
  1082.                         }
  1083.                        
  1084.                        
  1085.                         //$return = json_encode($xml['RSS'][0]['CHANNEL'][0]['ITEM']);
  1086.                         return  ($return) ? $return : '{"result":"error","errorType":"NoEncode"}';
  1087.                 }
  1088.                
  1089.                 function check_set_allow_url_fopen($do = NULL){
  1090.                         $allow_fopen = (ini_get('allow_url_fopen') == '1');
  1091.                        
  1092.                         switch($do){
  1093.                                 case 'open':
  1094.                                         if (!$allow_fopen) {
  1095.                                                 ini_set('allow_url_fopen', 'On');
  1096.                                                 if(ini_get('allow_url_fopen') != 'On'){
  1097.                                                         die("{'result':'error','errorType':'no_fopen'}");
  1098.                                                 }
  1099.                                         }
  1100.                                         break;
  1101.                                 case 'close':
  1102.                                         if (!$allow_fopen) {
  1103.                                                 ini_set('allow_url_fopen', '0');
  1104.                                         }
  1105.                                         break;
  1106.                         }
  1107.                 }
  1108.                
  1109.                 /**
  1110.                  *      Get Album JSON
  1111.                  */
  1112.                 function get_albumListSmugMug_json($api=NULL,$un=NULL){
  1113.                         $this->check_set_allow_url_fopen('open');
  1114.                         $url = "http://api.smugmug.com/hack/json/1.2.0/?APIKey=".$this->api_smugmug."&method=smugmug.login.anonymously";
  1115.                         $info = @file_get_contents($url);
  1116.                         if (!extension_loaded('json')){
  1117.                                 include('JSON.php');
  1118.                                 $json = new JSON;
  1119.                                 $return = $json->unserialize($info);
  1120.                         }
  1121.                         else{
  1122.                                 $return = json_decode($info);
  1123.                         }
  1124.  
  1125.                         $return = @file_get_contents("http://api.smugmug.com/hack/json/1.2.0/?APIKey=".$this->api_smugmug."&method=smugmug.albums.get&Heavy=1&NickName=".$un."&SessionID=".$return->Login->Session->id);
  1126.  
  1127.                         $this->check_set_allow_url_fopen('close');
  1128.                         return  ($return) ? $return : '{"result":"error","errorType":"NoEncode"}';
  1129.                 }
  1130.  
  1131.                 /**
  1132.                  *      Get Album JSON
  1133.                  */
  1134.                 function get_album_json($url = NULL){
  1135.                         $this->check_set_allow_url_fopen('open');
  1136.                         $url = str_replace(array('rss_200','rss'),'json',$url);
  1137.                         if(strpos($url, 'flickr') === false){}
  1138.                         else{
  1139.                                 $url .= '&nojsoncallback=1&format=json';
  1140.                         }
  1141.                        
  1142.                         if(preg_match("/smugmug/", $url)){
  1143.                                 preg_match('/APIKey=(.*)&method/ise', $url, $matches);
  1144.                                 $info = file_get_contents("http://api.smugmug.com/hack/json/1.2.0/?APIKey=".$matches[1]."&method=smugmug.login.anonymously");
  1145.                                 if (!extension_loaded('json')){
  1146.                                         include('JSON.php');
  1147.                                         $json = new JSON;
  1148.                                         $return = $json->unserialize($info);
  1149.                                 }
  1150.                                 else{
  1151.                                         $return = json_decode($info);
  1152.                                 }
  1153.                                
  1154.                                 $url .= "&SessionID=".$return->Login->Session->id;
  1155.                         }
  1156.                         $return = @file_get_contents($url);
  1157.                         $this->check_set_allow_url_fopen('close');
  1158.                         return  ($return) ? $return : '{"result":"error","errorType":"fileGetContent"}';
  1159.                 }
  1160.  
  1161.                 /**
  1162.                  *
  1163.                  */
  1164.                 function getImagesFromDir($dir = NULL, $combine=false){
  1165.                         $allowed_types = array('png','jpg','jpeg','gif');
  1166.                         $d      =       dir($dir);
  1167.                         $x      =       array();
  1168.                        
  1169.                         while(false !== ($r = $d->read())){
  1170.                                 if($r!="."&&$r!=".."){
  1171.                                         if(is_dir($dir.$r)){
  1172.                                                 $x = array_merge($x, $this->getImagesFromDir($dir.$r.'/', false));
  1173.                                         }
  1174.                                         else if(is_file($dir.$r)){
  1175.                                                 if(in_array(strtolower(substr($dir.$r,-3)),$allowed_types)){
  1176.                                                         array_push($x, $r);
  1177.                                                 }
  1178.                                                
  1179.                                         }
  1180.                                 }
  1181.                         }
  1182.                        
  1183.                         if($combine){
  1184.                                 $v = array();
  1185.                                 for($i=0; $i < count($x); $i++){
  1186.                                         array_push($v, array('img'=>array($x[$i],$x[$i++ + 1])));
  1187.                                 }
  1188.                                
  1189.                                 unset($x);
  1190.                                 $x = $v;
  1191.                         }
  1192.                        
  1193.                         return $x;
  1194.                 }
  1195.  
  1196.                 /**
  1197.                  *      The SQL statement for albums
  1198.                  */
  1199.                 function get_albumsCreateSql(){
  1200.                         return "CREATE TABLE " . $this->options['albums'] . " (
  1201.                                 album_id bigint(20) NOT NULL auto_increment,
  1202.                                 album_name varchar(255) NOT NULL,
  1203.                                 album_sortorder int(2) NOT NULL default '99',
  1204.                                 PRIMARY KEY  (album_id)
  1205.                         );";
  1206.                 }  //  end : get_ablumCreateSql()
  1207.  
  1208.  
  1209.                 /**
  1210.                  *      The SQL statement for Galleries
  1211.                  */
  1212.                 function get_galleriesCreateSql(){
  1213.                         return "CREATE TABLE " . $this->options['galleries'] . " (
  1214.                                 gallery_id mediumint(9) NOT NULL auto_increment,
  1215.                                 gallery_title varchar(100) NOT NULL,
  1216.                                 plugin_id mediumint(9) default '0',
  1217.                                 gallery_params varchar(255) default NULL,
  1218.                                 gallery_framework varchar(100) default 'jQuery',
  1219.                                 gallery_css text,
  1220.                                 gallery_uselarge char(1) NOT NULL default '0',
  1221.                                 gallery_structure int(1) NOT NULL default '0',
  1222.                                 gallery_extra varchar(100)  default NULL,
  1223.                                 PRIMARY KEY  (gallery_id)
  1224.                         );";
  1225.                 }  //  end : get_ablumCreateSql()
  1226.  
  1227.  
  1228.                 /**
  1229.                  *      The SQL statement for Plugins
  1230.                  */
  1231.                 function get_pluginsCreateSql(){
  1232.                         return "CREATE TABLE " . $this->options['plugins'] . " (
  1233.                                 plugin_id mediumint(9) NOT NULL auto_increment,
  1234.                                 plugin_title varchar(100) NOT NULL,
  1235.                                 plugin_js varchar(100) NOT NULL,
  1236.                                 plugin_css text,
  1237.                                 plugin_example varchar(255) default NULL,
  1238.                                 plugin_params text,
  1239.                                 plugin_framework varchar(100) default 'jQuery',
  1240.                                 PRIMARY KEY  (plugin_id)
  1241.                         );";
  1242.                 }  //  end : get_galleryCreateSql()
  1243.  
  1244.  
  1245.                 /**
  1246.                  *      The SQL statement for Photo
  1247.                  */
  1248.                 function get_photoCreateSql(){
  1249.                         return "CREATE TABLE " . $this->options['photos'] . " (
  1250.                                 photo_id mediumint(9) NOT NULL auto_increment,
  1251.                                 photo_alt varchar(255) default NULL,
  1252.                                 photo_url varchar(255) NOT NULL,
  1253.                                 photo_tnurl varchar(255) NOT NULL,
  1254.                                 photo_order int(3) NOT NULL default '99',
  1255.                                 gallery_id int(3) NOT NULL,
  1256.                                 albumPhotos_id int(10) NULL default 0,
  1257.                                 PRIMARY KEY  (photo_id)
  1258.                         );";
  1259.                 }  //  end : get_photoCreateSql()
  1260.  
  1261.  
  1262.                 /**
  1263.                  *      The SQL statement for albumPhotos
  1264.                  */
  1265.                 function get_albumPhotosCreateSql(){
  1266.                         return "CREATE TABLE " . $this->options['albumPhotos'] . " (
  1267.                                 albumPhotos_id int(10) NOT NULL auto_increment,
  1268.                                 album_id int(10) default '0',
  1269.                                 post_id int(10) default '0',
  1270.                                 albumPhotos_file varchar(255) NOT NULL,
  1271.                                 albumPhotos_ext varchar(4) NOT NULL default 'jpg',
  1272.                                 albumPhotos_desc text,
  1273.                                 albumPhotos_alt mediumtext,
  1274.                                 albumPhotos_tags varchar(255) default NULL,
  1275.                                 albumPhotos_isactive char(1) default '1',
  1276.                                 PRIMARY KEY  (albumPhotos_id),
  1277.                                 KEY album_id (album_id,post_id)
  1278.                         );";
  1279.                 }  //  end : get_albumPhotosCreateSql()
  1280.  
  1281.  
  1282.                 /**
  1283.                  *      The Support Project Message
  1284.                  */
  1285.                 function print_supportProject(){
  1286. ?>
  1287. <div class="wrap">
  1288.         <table cellpadding="3" cellspacing="3" border="0">
  1289.                 <tr>
  1290.                         <td valign="top">
  1291.                                 <p><?php echo __('Please help support this project with a donation.  All monies donated will go toward hosting and bandwidth.', 'photoxhibit');?></p>
  1292.                         </td>
  1293.                         <td>
  1294.         <form action="https://www.paypal.com/cgi-bin/webscr" target="_blank" method="post"><input type="hidden" name="cmd" value="_s-xclick"><input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"><img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"><input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHRwYJKoZIhvcNAQcEoIIHODCCBzQCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYBijcBhndVDrXN0Fz0c0CXYjudL/QJeS1pKTweX15GAggkQmdq8c5Xd5LI6hay8mlR8bz0ZbAvpNAmvKPXRfRsTtEcnKv/oQa9ZupFwdP0m/hWgCpSTobeFvJnpZcnak1mFlL+x7aS/+bmlIpn3QBsqfPZYveQsINbGOxode5dzDjELMAkGBSsOAwIaBQAwgcQGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQI8wE7O9DNdjuAgaDyoqhRehLVgMwosxdA8CRzafhMwRWB78e6KEg7V+FAAJfj9ldmEnu05irzvh5jQpHIXE+wLsY4zbrjs78gXDAvN+AbZh6ogAP26TAZpryJjV1COIuhiKZ/21UgAURpYwRzSKDCQrfRA/BK1ISrQJlOk0EoNLH/A5NzA+ORrW4QxuFAztxkB/AqyyBcfMlkkjW/WnlKy9vfZ7di4tfoCWn1oIIDhzCCA4MwggLsoAMCAQICAQAwDQYJKoZIhvcNAQEFBQAwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMB4XDTA0MDIxMzEwMTMxNVoXDTM1MDIxMzEwMTMxNVowgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBR07d/ETMS1ycjtkpkvjXZe9k+6CieLuLsPumsJ7QC1odNz3sJiCbs2wC0nLE0uLGaEtXynIgRqIddYCHx88pb5HTXv4SZeuv0Rqq4+axW9PLAAATU8w04qqjaSXgbGLP3NmohqM6bV9kZZwZLR/klDaQGo1u9uDb9lr4Yn+rBQIDAQABo4HuMIHrMB0GA1UdDgQWBBSWn3y7xm8XvVk/UtcKG+wQ1mSUazCBuwYDVR0jBIGzMIGwgBSWn3y7xm8XvVk/UtcKG+wQ1mSUa6GBlKSBkTCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCBXzpWmoBa5e9fo6ujionW1hUhPkOBakTr3YCDjbYfvJEiv/2P+IobhOGJr85+XHhN0v4gUkEDI8r2/rNk1m0GA8HKddvTjyGw/XqXa+LSTlDYkqI8OwR8GEYj4efEtcRpRYBxV8KxAW93YDWzFGvruKnnLbDAF6VR5w/cCMn5hzGCAZowggGWAgEBMIGUMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDcxMjA0MDUzODAyWjAjBgkqhkiG9w0BCQQxFgQUXMnnbP13IoIOWoODrYaIKn0qXRowDQYJKoZIhvcNAQEBBQAEgYCOzlIEHBps9xyX8ZZcAUtRYrfaOerTjuslQiwQyGqLjVQQSwGHViixAL+K+m3yaXsYbRmZyQcdIk/OyUnf/VvmVgszB7hs9FOFQ8Tz0I2u17lmsRKmE+n7MzJ6UEFOWk62jfmKKbIYd/3CJBJSx58e7fvoiFNi+g4ezvyRzoScdQ==-----END PKCS7-----"></form>
  1295.                         </td>
  1296.                 </tr>
  1297.         </table>
  1298. </div>
  1299. <?php
  1300.                 }  //  end : print_supportProject()
  1301.                
  1302.                 function processGallery($post = null){
  1303.                         global $wpdb;
  1304.                         $return = array();
  1305.  
  1306.                         //$imgs = $this->encodeToUtf8(stripslashes($post['images']));
  1307.                         $imgs = stripslashes($post['images']);
  1308.                         include('JSON.php');
  1309.                         $json = new JSON;
  1310.                         $objs = $json->unserialize($imgs);
  1311. /*
  1312.                         if (!extension_loaded('json')){
  1313.                         }
  1314.                         else{
  1315.                                 $objs = json_decode($imgs);
  1316.                         }
  1317. */
  1318.                        
  1319.                         if(!is_array($objs) && !is_a($objs[0], 'stdClass')){
  1320.                                 return '{"result":"error","errorType":"notObj"}';
  1321.                                 exit();
  1322.                         }
  1323.                        
  1324.                         array_push($return,'"images":'.stripslashes($post['images']).'');
  1325.                         array_push($return,'"params":'.stripslashes($post['gallery_params']).'');
  1326.                         array_push($return,'"structure":"'.$post['gallery_structure'].'"');
  1327.                         array_push($return,'"title":"'.$post['gallery_title'].'"');
  1328.                         array_push($return,'"useLarge":'.$post['gallery_uselarge'].'');
  1329.                         array_push($return,'"cols":"'.$post['gallery_extra'].'"');
  1330.  
  1331.                         $sql = "SELECT * FROM ".$this->options['plugins']." WHERE plugin_id = ".$post['plugin_id'];
  1332.                         $pluginResult = @$wpdb->get_row($sql);
  1333.  
  1334.                         array_push($return,'"gallery":"'.$pluginResult->plugin_js.'"');
  1335.  
  1336.                         if( isset($post['gallery_id']) && !empty($post['gallery_id']) ){
  1337.                                 $id = $post['gallery_id'];
  1338.  
  1339.                                 $sql = "UPDATE ".$this->options['galleries'] . " SET
  1340.                                                 gallery_title = '". $wpdb->escape($post['gallery_title'])."',
  1341.                                                 plugin_id = ". $wpdb->escape($post['plugin_id']).",
  1342.                                                 gallery_params = '". $wpdb->escape($post['gallery_params'])."',
  1343.                                                 gallery_framework = '". $wpdb->escape($pluginResult->plugin_framework)."',
  1344.                                                 gallery_uselarge = '". $wpdb->escape($post['gallery_uselarge'])."',
  1345.                                                 gallery_structure = ". $wpdb->escape($post['gallery_structure']).",
  1346.                                                 gallery_extra = '". $wpdb->escape($post['gallery_extra'])."'
  1347.                                                 WHERE gallery_id = ".$wpdb->escape($id)." LIMIT 1";
  1348.                                 $wpdb->query($sql);
  1349.                                
  1350.                                 if( $post['plugin_id'] != $post['curplugin_id'] ){
  1351.                                         $css = preg_replace(array('/#px/','/{PXPATH}/'), array('#px'.$id,$this->options['pluginjs'].$pluginResult->plugin_js),$pluginResult->plugin_css);
  1352.  
  1353.                                         $sql = "UPDATE ".$this->options['galleries'] . " SET
  1354.                                                         gallery_css = '". $css ."'
  1355.                                                         WHERE gallery_id = ".$wpdb->escape($id)." LIMIT 1";
  1356.                                         $wpdb->query($sql);
  1357.                                 }
  1358.                         }
  1359.                         else{
  1360.  
  1361.                                 $sql = "INSERT INTO ".$this->options['galleries'] . "
  1362.                                                 (gallery_title, plugin_id, gallery_params, gallery_css,
  1363.                                                 gallery_framework, gallery_uselarge, gallery_structure,gallery_extra) VALUES (
  1364.                                                 '". $wpdb->escape($post['gallery_title'])."',
  1365.                                                 ". $wpdb->escape($post['plugin_id']).",
  1366.                                                 '". $wpdb->escape($post['gallery_params'])."',
  1367.                                                 '". $wpdb->escape($pluginResult->plugin_css)."',
  1368.                                                 '". $wpdb->escape($pluginResult->plugin_framework)."',
  1369.                                                 '". $wpdb->escape($post['gallery_uselarge'])."',
  1370.                                                 ". $wpdb->escape($post['gallery_structure']).",
  1371.                                                 '". $wpdb->escape($post['gallery_extra'])."')";
  1372.                                 $wpdb->query($sql);
  1373.  
  1374.                                 $id = mysql_insert_id();
  1375.                                 $sql = "UPDATE ".$this->options['galleries'];
  1376.                                 $sql .= " SET gallery_css = '".preg_replace(array('/#px/','/{PXPATH}/'), array('#px'.$id,$this->options['pluginjs'].$pluginResult->plugin_js),$pluginResult->plugin_css) ."'";
  1377.                                 $sql .= " WHERE gallery_id = " . $id;
  1378.                                 $wpdb->query($sql);//
  1379.                         }
  1380.                        
  1381.                         $sql = "DELETE FROM ".$this->options['photos']." WHERE gallery_id = ".$id ;
  1382.                         $wpdb->query($sql);
  1383.        
  1384.                         foreach($objs as $obj => $v){
  1385.                                 $sql = "INSERT INTO ".$this->options['photos']."
  1386.                                                 (photo_alt, photo_url, photo_tnurl, photo_order,gallery_id, albumPhotos_id)
  1387.                                                 VALUES
  1388.                                                 ('".$wpdb->escape($v->a)."','".$v->f."','".$v->t."','".$obj."',$id,".$v->i.")";
  1389.                                 $wpdb->query($sql);
  1390.                         }
  1391.                                
  1392.                         return '{"result":"done","id":"'.$id.'",'.join(',',$return).'}';
  1393.                 }  //  end : processGallery()
  1394.  
  1395.  
  1396.  
  1397.                 function get_OptionTable($params=NULL, $plugin_id=0){
  1398.                         global $wpdb;
  1399. /*
  1400.                         if($params == NULL){
  1401.                         echo '
  1402.                 <script type="text/javascript">
  1403.                         $(document).ready(function(){
  1404.                                 $("#selectGallery").trigger("change");
  1405.                         });
  1406.                 </script>
  1407.                         ';
  1408.                         }
  1409.                         else{
  1410. */
  1411.                                 if (!extension_loaded('json')){
  1412.                                         include_once('JSON.php');
  1413.                                         $json = new JSON;
  1414.                                         $objs = $json->unserialize(stripslashes($params));
  1415.                                 }
  1416.                                 else{
  1417.                                         $objs = json_decode(stripslashes($params));
  1418.                                 }
  1419.                                
  1420.                                 if( $plugin_id != 0 ){
  1421.                                
  1422.                                         $sql = "SELECT * FROM ".$this->options['plugins']." WHERE plugin_id = ".$wpdb->escape($plugin_id);
  1423.                                         $r = $wpdb->get_row($sql);
  1424.                                 }
  1425.                                
  1426.                                 if (!extension_loaded('json')){
  1427.                                         include_once('JSON.php');
  1428.                                         $json = new JSON;
  1429.                                         $galparams = $json->unserialize(stripslashes($r->plugin_params));
  1430.                                 }
  1431.                                 else{
  1432.                                         $galparams = json_decode(stripslashes($r->plugin_params));
  1433.                                 }
  1434.                                 $return = '';
  1435.                                 if($galparams->parameters){
  1436.                                         foreach ($galparams->parameters as $galparam => $v) {
  1437.                                                 $return .= '<tr><td>'.$v->param.'</td><td><input type="text" size="30" name="'.$v->param.'"';
  1438.                                                 $tmp = $v->param;
  1439.                                                 $return .= ($objs->$tmp) ? ' value="'.$objs->$tmp.'" ' : '';
  1440.                                                 $return .= '/></td><td>'.$v->desc.'</td></tr>';
  1441.                                         }
  1442.                                 }
  1443.                                 echo $return;
  1444. /*
  1445.                         }
  1446. */
  1447.                 }
  1448.  
  1449.                 //*****************************************//
  1450.                        
  1451.                 function get_album_dir($id = NULL){
  1452.                         global $wpdb;
  1453.                         if( $id == NULL ){
  1454.                                 $id = $_GET['aid'];
  1455.                         }
  1456.                         $sql = "SELECT * FROM ".$this->options['albums']." WHERE album_id = ".$wpdb->escape($id);
  1457.                         $r = $wpdb->get_row($sql);
  1458.                         $options = get_option('photoxhibit');
  1459.  
  1460.                        
  1461.                         $this->cur_album_dir = get_bloginfo('wpurl').'/'.$options["options_path"].'/'.sanitize_title($r->album_name);
  1462.                 }
  1463.                        
  1464.                 function get_upload_dir($id = NULL){
  1465.                         global $wpdb;
  1466.                         if( $id == NULL ){
  1467.                                 $id = $_GET['aid'];
  1468.                         }
  1469.                         $sql = "SELECT * FROM ".$this->options['albums']." WHERE album_id = ".$wpdb->escape($id);
  1470.                         $r = $wpdb->get_row($sql);
  1471.                         $options = get_option('photoxhibit');
  1472.                         /*
  1473.  
  1474.                         if (!is_dir(ABSPATH.$options["options_path"].'/'.sanitize_title($r->album_name))) {
  1475.                                 @mkdir(ABSPATH.$options["options_path"].'/'.sanitize_title($r->album_name),0777);
  1476.                         }
  1477.                        
  1478.                         */
  1479.                        
  1480.                         $this->cur_upload_dir = ABSPATH.$options["options_path"].'/'.sanitize_title($r->album_name);
  1481.                         wp_mkdir_p($this->cur_upload_dir);
  1482.                         $this->cur_album_dir = get_bloginfo('wpurl').'/'.$options["options_path"].'/'.sanitize_title($r->album_name);
  1483.                 }
  1484.                
  1485.                 function imageUpload(){
  1486.                         global $wpdb;
  1487.                        
  1488.                         $endMessage = '';
  1489.                        
  1490.                         include('class.upload.php');
  1491. /*                     
  1492.                         if (isset($post["PHPSESSID"])) {
  1493.                                 session_id($post["PHPSESSID"]);
  1494.                         }
  1495.                         session_start();
  1496. */
  1497.                         $files = array();
  1498.                         foreach ($_FILES['Filedata'] as $k => $l) {
  1499.                                 foreach ($l as $i => $v) {
  1500.                                         if (!array_key_exists($i, $files)){
  1501.                                                 $files[$i] = array();
  1502.                                         }
  1503.                                         $files[$i][$k] = $v;
  1504.                                 }
  1505.                         }
  1506.                        
  1507.                         foreach( $files as $file ){
  1508.                                
  1509.                                 if (!isset($file) || !is_uploaded_file($file["tmp_name"]) || $file["error"] != 0) {
  1510.                                         if( $_GET['do'] != "upload" ){
  1511.                                                 header("HTTP/1.1 500 File Upload Error");
  1512.                                                 if (isset($file)) {
  1513.                                                         echo $file["error"];
  1514.                                                 }              
  1515.                                                 exit(0);
  1516.                                         }
  1517.                                 }
  1518.                                 else{
  1519.                                         $handle = new Upload($file);
  1520.                                         $options = get_option('photoxhibit');
  1521.        
  1522.                                     // then we check if the file has been uploaded properly
  1523.                                     // in its *temporary* location in the server (often, it is /tmp)
  1524.                                     if ($handle->uploaded) {
  1525.                                                 $this->get_upload_dir();
  1526.                                                
  1527.                                                 if($options['options_original'] == 1){
  1528.                                                         $handle->file_name_body_add = '_o';
  1529.                                                         $handle->process($this->cur_upload_dir);
  1530.                                                 }
  1531.                                                
  1532.                                                 // yes, the file is on the server
  1533.                                                 // below are some example settings which can be used if the uploaded file is an image.
  1534.                                                 $handle->image_resize           = true;
  1535.                                                 $handle->image_ratio            = true;
  1536.                                                 $handle->image_ratio_no_zoom_in = true;
  1537.                                                 $handle->image_x              = $options["options_MaxWidth"];
  1538.                                                 $handle->image_y              = $options["options_MaxHeight"];
  1539.                                                 $handle->jpeg_quality           = $options["options_imageQuality"];
  1540.                                                 $handle->process($this->cur_upload_dir);
  1541.                                                
  1542.                                                 $file_dst_name_ext = $handle->file_dst_name_ext;
  1543.                                                 $file_dst_name = $handle->file_dst_name_body;
  1544.        
  1545.                                                 // we now process the image a second time, with some other settings
  1546.                                                 $handle->image_resize    = true;
  1547.                                                 $handle->image_ratio   = true;
  1548.                                                 $handle->image_ratio_no_zoom_in = true;
  1549.                                                 $handle->image_x              = $options["options_thumbailW"];
  1550.                                                 $handle->image_y              = $options["options_thumbailH"];
  1551.                                                 $handle->jpeg_quality           = $options["options_tnimageQuality"];
  1552.                                                 $handle->file_new_name_body = $file_dst_name . '_tn';
  1553.                                                 $handle->process($this->cur_upload_dir);
  1554.                                                
  1555.                                                
  1556.                                                 $file_dst_name_body = $handle->file_dst_name_body;
  1557.                                                
  1558.                                                 if( $options['options_thumbailSet'] == 1 ){
  1559.                                                
  1560.                                                         $handle->image_resize           = true;
  1561.                                                         $handle->image_ratio            = true;
  1562.                                                         $handle->image_ratio_no_zoom_in = true;
  1563.                                                         $handle->image_x              = $options["options_thumbailW2"];
  1564.                                                         $handle->image_y              = $options["options_thumbailH2"];
  1565.                                                         $handle->jpeg_quality           = $options["options_tnimageQuality"];
  1566.                                                         $handle->file_new_name_body = $file_dst_name.'_ltn';
  1567.                                                         $handle->process($this->cur_upload_dir);
  1568.                                                
  1569.                                                 }
  1570.                                                 // we delete the temporary files
  1571.                                                 $handle->clean();
  1572.                                                
  1573.                                                 if ($handle->processed) {
  1574.                                                         $sql = "INSERT INTO ".$this->options['albumPhotos']."
  1575.                                                                         (album_id,albumPhotos_file, albumPhotos_ext) VALUES (".$_GET['aid'].",'".$file_dst_name."','".$file_dst_name_ext."')";
  1576.                                                         $wpdb->query($sql);
  1577.                                                         $id = mysql_insert_id();
  1578.                                                        
  1579.                                                         $return = '{"albumPhotos_id":'.$id.', "albumPhotos_file":"'.$file_dst_name_body.'", "albumPhotos_ext":"'.$file_dst_name_ext.'", "path":"'.$this->cur_album_dir.'"}';
  1580.                                                         $endMessage .= '<li>'.$file_dst_name.'.'.$file_dst_name_ext.'</li>';
  1581.                                                 }
  1582.                                                 else {
  1583.                                                         $return = '{"error":"'.$handle->error.'"}';
  1584.                                                 }
  1585.                                                 if( $_GET['do'] != "upload" ){
  1586.                                                         return $return;
  1587.                                                         exit(0);
  1588.                                                 }
  1589.        
  1590.                                         } else {
  1591.                                                 // if we're here, the upload file failed for some reasons
  1592.                                                 // i.e. the server didn't receive the file
  1593.                                                 echo '<fieldset>';
  1594.                                                 echo '  <legend>file not uploaded on the server</legend>';
  1595.                                                 echo '  Error: ' . $handle->error . '';
  1596.                                                 echo '</fieldset>';
  1597.                                         }
  1598.                                         unset($handle);
  1599.                                 }  //  end : else (!isset($file) || !is_uploaded_file($file["tmp_name"]) || $file["error"] != 0)
  1600.                         } // end : foreach( $files as $file )
  1601.  
  1602.                         if( $_GET['do'] == "upload" ){
  1603.                                 echo '<div class="wrap"><p>';
  1604.                                 _e('The following files have been uploaded with out issue:');
  1605.                                 echo '</p><ul>'.$endMessage . '</ul></div>';
  1606.                         }
  1607.                 }
  1608.  
  1609.         }  //  end : px
  1610. }  //  end : if(!class_exists("px"))
  1611. ?>
clone this paste RAW Paste Data