jegtheme

ajax.php (portfolio category)

May 2nd, 2013
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 15.81 KB | None | 0 0
  1. <?php
  2. add_action('wp_ajax_get_portfolio_item'         , 'jeg_get_portfolio_item');
  3. add_action('wp_ajax_nopriv_get_portfolio_item'  , 'jeg_get_portfolio_item');
  4.  
  5. add_action('wp_ajax_resparser'                  , 'jeg_resparser');
  6. add_action('wp_ajax_nopriv_resparser'           , 'jeg_resparser');
  7.  
  8. add_action('wp_ajax_contact'                    , 'jeg_send_contact');
  9. add_action('wp_ajax_nopriv_contact'             , 'jeg_send_contact');
  10.  
  11. add_action('wp_ajax_font_variant'               , 'jeg_ajax_font_variant');
  12. add_action('wp_ajax_nopriv_font_variant'        , 'jeg_ajax_font_variant');
  13.  
  14. add_action('wp_ajax_get_gallery'                , 'jeg_get_gallery');
  15. add_action('wp_ajax_nopriv_get_gallery'         , 'jeg_get_gallery');
  16.  
  17. add_action('wp_ajax_portfolio_load_more'                , 'jeg_portfolio_more');
  18. add_action('wp_ajax_nopriv_portfolio_load_more'         , 'jeg_portfolio_more');
  19.  
  20. /** get page image **/
  21. add_action('wp_ajax_get_paged_image'            , 'jeg_get_paged_image');
  22. add_action('wp_ajax_nopriv_get_paged_image'     , 'jeg_get_paged_image');
  23.  
  24. add_action('wp_ajax_portfolio_change_sequence'              , 'jeg_change_sequence');
  25. add_action('wp_ajax_nopriv_portfolio_change_sequence'       , 'jeg_change_sequence');
  26.  
  27. $ajxtpl = new JTemplate(JEG_ADMIN_TEMPLATE_PATH . 'metabox/');
  28.  
  29. function jeg_get_paged_image($render = "")
  30. {
  31.     global $ajxtpl;
  32.     $page  = isset($_REQUEST['page']) ? $_REQUEST['page'] : 1;
  33.            
  34.     $statement = array (
  35.             'post_type'         => 'attachment',
  36.             'post_mime_type'    => 'image',
  37.             'post_status'       => 'inherit',
  38.             'posts_per_page'    => 14,
  39.             'paged'             => $page
  40.     );
  41.     $result = new WP_Query($statement);
  42.    
  43.     $data = array();
  44.     $data['images']         = $result->posts;
  45.     $data['pages']          = $result->max_num_pages;
  46.     $data['totalpost']      = $result->found_posts;
  47.     $data['curpage']        = $page;
  48.    
  49.     if($render === "") {
  50.         $ajxtpl->render('helper-image-paging', $data, true);
  51.     } else {
  52.         return $ajxtpl->render('helper-image-paging', $data);
  53.     }
  54.     exit;
  55. }
  56.  
  57.  
  58. /*** get font variant **/
  59. function jeg_ajax_font_variant () {
  60.     $fontname = $_REQUEST['font'];
  61.    
  62.     include JEG_UTIL . '/googlefont.php';
  63.     $serialize = $googlefont;
  64.    
  65.     $unserialized = unserialize($serialize);
  66.     $items = $unserialized->items;
  67.    
  68.     foreach($items as $item) {
  69.         if($item->family == $fontname) {       
  70.             jsendResponse($item->variants);
  71.         }
  72.     }
  73. }
  74.  
  75. define('JEG_PORTFOLIO_TEMPLATE_PATH'    , JEG_ADMIN_TEMPLATE_PATH . 'portfolio/');
  76. $jptemplate = new JTemplate(JEG_PORTFOLIO_TEMPLATE_PATH);
  77.  
  78. /**
  79.  * portfolio load more
  80.  */
  81. function jeg_portfolio_more ()
  82. {
  83.    
  84.     global $jptemplate;
  85.     global $wp_query;
  86.    
  87.     $id     = isset($_REQUEST['id']) ? $_REQUEST['id'] : 1;
  88.     $page   = isset($_REQUEST['page']) ? $_REQUEST['page'] : 1;
  89.     $cat    = $_REQUEST['cat'];
  90.    
  91.     $data = array();
  92.     $data['portoLayout']     = j_get_meta('portfolio_layout', JEG_DEFAULT_PORTO_LAYOUT, $id);
  93.     $data['portoItemWidth']  = j_get_meta('portfolio_item_width' , 180, $id);
  94.     $data['portoItemHeight'] = j_get_meta('portfolio_item_height', 210, $id);
  95.     $data['portoExclude']    = j_get_meta('portfolio_exclude', null, $id);
  96.     $data['postid']          = $id;
  97.    
  98.     if(empty($cat)) {
  99.         $data['portfolioitem'] = query_posts(array(
  100.             'post_type'             => JEG_PORTFOLIO_POST_TYPE ,
  101.             'posts_per_page'        => j_get_meta('portfolio_per_page', 10, $id),
  102.             'paged'                 => $page,
  103.             'tax_query'             => array(
  104.                 array(
  105.                     'taxonomy'  =>  JEG_PORTFOLIO_CATEGORY,
  106.                     'terms'     =>  $data['portoExclude'],  
  107.                     'field'     => 'id',
  108.                     'operator'  => 'NOT IN'
  109.                 )
  110.             ),
  111.             "orderby"               => "date",
  112.             "order"                 => "DESC"
  113.         ));
  114.     } else {
  115.         $data['portfolioitem'] = query_posts(array(
  116.             'post_type'             => JEG_PORTFOLIO_POST_TYPE ,
  117.             'posts_per_page'        => j_get_meta('portfolio_per_page', 10, $id),
  118.             'paged'                 => $page,
  119.             'tax_query'             => array(
  120.                 array(
  121.                     'taxonomy'  =>  JEG_PORTFOLIO_CATEGORY,
  122.                     'terms'     =>  $data['portoExclude'],  
  123.                     'field'     => 'id',
  124.                     'operator'  => 'NOT IN'
  125.                 )
  126.             ),
  127.             'tax_query'             => array(
  128.                 array(
  129.                     'taxonomy'  =>  JEG_PORTFOLIO_CATEGORY,
  130.                     'terms'     =>  $cat,  
  131.                     'field'     => 'id',
  132.                     'operator'  => 'IN'
  133.                 )
  134.             ),
  135.             "orderby"               => "date",
  136.             "order"                 => "DESC"
  137.         ));
  138.     }
  139.    
  140.     $html = $jptemplate->render('portfolio', $data);
  141.    
  142.     jsendResponse(array(
  143.         'pagenext'  => $page + 1,
  144.         'totalpage' => $wp_query->max_num_pages,
  145.         'category'  => 0,
  146.         'html'      => $html
  147.     ));
  148.    
  149.     echo $html;
  150.     exit;
  151. }
  152.  
  153. /**
  154.  * build smtp function
  155.  **/
  156.  
  157. add_action('init', 'jeg_email_init');
  158.  
  159. function jeg_email_init()
  160. {  
  161.     add_action( 'phpmailer_init'        ,'j_phpmailer_init');
  162.        
  163.     if(j_get_option('use_smtp')) {
  164.         add_action( 'phpmailer_init'        ,'j_phpmailer_smtp_init');
  165.         add_filter( 'wp_mail_from'          ,'j_mail_from');
  166.         add_filter( 'wp_mail_from_name'     ,'j_mail_from_name');
  167.     }
  168. }
  169.  
  170. function j_phpmailer_init($phpmailer)
  171. {
  172.     $phpmailer->ContentType = 'text/html';
  173. }
  174.  
  175. function j_phpmailer_smtp_init($phpmailer)
  176. {
  177.     $phpmailer->IsSMTP();
  178.     $phpmailer->Host =  j_get_option('smtp_host');
  179.     $phpmailer->Port =  j_get_option('smtp_port');
  180.     $phpmailer->SMTPAuth = true;
  181.     if ( $phpmailer->SMTPAuth ) {
  182.         $phpmailer->Username = j_get_option('smtp_user');
  183.         $phpmailer->Password = j_get_option('smtp_pass');
  184.     }  
  185.    
  186.     $enablesmtpdebug = (bool) j_get_option('enable_smtp_loging');
  187.     $phpmailer->SMTPDebug = $enablesmtpdebug;
  188.     $phpmailer->SMTPSecure = j_get_option('smtp_prefix');
  189. }
  190.  
  191. function j_mail_from( $from ) {
  192.     return j_get_option('email_from');
  193. }
  194.  
  195. function j_mail_from_name( $from_name ) {      
  196.     return wp_specialchars_decode(j_get_option('email_from_name'), ENT_QUOTES);
  197. }
  198.  
  199. /**
  200.  * send contact
  201.  */
  202. function jeg_send_contact()
  203. {
  204.     if(isset($_REQUEST["name"]) && $_REQUEST["name"] &&
  205.         isset($_REQUEST["email"]) && $_REQUEST["email"] &&
  206.         isset($_REQUEST["message"]) && $_REQUEST["message"]) {
  207.  
  208.             $jtemplate = new JTemplate(JEG_ADMIN_TEMPLATE_PATH);
  209.            
  210.             $email_from             = j_get_option('email_from');
  211.             $email_from_name        = j_get_option('email_from_name');
  212.             $email_subject          = j_get_option('email_subject');
  213.            
  214.             $data = array(
  215.                 'name'      => $_REQUEST['name'],
  216.                 'email'     => $_REQUEST['email'],
  217.                 'message'   => $_REQUEST['message']
  218.             );
  219.            
  220.             $template_data = array(
  221.                 'header_logo'   => j_get_option('email_logo'),
  222.                 'head_color'    => j_get_option('email_head_color'),
  223.                 'body_color'    => j_get_option('email_body_color'),
  224.                 'body_text'     => j_get_option('email_body_text_color'),
  225.                 'footer_text'   => j_get_option('email_footer_text'),
  226.                 'body_text'     => j_get_option('email_body_text')
  227.             );
  228.            
  229.             $email_subject          = j_build_email_content($email_subject, $data);
  230.             $email_body             = j_build_email_content($jtemplate->render('email-template', $template_data), $data);
  231.             $email_headers          =  sprintf("From: %s <%s>\r\n", $email_from_name, $email_from);
  232.             $email_headers          .= sprintf("Reply-To: %s\r\n", $data['email']);
  233.             $email_headers          .= sprintf("Return-Path : %s\r\n", $data['email']);
  234.             $email_headers          .= sprintf("CC : %s\r\n", $email_from);
  235.            
  236.             $wpstatus = false;
  237.             $wpstatus = wp_mail ($_REQUEST['email'], $email_subject, $email_body, $email_headers);
  238.            
  239.             if($wpstatus) {
  240.                 jsendResponse(array(
  241.                     'status'    => 1                   
  242.                 ));
  243.             } else {
  244.                 jsendResponse(array(
  245.                     'status'    => 0           
  246.                 ));
  247.             }
  248.     } else {
  249.         jsendResponse(array(
  250.             'status'    => 0           
  251.         ));
  252.     }
  253. }
  254.  
  255. /** js send response **/
  256. function jsendResponse($param) {
  257.     // need to add chunk to prevent error of zlib output (http://core.trac.wordpress.org/ticket/18525) 
  258.     /* remove chunk
  259.     if(is_array($param)) {
  260.         array_push($param, array('chunk'=> str_repeat(chr(0), 4096)));
  261.     }
  262.     */
  263.    
  264.     echo json_encode($param);
  265.     die();
  266. }
  267.  
  268. /** resparser **/
  269. function iscurlinstalled() {
  270.     if  ( in_array  ( 'curl', get_loaded_extensions() ) )
  271.         return true;
  272.     else
  273.         return false;
  274. }
  275.  
  276. function j_get_user_cookie() {
  277.     $cookies = array();
  278.     foreach($_COOKIE as $key=>$value) {    
  279.         $cookies[] = new WP_Http_Cookie(array(
  280.             'name'  => $key,
  281.             'value' => $value
  282.         ));
  283.     }
  284.    
  285.     return $cookies;
  286. }
  287.  
  288. function j_parse_content($content, $url)
  289. {
  290.     include_once JEG_UTIL .  "simplehtmldom/simple_html_dom.php";
  291.    
  292.     $html = new simple_html_dom();
  293.     $html->load($content);
  294.        
  295.     $main = $html->find('#main',0)->innertext;     
  296.     $title = $html->find('title',0)->plaintext;
  297.    
  298.     $langwrapper = "";
  299.     $langwrap = $html->find('.langwrapper', 0);
  300.     if(isset($langwrap)) { 
  301.         $langwrapper = $html->find('.langwrapper', 0)->innertext;  
  302.     }
  303.    
  304.     jsendResponse(array(
  305.         'main'      => $main,
  306.         'title'     => $title,
  307.         'url'       => $url,
  308.         'wraplang'  => $langwrapper,       
  309.         'id'        => 1
  310.     ));
  311. }
  312.  
  313. function jeg_parse_url($reqUrl)
  314. {
  315.     $host   = preg_replace('/^www\./i', '', $_SERVER['HTTP_HOST']);
  316.     $src    = preg_replace('/https?:\/\/(?:www\.)?' . $host . '/i', '', $reqUrl);
  317.    
  318.     // cannot direct access & referer must be our host & must be ajax
  319.     if(!array_key_exists('HTTP_REFERER', $_SERVER)
  320.         || (! preg_match('/^https?:\/\/(?:www\.)?' . $host . '(?:$|\/)/i', $_SERVER['HTTP_REFERER']))
  321.         || !jisAjax()){
  322.         return false;
  323.     } else {
  324.         if(preg_match('/^https?:\/\/[^\/]+/i', $src)){
  325.             return false;
  326.         } else {
  327.             return $reqUrl;
  328.         }
  329.     }  
  330. }
  331.  
  332. function j_find_ip() {
  333.     if(getenv("HTTP_CLIENT_IP"))
  334.         return getenv("HTTP_CLIENT_IP");
  335.     else if(getenv("HTTP_X_FORWARDED_FOR"))
  336.         return getenv("HTTP_X_FORWARDED_FOR");
  337.     else
  338.         return getenv("REMOTE_ADDR");
  339. }
  340.  
  341. add_action('http_request_timeout', 'jeg_set_http_timeout');
  342.  
  343. function jeg_set_http_timeout() {
  344.     return 5;
  345. }
  346.  
  347. function jeg_resparser()
  348. {
  349.     $url = $_REQUEST['requri'];
  350.     $referrer = $_REQUEST['cururl'];
  351.     $requestUrl = jeg_parse_url($url);     
  352.    
  353.     $requestUrl = $url;
  354.    
  355.     if($requestUrl === false) {
  356.         // request come from outside server / request get content outside the server
  357.         jsendResponse(array(
  358.             'id'    => 0,
  359.             'msg'   => "fail to serve request"
  360.         ));
  361.     } else {
  362.         $http = new WP_Http();
  363.         $ip = j_find_ip();
  364.        
  365.         $args = array(
  366.             'cookies'               => j_get_user_cookie()  ,  
  367.             'headers'               => array("REMOTE_ADDR" => $ip,
  368.                                         "HTTP_X_FORWARDED_FOR" => $ip),
  369.         );
  370.        
  371.         $result = $http->request( $requestUrl, $args );
  372.         j_parse_content($result['body'], $requestUrl);
  373.     }
  374.     die;
  375. }
  376.  
  377. function jeg_get_gallery() {
  378.     global $jptemplate;
  379.    
  380.     if(isset($_REQUEST['id'])){
  381.         $post = get_post($_REQUEST['id']);
  382.        
  383.         if(!empty($post->post_password) && !isset($_REQUEST['password'])) {
  384.             jsendResponse(array("status" => 2));
  385.         } else if(!empty($post->post_password) && ($_REQUEST['password'] != $post->post_password)) {
  386.             jsendResponse(array("status" => 3));
  387.         } else {
  388.             $data = array();
  389.             $data['postid'] = $_REQUEST['id'];
  390.             $data['use_paging'] = j_get_meta('image_paging', 0, $data['postid']);
  391.            
  392.             jsendResponse(array(
  393.                 "status"    => 1,
  394.                 "content"   => $jptemplate->render('imagegallery', $data)              
  395.             ));        
  396.         }
  397.     } else {
  398.         jsendResponse(array("exit" => "Incomplete Parameter"));    
  399.     }
  400. }
  401.  
  402. /** end of resparser **/
  403. function jeg_get_portfolio_item() {
  404.     global $jptemplate;
  405.    
  406.     if(isset($_REQUEST['id'])){
  407.         $post = get_post($_REQUEST['id']);
  408.        
  409.         if(!$post || $post->post_type != JEG_PORTFOLIO_POST_TYPE) {
  410.             jsendResponse(array("status" => 4));
  411.         } else {
  412.            
  413.             if(!empty($post->post_password) && !isset($_REQUEST['password'])) {
  414.                 jsendResponse(array("status" => 2));
  415.             } else if(!empty($post->post_password) && ($_REQUEST['password'] != $post->post_password)) {
  416.                 jsendResponse(array("status" => 3));
  417.             } else {
  418.                 $data = array();
  419.                 $html = "";
  420.                                            
  421.                 /** category **/
  422.                 $data['catlist'] = array();
  423.                
  424.                 /** title & content **/
  425.                 $data['title']      = $post->post_title;
  426.                 $data['content']    = apply_filters('the_content', $post->post_content);               
  427.                
  428.                 /** dimension **/
  429.                 $data['width']      = $_REQUEST['width'];
  430.                 $data['height']     = $_REQUEST['height'];
  431.                
  432.                 // porfolio type
  433.                 $mediatype = j_get_meta('portfolio_media', '', $_REQUEST['id']);
  434.                 $data['socialblock']        = $jptemplate->render('socialblock', null, false);
  435.                
  436.                 $termlist = get_the_terms($_REQUEST['id'], JEG_PORTFOLIO_CATEGORY);
  437.                 if(!empty($termlist)) {
  438.                     foreach(get_the_terms($_REQUEST['id'], JEG_PORTFOLIO_CATEGORY) as $category) {                     
  439.                         $data['category'][] = $category->name;
  440.                     }
  441.                 }
  442.                
  443.                 switch($mediatype) {
  444.                     case 'gallery'  :
  445.                         // get image gallery from new implementation for image gallery
  446.                         $galleries = jeg_get_image_gallery($_REQUEST['id'], 'porto_image_gallery');
  447.                        
  448.                         if($galleries !== false) {
  449.                             $data['gallery'] = $galleries;
  450.                         } else {
  451.                            
  452.                             // pake gallery biasa
  453.                             $galleries = get_children(
  454.                                 array(  'order'             => 'ASC',
  455.                                         'orderby'           =>'menu_order',
  456.                                         'post_parent'       => $_REQUEST['id'],
  457.                                         'post_type'         => 'attachment',
  458.                                         'post_mime_type'    =>'image' )
  459.                             );
  460.                                
  461.                             foreach ($galleries as $gallery) {
  462.                                 $data['gallery'][] = array(
  463.                                     'file'      => $gallery->guid,
  464.                                     'desc'      => get_post_meta($gallery->ID, '_wp_attachment_image_alt', true),
  465.                                     'title'     => $gallery->post_title
  466.                                 );
  467.                             }
  468.                         }
  469.                        
  470.                         $data['image_cover']        = j_get_meta('porto_gallery_cover', '', $_REQUEST['id']);
  471.                         $data['download_url']       = j_get_meta('porto_gallery_download_url', '', $_REQUEST['id']);
  472.                         $data['croped_image']       = ((bool)j_get_meta('porto_gallery_crop', false, $_REQUEST['id']));
  473.                         $data['image_caption']      = j_get_meta('portfolio_image_caption', 0 ,$_REQUEST['id']);
  474.                                                
  475.                         $data['type']   = 'gallery';
  476.                         $html = $jptemplate->render('gallery', $data);
  477.                         break;
  478.                     case 'youtube'  :
  479.                         $data['image_cover']    = j_get_meta('porto_youtube_cover', '', $_REQUEST['id']);
  480.                         $data['youtube']        = j_get_meta('porto_youtube_url', '', $_REQUEST['id']);
  481.                         $data['download_url']   = j_get_meta('porto_youtube_download_url', '', $_REQUEST['id']);
  482.                         $data['type']       = 'youtube';
  483.                         $html = $jptemplate->render('youtube', $data);
  484.                         break;
  485.                     case 'vimeo'    :
  486.                         $data['image_cover']    = j_get_meta('porto_vimeo_cover', '', $_REQUEST['id']);
  487.                         $data['vimeo']          = j_get_meta('porto_vimeo_url', '', $_REQUEST['id']);
  488.                         $data['download_url']   = j_get_meta('porto_vimeo_download_url', '', $_REQUEST['id']);
  489.                         $data['type']   = 'vimeo';
  490.                         $html = $jptemplate->render('vimeo', $data);
  491.                         break;
  492.                     case 'html-5-video' :
  493.                         $data['image_cover']    = j_get_meta('porto_video_cover', '', $_REQUEST['id']);
  494.                         $data['mp4']            = j_get_meta('porto_video_mp4', '', $_REQUEST['id']);
  495.                         $data['ogg']            = j_get_meta('porto_video_ogg', '', $_REQUEST['id']);
  496.                         $data['webm']           = j_get_meta('porto_video_webm', '', $_REQUEST['id']);
  497.                         $data['cover']          = j_get_meta('porto_video_cover', '', $_REQUEST['id']);
  498.                         $data['download_url']   = j_get_meta('porto_video_download_url', '', $_REQUEST['id']);
  499.                         $data['type']   = 'video';
  500.                         $html = $jptemplate->render('video', $data);
  501.                         break;
  502.                     case 'music'    :
  503.                         $data['image_cover']    = j_get_meta('porto_music_cover', '', $_REQUEST['id']);
  504.                         $data['audio']          = j_get_meta('porto_music_mp3', '', $_REQUEST['id']);
  505.                         $data['audio_ogg']      = j_get_meta('porto_music_ogg', '', $_REQUEST['id']);
  506.                         $data['cover']          = j_get_meta('porto_music_cover', '', $_REQUEST['id']);
  507.                         $data['download_url']   = j_get_meta('porto_audio_download_url', '', $_REQUEST['id']);
  508.                         $data['type']   = 'audio';
  509.                         $html = $jptemplate->render('audio', $data);
  510.                         break;
  511.                 }
  512.                
  513.                 jsendResponse(array(
  514.                     "status"    => 1,
  515.                     "content"   => $html ,
  516.                     "title"     => $data['title'] ,
  517.                     "type"      => $data['type'],
  518.                     "love"      => j_get_like_count($_REQUEST['id']),
  519.                     "voted"     => j_have_voted($_REQUEST['id'])
  520.                 ));        
  521.             }
  522.         }
  523.     } else {
  524.         jsendResponse(array("exit" => "Incomplete Parameter"));    
  525.     }
  526. }
Advertisement
Add Comment
Please, Sign In to add comment