2006-12-02 04:36:16 +00:00
< ? php
/*
2008-12-10 16:59:19 +00:00
* e107 website system
*
2009-11-18 01:06:08 +00:00
* Copyright ( C ) 2008 - 2009 e107 Inc ( e107 . org )
2008-12-10 16:59:19 +00:00
* Released under the terms and conditions of the
* GNU General Public License ( http :// www . gnu . org / licenses / gpl . txt )
*
* Image Administration Area
*
*
2006-12-02 04:36:16 +00:00
*/
2012-04-22 06:19:21 +00:00
2015-04-17 11:46:47 -07:00
if ( ! empty ( $_GET [ 'action' ]) && $_GET [ 'action' ] == 'dialog' )
2013-02-23 23:08:30 -08:00
{
define ( 'e_MINIMAL' , true );
}
2012-04-22 06:19:21 +00:00
if ( ! defined ( 'e107_INIT' ))
{
require_once ( " ../class2.php " );
}
2016-11-25 17:59:17 -08:00
if ( ! getperms ( " A " ) && ( $_GET [ 'action' ] != 'dialog' ) && ( $_GET [ 'action' ] != 'youtube' ))
2008-12-29 15:23:06 +00:00
{
2016-01-13 19:17:37 -08:00
e107 :: redirect ( 'admin' );
2006-12-02 04:36:16 +00:00
exit ;
}
2008-12-10 16:59:19 +00:00
2016-11-25 17:59:17 -08:00
if ( $_GET [ 'action' ] == 'youtube' )
{
if ( ! getperms ( 'A' ) && ! getperms ( 'A1' ))
{
exit ;
}
}
2016-12-20 10:58:43 +01:00
// TODO use library manager
2012-12-04 18:21:57 +01:00
e107 :: js ( 'core' , 'plupload/plupload.full.js' , 'jquery' , 2 );
e107 :: css ( 'core' , 'plupload/jquery.plupload.queue/css/jquery.plupload.queue.css' , 'jquery' );
2016-10-01 14:29:03 -07:00
e107 :: js ( 'core' , 'plupload/jquery.plupload.queue/jquery.plupload.queue.min.js' , 'jquery' , 2 );
2012-12-04 18:21:57 +01:00
e107 :: js ( 'core' , 'core/mediaManager.js' , " jquery " , 5 );
2015-01-29 11:26:56 -08:00
e107 :: wysiwyg ( true );
2009-11-07 11:20:34 +00:00
/*
* CLOSE - GO TO MAIN SCREEN
*/
if ( isset ( $_POST [ 'submit_cancel_show' ]))
{
header ( 'Location: ' . e_SELF );
exit ();
}
2017-01-17 01:33:03 +01:00
e107 :: coreLan ( 'image' , true );
2009-08-28 16:11:02 +00:00
2015-07-19 17:10:03 -07:00
if ( $_GET [ 'action' ] == 'dialog' )
{
e107 :: css ( 'inline' , " body { background-color: #373737 } " );
}
2014-01-08 15:51:14 -08:00
2012-12-08 15:52:40 +01:00
if ( vartrue ( $_GET [ 'action' ]) == 'nav' && e_AJAX_REQUEST ) //XXX Doesn't work correctly inside the class for some reason
2012-08-04 04:15:41 +00:00
{
define ( " e_IFRAME " , true );
2015-07-19 17:10:03 -07:00
2012-08-04 04:15:41 +00:00
// require_once(e_ADMIN."auth.php");
$bbcodeMode = ( $_GET [ 'bbcode' ] == 'img' ) ? 'bbcode=img' : FALSE ;
if ( $_GET [ 'from' ])
{
$bbcodeMode .= " &from= " . intval ( $_GET [ 'from' ]);
}
2013-03-22 16:55:22 -07:00
if ( $_GET [ 'w' ])
{
$bbcodeMode .= " &w= " . intval ( $_GET [ 'w' ]);
}
2012-08-04 04:15:41 +00:00
$bbcodeMode .= " &nav=1 " ;
2016-12-15 15:08:49 +01:00
$tag = ( $bbcodeMode === false ) ? false : e107 :: getParser () -> filter ( $_GET [ 'tagid' ]); // eg. news, news-thumbnail
2012-08-04 04:15:41 +00:00
if ( $_GET [ 'search' ])
{
2016-12-15 15:08:49 +01:00
$search = e107 :: getParser () -> filter ( $_GET [ 'search' ]);
$bbcodeMode .= " &search= " . preg_replace ( " /[^a-z0-9]/i " , " " , $search );
2012-08-04 04:15:41 +00:00
}
2016-12-15 15:08:49 +01:00
$for = e107 :: getParser () -> filter ( $_GET [ 'for' ]);
2012-08-04 04:15:41 +00:00
2016-12-15 15:08:49 +01:00
echo e107 :: getMedia () -> mediaSelect ( $for , $tag , $bbcodeMode );
2012-08-04 04:15:41 +00:00
// require_once(e_ADMIN."footer.php");
exit ;
}
2012-09-03 23:02:45 +00:00
require ( e_HANDLER . 'phpthumb/ThumbLib.inc.php' ); // For resizing on import.
2012-08-04 04:15:41 +00:00
2006-12-02 04:36:16 +00:00
$e_sub_cat = 'image' ;
2008-12-10 16:59:19 +00:00
2012-04-28 01:31:30 +00:00
2009-11-07 11:20:34 +00:00
// $frm = new e_form(); //new form handler
2013-02-25 20:14:59 +01:00
$mes = e107 :: getMessage ();
2006-12-02 04:36:16 +00:00
2009-11-07 11:20:34 +00:00
class media_admin extends e_admin_dispatcher
2008-12-05 22:01:25 +00:00
{
2009-11-07 11:20:34 +00:00
protected $modes = array (
'main' => array (
'controller' => 'media_admin_ui' ,
'path' => null ,
2009-11-18 07:16:51 +00:00
'ui' => 'media_form_ui' ,
2009-11-07 11:20:34 +00:00
'uipath' => null
2009-11-18 07:16:51 +00:00
),
2012-05-25 11:30:49 +00:00
'dialog' => array (
'controller' => 'media_admin_ui' ,
'path' => null ,
'ui' => 'media_form_ui' ,
'uipath' => null
),
2009-11-18 07:16:51 +00:00
'cat' => array (
2010-10-04 16:01:17 +00:00
'controller' => 'media_cat_ui' ,
2009-11-18 07:16:51 +00:00
'path' => null ,
2010-10-04 16:01:17 +00:00
'ui' => 'media_cat_form_ui' ,
2009-11-18 07:16:51 +00:00
'uipath' => null
2010-03-09 16:05:41 +00:00
)
);
2009-11-07 11:20:34 +00:00
protected $adminMenu = array (
2012-12-04 18:21:57 +01:00
'main/list' => array ( 'caption' => LAN_IMA_M_01 , 'perm' => 'A' ),
2012-07-18 06:34:26 +00:00
// 'main/create' => array('caption'=> "Add New Media", 'perm' => 'A'), // Should be handled in Media-Import.
2016-11-25 17:59:17 -08:00
'main/import' => array ( 'caption' => LAN_IMA_M_02 , 'perm' => 'A|A1' ),
'cat/list' => array ( 'caption' => LAN_IMA_M_03 , 'perm' => 'A|A2' ),
'cat/create' => array ( 'caption' => LAN_IMA_M_04 , 'perm' => 'A|A2' ), // is automatic.
2012-06-17 11:52:10 +00:00
// 'main/settings' => array('caption'=> LAN_PREFS, 'perm' => 'A'), // legacy
'main/prefs' => array ( 'caption' => LAN_PREFS , 'perm' => 'A' ),
2012-12-04 18:21:57 +01:00
'main/avatar' => array ( 'caption' => LAN_IMA_M_05 , 'perm' => 'A' )
2009-11-07 11:20:34 +00:00
);
2010-03-09 16:05:41 +00:00
/*
2009-11-07 11:20:34 +00:00
$var [ 'main' ][ 'text' ] = IMALAN_7 ;
$var [ 'main' ][ 'link' ] = e_SELF ;
2012-06-02 08:12:16 +00:00
2009-11-07 11:20:34 +00:00
$var [ 'avatars' ][ 'text' ] = IMALAN_23 ;
$var [ 'avatars' ][ 'link' ] = e_SELF . " ?avatars " ;
$var [ 'editor' ][ 'text' ] = " Image Manipulation (future release) " ;
$var [ 'editor' ][ 'link' ] = e_SELF . " ?editor " ; */
2010-03-09 16:05:41 +00:00
2009-11-18 07:16:51 +00:00
2009-11-07 11:20:34 +00:00
protected $adminMenuAliases = array (
2010-03-09 16:05:41 +00:00
'main/edit' => 'main/list'
);
2009-11-07 11:20:34 +00:00
protected $menuTitle = LAN_MEDIAMANAGER ;
2010-03-09 16:05:41 +00:00
2009-11-07 11:20:34 +00:00
}
2010-10-04 16:01:17 +00:00
class media_cat_ui extends e_admin_ui
2010-03-09 16:05:41 +00:00
{
2012-12-04 18:21:57 +01:00
protected $pluginTitle = LAN_IMA_M_03 ;
2009-11-18 07:16:51 +00:00
protected $pluginName = 'core' ;
protected $table = " core_media_cat " ;
protected $pid = " media_cat_id " ;
protected $perPage = 0 ; //no limit
2009-12-02 10:03:53 +00:00
protected $batchDelete = false ;
2012-04-22 06:19:21 +00:00
public $ownerCount = array ();
2012-08-19 02:33:43 +00:00
// protected $listQry = "SELECT * FROM #core_media_cat"; // without any Order or Limit.
protected $listOrder = 'media_cat_owner asc' ;
2009-11-18 07:16:51 +00:00
// protected $editQry = "SELECT * FROM #faq_info WHERE faq_info_id = {ID}";
2010-03-09 16:05:41 +00:00
2009-11-18 07:16:51 +00:00
protected $fields = array (
2011-05-07 06:22:44 +00:00
//'checkboxes' => array('title'=> '', 'type' => null, 'width' =>'5%', 'forced'=> TRUE, 'thclass'=>'center', 'class'=>'center'),
2012-08-19 02:33:43 +00:00
'media_cat_id' => array ( 'title' => LAN_ID , 'type' => 'number' , 'width' => '5%' , 'nolist' => true , 'forced' => TRUE , 'readonly' => TRUE ),
2012-04-22 06:19:21 +00:00
'media_cat_image' => array ( 'title' => LAN_IMAGE , 'type' => 'image' , 'data' => 'str' , 'width' => '100px' , 'thclass' => 'center' , 'class' => 'center' , 'readParms' => 'thumb=60&thumb_urlraw=0&thumb_aw=60' , 'readonly' => FALSE , 'batch' => FALSE , 'filter' => FALSE ),
2012-12-04 18:21:57 +01:00
'media_cat_owner' => array ( 'title' => LAN_OWNER , 'type' => 'dropdown' , 'width' => 'auto' , 'thclass' => 'left' , 'readonly' => FALSE ),
2012-10-31 21:28:20 +00:00
2014-10-04 10:33:56 -07:00
'media_cat_type' => array ( 'title' => LAN_TYPE , 'type' => 'radio' , 'data' => false , 'width' => 'auto' , 'thclass' => 'left' , 'validate' => true , 'nolist' => true ),
2012-10-31 21:28:20 +00:00
2014-10-04 10:33:56 -07:00
'media_cat_category' => array ( 'title' => LAN_CATEGORY , 'type' => 'text' , 'data' => 'str' , 'width' => 'auto' , 'thclass' => 'left' , 'readonly' => TRUE ),
2016-10-18 16:10:52 -07:00
'media_cat_title' => array ( 'title' => LAN_TITLE , 'type' => 'text' , 'width' => 'auto' , 'thclass' => 'left' , 'readonly' => FALSE , 'validate' => true , 'writeParms' => array ( 'size' => 'xxlarge' )),
'media_cat_sef' => array ( 'title' => LAN_SEFURL , 'type' => 'text' , 'width' => 'auto' , 'thclass' => 'left' , 'readonly' => FALSE , 'writeParms' => array ( 'size' => 'xxlarge' , 'sef' => 'media_cat_title' )),
2012-04-22 06:19:21 +00:00
'media_cat_diz' => array ( 'title' => LAN_DESCRIPTION , 'type' => 'bbarea' , 'width' => '30%' , 'readParms' => 'expand=...&truncate=150&bb=1' , 'readonly' => FALSE ), // Display name
2009-11-18 07:16:51 +00:00
'media_cat_class' => array ( 'title' => LAN_VISIBILITY , 'type' => 'userclass' , 'width' => 'auto' , 'data' => 'int' ),
2012-04-22 06:19:21 +00:00
'media_cat_order' => array ( 'title' => LAN_ORDER , 'type' => 'text' , 'width' => '5%' , 'thclass' => 'right' , 'class' => 'right' ),
2012-08-19 02:33:43 +00:00
'options' => array ( 'title' => LAN_OPTIONS , 'type' => 'method' , 'noedit' => true , 'width' => '10%' , 'forced' => TRUE , 'thclass' => 'center last' , 'class' => 'center' )
2010-03-09 16:05:41 +00:00
);
2016-10-18 16:10:52 -07:00
private $restricted = array ();
2012-04-22 06:19:21 +00:00
function init ()
2009-11-18 07:16:51 +00:00
{
2012-08-19 02:33:43 +00:00
2016-10-18 16:10:52 -07:00
$this -> restricted = array (
2012-04-22 06:19:21 +00:00
" _common " => " _common " ,
2012-04-22 07:53:34 +00:00
" _icon " => " _icon " ,
" news " => " news " ,
2012-04-22 06:19:21 +00:00
" page " => " page " ,
2012-08-19 02:33:43 +00:00
" download " => " download "
2012-04-22 06:19:21 +00:00
);
2014-01-09 04:42:13 -08:00
// FIXME LAN
2016-10-07 11:43:44 +02:00
$this -> fields [ 'media_cat_type' ][ 'writeParms' ] = array ( 'image' => IMALAN_143 , 'file' => IMALAN_144 , 'video' => IMALAN_163 );
2012-10-31 21:28:20 +00:00
2012-10-31 20:18:18 +00:00
if ( $this -> getAction () == 'list' )
2012-08-19 02:33:43 +00:00
{
2016-10-18 16:10:52 -07:00
$this -> fields [ 'media_cat_owner' ][ 'writeParms' ] = $this -> restricted ;
2012-08-19 02:33:43 +00:00
}
2012-10-31 20:18:18 +00:00
if ( $this -> getAction () == 'create' )
{
$this -> fields [ 'media_cat_category' ][ 'noedit' ] = true ;
}
2013-01-17 16:08:07 +02:00
elseif ( $this -> getAction () == 'edit' )
{
$this -> fields [ 'media_cat_type' ][ 'noedit' ] = true ;
}
2012-08-19 02:33:43 +00:00
2012-04-22 06:19:21 +00:00
$sql = e107 :: getDb ();
2012-08-19 02:33:43 +00:00
2014-10-14 15:35:53 -07:00
if ( $sql -> gen ( " SELECT media_cat_owner, MAX(CAST(SUBSTRING_INDEX(media_cat_category, '_', -1 ) AS UNSIGNED)) as maxnum, count(media_cat_id) as number FROM `#core_media_cat` GROUP BY media_cat_owner " ))
2012-04-22 06:19:21 +00:00
{
2014-10-04 10:33:56 -07:00
while ( $row = $sql -> fetch ())
2012-08-19 02:33:43 +00:00
{
2013-04-27 13:20:17 +03:00
$this -> ownerCount [ $row [ 'media_cat_owner' ]] = $row [ 'number' ];
2014-10-04 10:33:56 -07:00
$own = $row [ 'media_cat_owner' ];
2016-10-18 16:10:52 -07:00
if ( ! in_array ( $own , $this -> restricted ))
2014-10-04 10:33:56 -07:00
{
2013-04-27 13:20:17 +03:00
$this -> fields [ 'media_cat_owner' ][ 'writeParms' ][ $own ] = $own ;
2014-10-14 15:35:53 -07:00
if ( $row [ 'maxnum' ] > 0 )
2014-10-04 10:33:56 -07:00
{
2014-10-14 15:35:53 -07:00
$this -> ownerCount [ $row [ 'media_cat_owner' ]] = $row [ 'maxnum' ]; // $maxnum;
2014-10-04 10:33:56 -07:00
}
2013-04-27 13:20:17 +03:00
}
}
}
2013-05-04 20:17:58 -07:00
2014-10-14 13:03:58 -07:00
e107 :: getMessage () -> addDebug ( " Max value for category names: " . print_a ( $this -> ownerCount , true ));
2013-05-04 20:17:58 -07:00
}
2014-10-04 10:33:56 -07:00
2013-05-04 20:17:58 -07:00
public function createPage ()
{
if ( ! count ( $this -> fields [ 'media_cat_owner' ][ 'writeParms' ]))
2013-04-27 13:20:17 +03:00
{
2013-05-04 20:17:58 -07:00
e107 :: getMessage () -> addInfo ( " Category creation not available. " );
return ;
2012-04-22 06:19:21 +00:00
}
2013-05-04 20:17:58 -07:00
return $this -> getUI () -> getCreate ();
2009-11-18 07:16:51 +00:00
}
2013-05-04 20:17:58 -07:00
2012-04-22 06:19:21 +00:00
public function beforeCreate ( $new_data )
{
2013-04-27 13:20:17 +03:00
// XXX temporary disable when there is no owners, discuss
if ( ! $new_data [ 'media_cat_owner' ])
{
2016-12-20 10:58:43 +01:00
e107 :: getMessage () -> addError ( IMALAN_173 );
2013-04-27 13:20:17 +03:00
return false ;
}
2012-04-22 06:19:21 +00:00
//$replace = array("_"," ","'",'"',"."); //FIXME Improve
//$new_data['media_cat_category'] = str_replace($replace,"-",$new_data['media_cat_category']);
2012-10-31 21:28:20 +00:00
$type = $this -> getRequest () -> getPosted ( 'media_cat_type' , 'image' ) . '_' ;
2012-04-22 06:19:21 +00:00
$increment = ( $this -> ownerCount [ $new_data [ 'media_cat_owner' ]] + 1 );
2012-10-31 21:28:20 +00:00
$new_data [ 'media_cat_category' ] = $new_data [ 'media_cat_owner' ] . '_' . $type . $increment ;
2013-01-17 16:08:07 +02:00
if ( empty ( $new_data [ 'media_cat_sef' ])) $new_data [ 'media_cat_sef' ] = eHelper :: title2sef ( $new_data [ 'media_cat_title' ]);
2012-04-22 06:19:21 +00:00
return $new_data ;
}
public function beforeUpdate ( $new_data , $old_data , $id )
2009-11-18 07:16:51 +00:00
{
2012-04-22 06:19:21 +00:00
$mes = e107 :: getMessage ();
2016-10-18 16:10:52 -07:00
if ( in_array ( $new_data [ 'media_cat_owner' ], $this -> restricted ))
2009-11-18 07:16:51 +00:00
{
2012-12-04 18:21:57 +01:00
$mes -> addError ( LAN_IMA_001 );
2012-04-22 06:19:21 +00:00
return FALSE ;
2009-11-18 07:16:51 +00:00
}
2012-04-22 06:19:21 +00:00
2013-01-16 12:51:03 +02:00
if ( empty ( $new_data [ 'media_cat_sef' ])) $new_data [ 'media_cat_sef' ] = eHelper :: title2sef ( $new_data [ 'media_cat_title' ]);
2012-04-22 06:19:21 +00:00
return $new_data ;
}
}
class media_cat_form_ui extends e_admin_form_ui
{
2012-08-19 02:33:43 +00:00
protected $restrictedOwners = array (
'_common' ,
'news' ,
'page' ,
'download' ,
'_icon'
);
function options ( $parms , $value , $id )
{
if ( $_GET [ 'action' ] == 'create' || $_GET [ 'action' ] == 'edit' )
{
return ;
}
$owner = $this -> getController () -> getListModel () -> get ( 'media_cat_owner' );
if ( ! in_array ( $owner , $this -> restrictedOwners ))
{
return $this -> renderValue ( 'options' , $value , '' , $id );
}
2012-04-22 06:19:21 +00:00
2012-08-19 02:33:43 +00:00
// $save = ($_GET['bbcode']!='file') ? "e-dialog-save" : "";
// e-dialog-close
}
2010-10-04 16:01:17 +00:00
}
2009-11-18 07:16:51 +00:00
class media_form_ui extends e_admin_form_ui
{
2010-03-09 16:05:41 +00:00
2009-11-18 07:16:51 +00:00
function init ()
{
2010-10-04 16:01:17 +00:00
/* $sql = e107 :: getDb ();
2016-02-15 00:14:45 -08:00
// $sql->gen("SELECT media_cat_title, media_title_nick FROM #core_media as m LEFT JOIN #core_media_cat as c ON m.media_category = c.media_cat_owner GROUP BY m.media_category");
$sql -> gen ( " SELECT media_cat_title, media_cat_owner FROM #core_media_cat " );
2009-11-18 07:16:51 +00:00
while ( $row = $sql -> db_Fetch ())
{
2012-04-22 06:19:21 +00:00
$cat = $row [ 'media_cat_owner' ];
2010-03-09 16:05:41 +00:00
$this -> cats [ $cat ] = $row [ 'media_cat_title' ];
2009-11-18 07:16:51 +00:00
}
2010-10-04 16:01:17 +00:00
asort ( $this -> cats ); */
2012-09-03 23:02:45 +00:00
// require(e_HANDLER.'phpthumb/ThumbLib.inc.php'); // For resizing on import.
2012-07-29 02:36:18 +00:00
if ( varset ( $_POST [ 'multiselect' ]) && varset ( $_POST [ 'e__execute_batch' ]) && ( varset ( $_POST [ 'etrigger_batch' ]) == 'options__rotate_cw' || varset ( $_POST [ 'etrigger_batch' ]) == 'options__rotate_ccw' ))
{
$type = str_replace ( 'options__' , '' , $_POST [ 'etrigger_batch' ]);
2016-12-01 15:38:40 -08:00
$ids = implode ( " , " , e107 :: getParser () -> filter ( $_POST [ 'multiselect' ], 'int' ));
2012-07-29 02:36:18 +00:00
$this -> rotateImages ( $ids , $type );
2016-12-01 15:38:40 -08:00
2012-07-29 02:36:18 +00:00
}
2012-09-03 23:02:45 +00:00
if ( varset ( $_POST [ 'multiselect' ]) && varset ( $_POST [ 'e__execute_batch' ]) && ( varset ( $_POST [ 'etrigger_batch' ]) == 'options__resize_2048' ))
{
$type = str_replace ( 'options__' , '' , $_POST [ 'etrigger_batch' ]);
2016-12-01 15:38:40 -08:00
$ids = implode ( " , " , e107 :: getParser () -> filter ( $_POST [ 'multiselect' ], 'int' ));
2012-09-03 23:02:45 +00:00
$this -> resizeImages ( $ids , $type );
}
2009-11-18 07:16:51 +00:00
}
2012-06-06 07:39:42 +00:00
function resize_method ( $curval )
{
$frm = e107 :: getForm ();
$options = array (
'gd1' => 'gd1' ,
'gd2' => 'gd2' ,
'ImageMagick' => 'ImageMagick'
);
return $frm -> selectbox ( 'resize_method' , $options , $curval ) . " <div class='field-help'> " . IMALAN_4 . " </div> " ;
}
2012-10-31 23:22:47 +00:00
public function rotateImages ( $ids , $type )
2012-07-29 02:36:18 +00:00
{
$sql = e107 :: getDb ();
$tp = e107 :: getParser ();
$mes = e107 :: getMessage ();
2012-09-03 23:02:45 +00:00
ini_set ( 'memory_limit' , '150M' );
ini_set ( 'gd.jpeg_ignore_warning' , 1 );
2012-07-29 02:36:18 +00:00
$degrees = ( $type == 'rotate_cw' ) ? 270 : 90 ;
// $mes->addDebug("Rotate Mode Set: ".$type);
//TODO GIF and PNG rotation.
2016-11-25 17:59:17 -08:00
if ( $sql -> select ( " core_media " , " media_url " , " media_id IN ( " . $ids . " ) AND media_type = 'image/jpeg' " ))
2012-07-29 02:36:18 +00:00
{
2016-11-25 17:59:17 -08:00
while ( $row = $sql -> fetch ())
2012-07-29 02:36:18 +00:00
{
$original = $tp -> replaceConstants ( $row [ 'media_url' ]);
$mes -> addDebug ( " Attempting to rotate by { $degrees } degrees: " . basename ( $original ));
$source = imagecreatefromjpeg ( $original );
2012-09-03 23:02:45 +00:00
try
{
$rotate = imagerotate ( $source , $degrees , 0 );
}
catch ( Exception $e )
{
2012-12-04 18:21:57 +01:00
$mes -> addError ( LAN_IMA_002 . " : " . basename ( $original ));
2012-09-03 23:02:45 +00:00
}
2012-07-29 02:36:18 +00:00
$srch = array ( " .jpg " , " .jpeg " );
$cacheFile = str_replace ( $srch , " " , strtolower ( basename ( $original ))) . " _(.*) \ .cache \ .bin " ;
2012-09-03 23:02:45 +00:00
try
2012-07-29 02:36:18 +00:00
{
2012-09-03 23:02:45 +00:00
imagejpeg ( $rotate , $original , 80 );
2012-12-04 18:21:57 +01:00
$mes -> addSuccess ( LAN_IMA_002 . " : " . basename ( $original ));
2012-07-29 02:36:18 +00:00
e107 :: getCache () -> clearAll ( 'image' , $cacheFile );
$mes -> addDebug ( " Clearing Image cache with mask: " . $cacheFile );
2012-09-03 23:02:45 +00:00
}
catch ( Exception $e )
{
2012-12-04 18:21:57 +01:00
$mes -> addError ( LAN_IMA_002 . " : " . basename ( $original ));
2012-09-03 23:02:45 +00:00
}
2012-07-29 02:36:18 +00:00
}
}
}
2012-09-03 23:02:45 +00:00
/**
* Resize a single image .
* @ param string
* @ param int
* @ param int
*/
2012-10-31 23:22:47 +00:00
public function resizeImage ( $oldpath , $img_import_w , $img_import_h )
2012-09-03 23:02:45 +00:00
{
2015-04-17 11:46:47 -07:00
$mes = e107 :: getMessage ();
2012-09-03 23:02:45 +00:00
try
{
$thumb = PhpThumbFactory :: create ( $oldpath );
$thumb -> setOptions ( array ( 'correctPermissions' => true ));
}
catch ( Exception $e )
{
$mes -> addError ( $e -> getMessage ());
return FALSE ;
// return $this;
}
if ( $WM ) // TODO Add watermark prefs for alpha and position.
{
$thumb -> resize ( $img_import_w , $img_import_h ) -> addWatermark ( $watermark , 'rightBottom' , 30 , 0 , 0 ) -> save ( $oldpath );
}
else
{
if ( $thumb -> resize ( $img_import_w , $img_import_h ) -> save ( $oldpath ))
{
return TRUE ;
}
}
}
2012-10-31 23:22:47 +00:00
public function resizeImages ( $ids , $type )
2012-09-03 23:02:45 +00:00
{
$sql = e107 :: getDb ();
$sql2 = e107 :: getDb ( 'sql2' );
$mes = e107 :: getMessage ();
$tp = e107 :: getParser ();
$fl = e107 :: getFile ();
// Max size is 6 megapixel.
$img_import_w = 2816 ;
$img_import_h = 2112 ;
2016-11-25 17:59:17 -08:00
if ( $sql -> select ( " core_media " , " media_id,media_url " , " media_id IN ( " . $ids . " ) AND media_type = 'image/jpeg' " ))
2012-09-03 23:02:45 +00:00
{
2016-11-25 17:59:17 -08:00
while ( $row = $sql -> fetch ())
2012-09-03 23:02:45 +00:00
{
$path = $tp -> replaceConstants ( $row [ 'media_url' ]);
$mes -> addDebug ( " Attempting to resize: " . basename ( $path ));
if ( $this -> resizeImage ( $path , $img_import_w , $img_import_h ))
{
$info = $fl -> get_file_info ( $path );
2012-12-04 18:21:57 +01:00
$mes -> addSuccess ( LAN_IMA_004 . " : " . basename ( $path ));
2012-09-03 23:02:45 +00:00
$mes -> addSuccess ( print_a ( $info , true ));
$dim = intval ( $info [ 'img-width' ]) . " x " . intval ( $info [ 'img-height' ]);
2013-05-24 22:40:10 +03:00
$sql2 -> db_Update ( " core_media " , " media_dimensions = ' " . $dim . " ', media_size = ' " . intval ( $info [ 'fsize' ]) . " ' WHERE media_id = " . intval ( $row [ 'media_id' ]) . " " );
2012-09-03 23:02:45 +00:00
}
else
{
2012-12-04 18:21:57 +01:00
$mes -> addError ( LAN_IMA_004 . " : " . basename ( $path ));
2012-09-03 23:02:45 +00:00
}
}
}
}
2012-07-29 02:36:18 +00:00
2012-10-31 23:22:47 +00:00
public function resize_dimensions ( $curval ) // ie. never manually resize another image again!
2012-06-06 07:39:42 +00:00
{
2012-10-31 23:22:47 +00:00
2012-06-06 07:39:42 +00:00
$text = " " ;
2012-10-31 23:22:47 +00:00
2012-06-06 07:39:42 +00:00
$frm = e107 :: getForm ();
2012-07-18 06:34:26 +00:00
$pref = e107 :: getPref ();
2012-06-06 07:39:42 +00:00
$options = array (
2015-05-01 12:46:46 +02:00
" news-image " => LAN_IMA_O_001 ,
" news-bbcode " => LAN_IMA_O_002 ,
" page-bbcode " => LAN_IMA_O_003 ,
// "featurebox-image" => LAN_IMA_O_004,
// "featurebox-bbcode" => LAN_IMA_O_005,
2012-06-06 07:39:42 +00:00
);
2012-06-17 11:52:10 +00:00
2012-11-01 00:13:24 +00:00
if ( vartrue ( $pref [ 'e_imageresize' ]) && is_array ( $pref [ 'e_imageresize' ]))
2012-07-18 06:34:26 +00:00
{
2012-12-12 19:28:39 -08:00
foreach ( $pref [ 'e_imageresize' ] as $k => $val )
2012-07-18 06:34:26 +00:00
{
2015-05-01 12:46:46 +02:00
$options [ $k ] = ucfirst ( $k ) . " " . LAN_IMA_O_006 ;
2012-07-18 06:34:26 +00:00
}
}
2012-12-12 19:28:39 -08:00
$options = $pref [ 'resize_dimensions' ];
2012-06-17 11:52:10 +00:00
2012-06-06 07:39:42 +00:00
foreach ( $options as $key => $title )
{
2012-12-12 19:28:39 -08:00
$title = ucwords ( str_replace ( " - " , " " , $key ));
2012-07-14 10:40:40 +00:00
$valW = vartrue ( $curval [ $key ][ 'w' ]);
$valH = vartrue ( $curval [ $key ][ 'h' ]);
2012-07-09 01:07:51 +00:00
2016-12-05 20:48:48 -08:00
$text .= " <div style='margin-bottom:8px; text-align:right; width:400px'> " . $title . " : " ;
2012-11-28 19:18:20 -08:00
$text .= " <input class='e-tip e-spinner input-small' placeholder='ex. 400' style='text-align:right' type='text' name='resize_dimensions[ { $key } ][w]' value=' $valW ' size='5' title='maximum width in pixels' /> X " ;
$text .= " <input class='e-tip e-spinner input-small' placeholder='ex. 400' style='text-align:right' type='text' name='resize_dimensions[ { $key } ][h]' value=' $valH ' size='5' title='maximum height in pixels' /> " ;
2012-07-09 01:07:51 +00:00
$text .= " </div> " ;
2012-06-06 07:39:42 +00:00
// $text .= $frm->text("resize_dimensions[{$key}]",$val, 5, array('size'=>'5')).$title."<br />";
}
2012-07-29 02:36:18 +00:00
// $text .= "<div><br />Warning: This feature is experimental.</div>";
2012-07-09 01:07:51 +00:00
2012-06-06 07:39:42 +00:00
return $text ;
}
2010-03-09 16:05:41 +00:00
2012-07-29 02:36:18 +00:00
function options ( $parms , $value , $id )
2012-05-25 11:30:49 +00:00
{
//return print_a($_GET,true);
2012-07-29 02:36:18 +00:00
if ( $value == 'batch' )
{
return array (
2012-09-03 23:02:45 +00:00
" resize_2048 " => " Reduce Oversized Images " ,
2012-07-29 02:36:18 +00:00
" rotate_cw " => " Rotate 90° cw " ,
2012-09-03 23:02:45 +00:00
" rotate_ccw " => " Rotate 90° ccw "
2012-07-29 02:36:18 +00:00
);
}
if ( $_GET [ 'action' ] == 'edit' )
{
return ;
}
2016-12-15 15:35:18 +01:00
$tagid = vartrue ( $_GET [ 'tagid' ]);
$tagid = e107 :: getParser () -> filter ( $tagid );
2012-05-25 11:30:49 +00:00
$path = $this -> getController () -> getListModel () -> get ( 'media_url' );
2012-07-11 04:46:09 +00:00
$title = $this -> getController () -> getListModel () -> get ( 'media_name' );
$id = $this -> getController () -> getListModel () -> get ( 'media_id' );
2012-05-25 11:30:49 +00:00
$preview = basename ( $path );
2012-05-28 13:06:09 +00:00
2012-12-08 15:52:40 +01:00
$bbcode = ( vartrue ( $_GET [ 'bbcode' ]) == 'file' ) ? " file " : " " ;
2012-07-20 07:31:16 +00:00
// $save = ($_GET['bbcode']!='file') ? "e-dialog-save" : "";
// e-dialog-close
2013-03-09 19:22:30 -08:00
2015-05-10 11:16:55 -07:00
$for = $this -> getController () -> getQuery ( 'for' );
2016-10-31 20:34:59 -07:00
if ( strpos ( $for , '_file' ) !== false )
2015-05-10 11:16:55 -07:00
{
$type = 'file' ;
}
else
{
$type = 'image' ;
}
// File Picker.
if ( $_GET [ 'action' ] == 'dialog' && ( $type == 'file' ))
2012-07-29 02:36:18 +00:00
{
2016-01-25 19:20:50 -08:00
$text = " <input type='button' value='Select' data-placement='left' class='e-tip e-media-select e-dialog-save e-dialog-close btn btn-primary btn-large' data-id=' { $id } ' data-name= \" " . $title . " \" data-type='file' data-target=' { $tagid } ' data-bbcode=' { $bbcode } ' data-path=' { $path } ' data-preview=' { $preview } ' title= \" " . $title . " \" /> " ;
2012-07-29 02:36:18 +00:00
}
2015-05-10 11:16:55 -07:00
else
{
$text = $this -> renderValue ( 'options' , $value , '' , $id );
}
2012-07-29 02:36:18 +00:00
2013-02-23 03:04:45 -08:00
return " <div class='nowrap'> " . $text . " </div> " ;
2012-07-29 02:36:18 +00:00
2012-05-25 11:30:49 +00:00
}
2012-04-22 06:19:21 +00:00
2015-02-02 11:59:17 -08:00
function media_preview ( $curVal , $mode , $attributes , $id = null )
2014-11-22 16:35:45 -08:00
{
$attributes [ 'type' ] = 'image' ;
switch ( $mode )
{
case 'read' :
$attributes [ 'readParms' ] = 'thumb=60&thumb_urlraw=0&thumb_aw=60' ;
$val = $this -> getController () -> getListModel () -> get ( 'media_url' );
break ;
case 'write' :
$attributes [ 'readParms' ] = 'thumb=180&thumb_urlraw=0&thumb_aw=180' ;
$val = $this -> getController () -> getModel () -> get ( 'media_url' );
break ;
case 'filter' :
case 'batch' :
return '' ;
break ;
}
2012-04-22 06:19:21 +00:00
2014-11-22 16:35:45 -08:00
return $this -> renderValue ( 'media_preview' , $val , $attributes , $id );
}
2012-04-22 06:19:21 +00:00
2013-01-09 10:49:33 +02:00
/*
2010-03-09 16:05:41 +00:00
function media_category ( $curVal , $mode ) // not really necessary since we can use 'dropdown' - but just an example of a custom function.
2009-11-18 07:16:51 +00:00
{
2012-08-02 02:11:22 +00:00
2012-05-23 08:29:57 +00:00
$curVal = explode ( " , " , $curVal );
2012-08-02 02:11:22 +00:00
2009-11-18 07:16:51 +00:00
if ( $mode == 'read' )
{
2010-10-04 16:01:17 +00:00
return $this -> getController () -> getMediaCategory ( $curVal );
//return $this->cats[$curVal];
2009-11-18 07:16:51 +00:00
}
2010-03-09 16:05:41 +00:00
2009-11-18 07:16:51 +00:00
if ( $mode == 'batch' ) // Custom Batch List for release_type
{
2010-10-04 16:01:17 +00:00
return $this -> getController () -> getMediaCategory ();
2009-11-18 07:16:51 +00:00
}
2010-03-09 16:05:41 +00:00
2009-11-18 07:16:51 +00:00
if ( $mode == 'filter' ) // Custom Filter List for release_type
{
2010-10-04 16:01:17 +00:00
return $this -> getController () -> getMediaCategory ();
2009-11-18 07:16:51 +00:00
}
2010-03-09 16:05:41 +00:00
2013-02-23 03:04:45 -08:00
$text = " <select class='tbox' name='media_category[]' multiple='multiple'> " ;
2010-10-04 16:01:17 +00:00
$cats = $this -> getController () -> getMediaCategory ();
2012-05-23 08:29:57 +00:00
2010-10-04 16:01:17 +00:00
foreach ( $cats as $key => $val )
2009-11-18 07:16:51 +00:00
{
2012-05-23 08:29:57 +00:00
$selected = ( in_array ( $key , $curVal )) ? " selected='selected' " : " " ;
2009-11-18 07:16:51 +00:00
$text .= " <option value=' { $key } ' { $selected } > " . $val . " </option> \n " ;
}
$text .= " </select> " ;
return $text ;
2013-01-09 10:49:33 +02:00
} */
2009-11-18 07:16:51 +00:00
}
2009-11-07 11:20:34 +00:00
2013-01-09 10:49:33 +02:00
2009-11-07 11:20:34 +00:00
class media_admin_ui extends e_admin_ui
{
2010-03-09 16:05:41 +00:00
protected $pluginTitle = LAN_MEDIAMANAGER ;
2009-11-07 11:20:34 +00:00
protected $pluginName = 'core' ;
protected $table = " core_media " ;
2010-03-09 16:05:41 +00:00
2013-04-27 12:19:05 +03:00
protected $listQry = " SELECT SQL_CALC_FOUND_ROWS m.*,u.user_id,u.user_name FROM #core_media AS m LEFT JOIN #user AS u ON m.media_author = u.user_id " ; // without any Order or Limit.
2010-03-09 16:05:41 +00:00
2009-11-07 11:20:34 +00:00
// //protected $editQry = "SELECT * FROM #comments WHERE comment_id = {ID}";
2010-03-09 16:05:41 +00:00
2009-11-07 11:20:34 +00:00
protected $pid = " media_id " ;
protected $perPage = 10 ;
protected $batchDelete = true ;
2011-08-22 23:52:45 +00:00
// protected $defaultOrder = 'desc';
protected $listOrder = 'm.media_id desc' ; // show newest images first.
2012-10-31 21:54:55 +00:00
public $deleteConfirmScreen = true ;
2016-11-02 09:29:18 +01:00
public $deleteConfirmMessage = IMALAN_129 ;
2010-03-09 16:05:41 +00:00
2016-11-02 09:29:18 +01:00
protected $preftabs = array ( IMALAN_78 , IMALAN_89 , " Youtube " );
2014-03-12 14:09:48 -07:00
2009-11-14 04:13:11 +00:00
protected $fields = array (
2009-11-07 11:20:34 +00:00
'checkboxes' => array ( 'title' => '' , 'type' => null , 'data' => null , 'width' => '5%' , 'forced' => TRUE , 'thclass' => 'center' , 'class' => 'center' ),
2009-12-02 10:03:53 +00:00
'media_id' => array ( 'title' => LAN_ID , 'type' => 'number' , 'data' => 'int' , 'width' => '5%' , 'forced' => TRUE , 'nolist' => TRUE ),
2016-10-01 11:26:30 +02:00
'media_preview' => array ( 'title' => LAN_PREVIEW , 'type' => 'method' , 'data' => false , 'forced' => true , 'width' => '110px' , 'thclass' => 'center' , 'class' => 'center' ),
'media_url' => array ( 'title' => IMALAN_110 , 'type' => 'text' , 'data' => 'str' , 'inline' => false , 'thclass' => 'left' , 'class' => 'left' , 'width' => 'auto' , 'writeParms' => 'size=xxlarge' ),
2014-11-22 16:35:45 -08:00
'media_category' => array ( 'title' => LAN_CATEGORY , 'type' => 'comma' , 'inline' => false , 'data' => 'str' , 'width' => '10%' , 'filter' => true , 'batch' => true , 'class' => 'left' ),
2012-04-22 06:19:21 +00:00
2011-06-07 13:01:36 +00:00
// Upload should be managed completely separately via upload-handler.
2012-07-18 06:34:26 +00:00
// 'media_upload' => array('title'=> "Upload File", 'type' => 'upload', 'data'=> false, 'readParms' => 'hidden', 'writeParms' => 'disable_button=1', 'width' => '10%', 'nolist' => true),
2016-10-18 16:10:52 -07:00
'media_name' => array ( 'title' => LAN_TITLE , 'type' => 'text' , 'data' => 'str' , 'inline' => true , 'width' => 'auto' , 'writeParms' => array ( 'size' => 'xxlarge' )),
'media_caption' => array ( 'title' => LAN_CAPTION , 'type' => 'text' , 'data' => 'str' , 'inline' => true , 'width' => 'auto' , 'writeParms' => array ( 'size' => 'xxlarge' )),
2011-06-07 13:01:36 +00:00
// media_description is type = textarea until bbarea can be reduced to not include youtube etc
2016-10-18 16:10:52 -07:00
'media_description' => array ( 'title' => LAN_DESCRIPTION , 'type' => 'textarea' , 'data' => 'str' , 'width' => 'auto' , 'thclass' => 'left first' , 'readParms' => 'truncate=100' , 'writeParms' => 'size=xxlarge&counter=0' ),
2016-10-01 11:26:30 +02:00
'media_type' => array ( 'title' => IMALAN_118 , 'type' => 'dropdown' , 'data' => 'str' , 'filter' => true , 'width' => 'auto' , 'noedit' => TRUE ),
2011-05-07 06:22:44 +00:00
'media_author' => array ( 'title' => LAN_USER , 'type' => 'user' , 'data' => 'int' , 'width' => 'auto' , 'thclass' => 'center' , 'class' => 'center' , 'readParms' => 'link=1' , 'filter' => true , 'batch' => true , 'noedit' => TRUE ),
2009-12-02 10:03:53 +00:00
'media_datestamp' => array ( 'title' => LAN_DATESTAMP , 'type' => 'datestamp' , 'data' => 'int' , 'width' => '10%' , 'noedit' => TRUE ), // User date
2016-10-01 11:26:30 +02:00
'media_size' => array ( 'title' => LAN_SIZE , 'type' => 'number' , 'data' => 'int' , 'width' => 'auto' , 'readonly' => 2 ),
'media_dimensions' => array ( 'title' => IMALAN_120 , 'type' => 'text' , 'data' => 'str' , 'width' => '5%' , 'readonly' => TRUE , 'class' => 'nowrap' , 'noedit' => TRUE ),
2013-02-25 03:20:11 -08:00
'media_userclass' => array ( 'title' => LAN_USERCLASS , 'type' => 'userclass' , 'data' => 'str' , 'inline' => true , 'width' => '10%' , 'thclass' => 'center' , 'filter' => TRUE , 'batch' => TRUE ),
2016-10-01 11:26:30 +02:00
'media_tags' => array ( 'title' => IMALAN_132 , 'type' => 'tags' , 'inline' => true , 'data' => 'str' , 'width' => '10%' , 'filter' => TRUE , 'batch' => TRUE ),
'media_usedby' => array ( 'title' => IMALAN_21 , 'type' => 'hidden' , 'data' => 'text' , 'width' => 'auto' , 'thclass' => 'center' , 'class' => 'center' , 'nolist' => true , 'readonly' => TRUE ),
2010-03-09 16:05:41 +00:00
2012-07-29 02:36:18 +00:00
'options' => array ( 'title' => LAN_OPTIONS , 'type' => 'method' , 'data' => null , 'forced' => TRUE , 'width' => '10%' , 'thclass' => 'center last' , 'class' => 'center' , 'batch' => true , 'noedit' => true )
2009-11-07 11:20:34 +00:00
);
2011-05-07 06:22:44 +00:00
2009-11-18 07:16:51 +00:00
protected $mimePaths = array (
2011-05-07 06:22:44 +00:00
'text' => e_MEDIA_FILE ,
'multipart' => e_MEDIA_FILE ,
'application' => e_MEDIA_FILE ,
2016-01-24 00:37:36 -08:00
// 'audio' => e_MEDIA_FILE,
2011-05-07 06:22:44 +00:00
'image' => e_MEDIA_IMAGE ,
'video' => e_MEDIA_VIDEO ,
'other' => e_MEDIA_FILE
2009-11-18 07:16:51 +00:00
);
2014-11-22 16:35:45 -08:00
2016-03-06 00:23:41 -08:00
protected $fieldpref = array ( 'media_id' , 'media_name' , 'media_caption' , 'media_category' , 'media_datestamp' , 'media_userclass' , 'options' );
2010-03-09 16:05:41 +00:00
2009-11-14 04:13:11 +00:00
2012-06-06 07:39:42 +00:00
protected $prefs = array (
2014-03-12 14:09:48 -07:00
'image_post' => array ( 'title' => IMALAN_1 , 'tab' => 0 , 'type' => 'boolean' , 'data' => 'int' , 'writeParms' => 'help=IMALAN_2' ),
2012-06-06 07:39:42 +00:00
'image_post_class' => array ( 'title' => IMALAN_10 , 'type' => 'userclass' , 'data' => 'int' , 'writeParms' => 'help=IMALAN_11&classlist=public,guest,nobody,member,admin,main,classes' ),
'image_post_disabled_method' => array ( 'title' => IMALAN_12 , 'type' => 'boolean' , 'writeParms' => 'enabled=IMALAN_15&disabled=IMALAN_14' ),
'resize_method' => array ( 'title' => IMALAN_3 , 'type' => 'method' , 'data' => 'str' ),
2015-05-01 12:46:46 +02:00
'thumbnail_quality' => array ( 'title' => IMALAN_73 , 'type' => 'number' , 'data' => 'int' , 'writeParms' => 'help=IMALAN_74' ),
2014-02-05 09:43:10 -08:00
2015-05-01 12:46:46 +02:00
'im_width' => array ( 'title' => IMALAN_75 , 'type' => 'number' , 'data' => 'int' , 'writeParms' => 'help=IMALAN_76' ),
2015-05-08 10:49:52 +02:00
'im_height' => array ( 'title' => IMALAN_77 , 'type' => 'number' , 'data' => 'int' , 'writeParms' => 'help=IMALAN_76' ),
2015-05-01 12:46:46 +02:00
'resize_dimensions' => array ( 'title' => IMALAN_79 , 'type' => 'method' , 'data' => 'str' ),
2012-07-12 10:15:12 +00:00
2015-05-01 12:46:46 +02:00
'watermark_activate' => array ( 'title' => IMALAN_80 , 'tab' => 1 , 'type' => 'number' , 'data' => 'str' , 'help' => IMALAN_81 ), // 'validate' => 'regex', 'rule' => '#^[\d]+$#i', 'help' => 'allowed characters are a-zA-Z and underscore')),
'watermark_text' => array ( 'title' => IMALAN_82 , 'tab' => 1 , 'type' => 'text' , 'data' => 'str' , 'help' => IMALAN_83 ), // 'validate' => 'regex', 'rule' => '#^[\d]+$#i', 'help' => 'allowed characters are a-zA-Z and underscore')),
'watermark_font' => array ( 'title' => IMALAN_84 , 'tab' => 1 , 'type' => 'dropdown' , 'data' => 'str' , 'help' => IMALAN_85 ), // 'validate' => 'regex', 'rule' => '#^[\d]+$#i', 'help' => 'allowed characters are a-zA-Z and underscore')),
'watermark_size' => array ( 'title' => IMALAN_86 , 'tab' => 1 , 'type' => 'number' , 'data' => 'int' , 'help' => IMALAN_87 ), // 'validate' => 'regex', 'rule' => '#^[\d]+$#i', 'help' => 'allowed characters are a-zA-Z and underscore')),
2012-07-14 10:40:40 +00:00
2015-05-08 10:49:52 +02:00
'watermark_pos' => array ( 'title' => IMALAN_88 , 'tab' => 1 , 'type' => 'dropdown' , 'data' => 'str' , 'help' => IMALAN_88 ), // 'validate' => 'regex', 'rule' => '#^[\d]+$#i', 'help' => 'allowed characters are a-zA-Z and underscore')),
2015-05-01 12:46:46 +02:00
'watermark_margin' => array ( 'title' => IMALAN_90 , 'tab' => 1 , 'type' => 'number' , 'data' => 'int' , 'help' => IMALAN_91 ), // 'validate' => 'regex', 'rule' => '#^[\d]+$#i', 'help' => 'allowed characters are a-zA-Z and underscore')),
2012-07-14 10:40:40 +00:00
2015-05-01 12:46:46 +02:00
'watermark_color' => array ( 'title' => IMALAN_92 , 'tab' => 1 , 'type' => 'text' , 'data' => 'str' , 'help' => IMALAN_93 ), // 'validate' => 'regex', 'rule' => '#^[\d]+$#i', 'help' => 'allowed characters are a-zA-Z and underscore')),
'watermark_shadowcolor' => array ( 'title' => IMALAN_94 , 'tab' => 1 , 'type' => 'text' , 'data' => 'str' , 'help' => IMALAN_95 ), // 'validate' => 'regex', 'rule' => '#^[\d]+$#i', 'help' => 'allowed characters are a-zA-Z and underscore')),
2012-07-14 10:40:40 +00:00
2015-05-01 12:46:46 +02:00
'watermark_opacity' => array ( 'title' => IMALAN_96 , 'tab' => 1 , 'type' => 'number' , 'data' => 'int' , 'help' => IMALAN_97 ), // 'validate' => 'regex', 'rule' => '#^[\d]+$#i', 'help' => 'allowed characters are a-zA-Z and underscore')),
2015-06-08 15:55:05 -07:00
2014-03-12 14:09:48 -07:00
// https://developers.google.com/youtube/player_parameters
2016-10-14 22:09:34 +02:00
'youtube_apikey' => array ( 'title' => " YouTube Public API key " , 'tab' => 2 , 'type' => 'text' , 'data' => 'str' , 'help' => IMALAN_99 , 'writeParms' => array ( 'post' => " " )),
2015-06-08 15:55:05 -07:00
2015-05-01 12:46:46 +02:00
'youtube_default_account' => array ( 'title' => IMALAN_98 , 'tab' => 2 , 'type' => 'text' , 'data' => 'str' , 'help' => IMALAN_99 ),
2015-03-31 14:48:07 -07:00
2015-05-01 12:46:46 +02:00
'youtube_rel' => array ( 'title' => IMALAN_100 , 'tab' => 2 , 'type' => 'boolean' , 'data' => 'int' , 'help' => '' ),
'youtube_showinfo' => array ( 'title' => IMALAN_101 , 'tab' => 2 , 'type' => 'boolean' , 'data' => 'int' , 'help' => '' ),
'youtube_cc_load_policy' => array ( 'title' => IMALAN_102 , 'tab' => 2 , 'type' => 'boolean' , 'data' => 'int' , 'help' => '' ),
'youtube_modestbranding' => array ( 'title' => IMALAN_103 , 'tab' => 2 , 'type' => 'boolean' , 'data' => 'int' , 'help' => '' ),
'youtube_bbcode_responsive' => array ( 'title' => IMALAN_104 , 'tab' => 2 , 'type' => 'boolean' , 'data' => 'int' , 'help' => '' ),
2014-10-22 17:59:15 -07:00
2014-03-12 14:09:48 -07:00
//
2012-06-06 07:39:42 +00:00
);
2012-06-17 11:52:10 +00:00
2012-06-06 07:39:42 +00:00
2012-06-17 11:52:10 +00:00
2012-06-06 07:39:42 +00:00
/*
< tr >
2012-11-26 14:41:32 -08:00
< td >
2012-06-06 07:39:42 +00:00
" .IMALAN_1. "
</ td >
2012-11-26 14:41:32 -08:00
< td >
2012-06-06 07:39:42 +00:00
< div class = 'auto-toggle-area autocheck' >
" . $frm->checkbox ('image_post', 1, $pref['image_post'] ). "
< div class = 'field-help' > " .IMALAN_2. " </ div >
</ div >
</ td >
</ tr >
< tr >
2012-11-26 14:41:32 -08:00
< td >
2012-06-06 07:39:42 +00:00
" .IMALAN_10. "
</ td >
2012-11-26 14:41:32 -08:00
< td >
2012-06-06 07:39:42 +00:00
" .r_userclass('image_post_class', $pref['image_post_class'] , " off " , " public , guest , nobody , member , admin , main , classes " ). "
< div class = 'field-help' > " .IMALAN_11. " </ div >
</ td >
</ tr >
< tr >
2012-11-26 14:41:32 -08:00
< td >
2012-06-06 07:39:42 +00:00
" .IMALAN_12. "
</ td >
2012-11-26 14:41:32 -08:00
< td >
2012-06-06 07:39:42 +00:00
" . $frm->select_open ('image_post_disabled_method'). "
" . $frm->option (IMALAN_14, '0', ( $pref['image_post_disabled_method'] == " 0 " )). "
" . $frm->option (IMALAN_15, '1', ( $pref['image_post_disabled_method'] == " 1 " )). "
" . $frm->select_close (). "
< div class = 'field-help' > " .IMALAN_13. " </ div >
</ td >
</ tr > " ;
list ( $img_import_w , $img_import_h ) = explode ( " x " , $pref [ 'img_import_resize' ]);
2015-05-01 12:46:46 +02:00
2012-06-06 07:39:42 +00:00
$text .= "
< tr >
2015-05-01 12:46:46 +02:00
< td > " .IMALAN_105. " < div class = 'label-note' > " .IMALAN_106. " </ div ></ td >
2012-11-26 14:41:32 -08:00
< td >
2012-06-06 07:39:42 +00:00
" . $frm->text ('img_import_resize_w', $img_import_w ,4). " px X " . $frm->text ('img_import_resize_h', $img_import_h ,4). " px
</ td >
</ tr >
< tr >
2012-11-26 14:41:32 -08:00
< td > " .IMALAN_3. " < div class = 'label-note' > " .IMALAN_54. " { $gd_version } </ div ></ td >
< td >
2012-06-06 07:39:42 +00:00
" . $frm->select_open ('resize_method'). "
" . $frm->option ('gd1', 'gd1', ( $pref['resize_method'] == " gd1 " )). "
" . $frm->option ('gd2', 'gd2', ( $pref['resize_method'] == " gd2 " )). "
" . $frm->option ('ImageMagick', 'ImageMagick', ( $pref['resize_method'] == " ImageMagick " )). "
" . $frm->select_close (). "
< div class = 'field-help' > " .IMALAN_4. " </ div >
</ td >
</ tr > " ;
*/
2009-12-02 10:03:53 +00:00
protected $cats = array ();
2012-04-22 06:19:21 +00:00
protected $owner = array ();
protected $ownercats = array ();
2015-02-22 17:41:55 -08:00
2009-12-02 10:03:53 +00:00
function init ()
{
2016-10-14 22:09:34 +02:00
$this -> prefs [ 'youtube_apikey' ][ 'writeParms' ][ 'post' ] = " <a target='_blank' href='https://code.google.com/apis/console/'> " . LAN_MORE . " </a> " ;
2015-02-22 17:41:55 -08:00
if ( E107_DEBUG_LEVEL > 0 )
{
$this -> fields [ 'media_url' ][ 'inline' ] = true ;
}
2009-12-02 10:03:53 +00:00
$sql = e107 :: getDb ();
2016-02-15 00:14:45 -08:00
// $sql->gen("SELECT media_cat_title, media_title_nick FROM #core_media as m LEFT JOIN #core_media_cat as c ON m.media_category = c.media_cat_owner GROUP BY m.media_category");
2015-11-05 11:05:53 -08:00
$sql -> gen ( " SELECT media_cat_title, media_cat_owner, media_cat_category FROM `#core_media_cat` " );
2015-02-22 17:41:55 -08:00
while ( $row = $sql -> fetch ())
2009-12-02 10:03:53 +00:00
{
2012-04-22 06:19:21 +00:00
$cat = $row [ 'media_cat_category' ];
$owner = $row [ 'media_cat_owner' ];
$this -> owner [ $owner ] = $owner ;
$this -> ownercats [ $owner . '|' . $cat ] = $row [ 'media_cat_title' ];
2016-10-18 16:10:52 -07:00
// $ownerLabel = (substr($owner,0,1) == '_') ? '' : $owner.": ";
2010-03-09 16:05:41 +00:00
$this -> cats [ $cat ] = $row [ 'media_cat_title' ];
2009-12-02 10:03:53 +00:00
}
asort ( $this -> cats );
2013-01-09 10:49:33 +02:00
2015-02-01 17:28:38 -08:00
$tmp = $sql -> retrieve ( 'core_media' , 'media_type' , 'media_type !="" GROUP BY media_type' , true );
$mimeTypes = array ();
foreach ( $tmp as $val )
{
$id = $val [ 'media_type' ];
$mimeTypes [ $id ] = $id ;
}
asort ( $mimeTypes );
2013-01-09 10:49:33 +02:00
$this -> fields [ 'media_category' ][ 'writeParms' ] = $this -> cats ;
2015-02-01 17:28:38 -08:00
$this -> fields [ 'media_type' ][ 'writeParms' ] = $mimeTypes ;
2012-07-12 10:15:12 +00:00
$pref = e107 :: getPref ();
$tp = e107 :: getParser ();
$fl = e107 :: getFile ();
$path = e_THEME . $pref [ 'sitetheme' ] . " /fonts/ " ;
$fDir = $fl -> get_files ( e_THEME . $pref [ 'sitetheme' ] . " /fonts/ " , " .ttf " , '' , 2 );
2016-10-01 11:26:30 +02:00
$fonts = array ( 0 => LAN_NONE );
2012-07-12 10:15:12 +00:00
foreach ( $fDir as $f )
{
$id = $tp -> createConstants ( $f [ 'path' ] . $f [ 'fname' ], 'rel' );
$fonts [ $id ] = $f [ 'fname' ];
}
$this -> prefs [ 'watermark_font' ][ 'writeParms' ] = $fonts ;
$this -> prefs [ 'watermark_font' ][ 'readParms' ] = $fonts ;
$wm_pos = array (
2016-10-01 11:26:30 +02:00
'BR' => IMALAN_133 ,
'BL' => IMALAN_134 ,
'TR' => IMALAN_135 ,
'TL' => IMALAN_136 ,
'C' => IMALAN_137 ,
'R' => IMALAN_138 ,
'L' => IMALAN_139 ,
'T' => IMALAN_140 ,
'B' => IMALAN_141 ,
'*' => IMALAN_142
2012-07-12 10:15:12 +00:00
);
$this -> prefs [ 'watermark_pos' ][ 'writeParms' ] = $wm_pos ;
$this -> prefs [ 'watermark_pos' ][ 'readParms' ] = $wm_pos ;
2014-01-09 04:42:13 -08:00
e107 :: getCache () -> clearAll ( 'image' );
2012-07-12 10:15:12 +00:00
2012-08-04 04:15:41 +00:00
// print_a($_GET);
2012-07-12 10:15:12 +00:00
2014-01-08 15:51:14 -08:00
if ( $this -> getAction () == 'youtube' )
{
2016-12-15 15:35:18 +01:00
$parm = array ( 'search' => $tp -> filter ( $_GET [ 'search' ]));
2014-01-09 04:42:13 -08:00
echo $this -> videoTab ( $parm );
2014-01-08 15:51:14 -08:00
exit ;
}
2014-01-09 04:42:13 -08:00
if ( $this -> getAction () == 'glyph' )
{
2016-12-15 15:35:18 +01:00
$parm = array ( 'search' => $tp -> filter ( $_GET [ 'search' ]));
2014-01-09 04:42:13 -08:00
echo $this -> glyphTab ( $parm );
exit ;
}
2014-01-08 15:51:14 -08:00
2014-01-09 04:42:13 -08:00
if ( $this -> getAction () == 'nav' )
2012-08-04 04:15:41 +00:00
{
//echo $this->navPage();\
// $this->getResponse()->setIframeMod(); // disable header/footer menus etc.
// print_a($_GET);
}
2012-07-12 10:15:12 +00:00
2012-04-28 01:31:30 +00:00
2010-03-09 16:05:41 +00:00
2009-12-02 10:03:53 +00:00
if ( varset ( $_POST [ 'batch_import_selected' ]))
{
$this -> batchImport ();
}
2012-07-18 06:34:26 +00:00
if ( varset ( $_POST [ 'batch_import_delete' ]))
{
$this -> batchDelete ();
}
2011-06-07 13:01:36 +00:00
2012-04-22 07:53:34 +00:00
if ( varset ( $_POST [ 'update_options' ]))
{
$this -> updateSettings ();
}
2012-05-25 11:30:49 +00:00
2012-08-12 00:24:02 +00:00
// filepicker stuff.
2012-07-07 06:04:04 +00:00
if ( $this -> getQuery ( 'mode' ) == 'dialog' ) //TODO Check this actually does something, as it was changed to 'action'.
2012-05-25 11:30:49 +00:00
{
2012-07-07 06:04:04 +00:00
if ( ! ADMIN ){ exit ; }
2012-05-25 11:30:49 +00:00
}
2012-04-22 07:53:34 +00:00
2010-10-04 22:14:05 +00:00
if ( $this -> getQuery ( 'iframe' ))
2012-04-30 10:39:03 +00:00
{
2016-03-10 13:33:11 -08:00
// e107::js('tinymce4','plugins/compat3x/tiny_mce_popup.js');
2012-04-28 01:31:30 +00:00
$this -> getResponse () -> setIframeMod (); // disable header/footer menus etc.
2012-08-04 04:15:41 +00:00
2012-04-28 01:31:30 +00:00
if ( ! $this -> getQuery ( 'for' ))
{
$this -> setPosted ( 'media_category' , " _common " );
$this -> getModel () -> set ( 'media_category' , " _common " );
}
elseif ( $this -> getMediaCategory ( $this -> getQuery ( 'for' )))
2010-10-04 22:14:05 +00:00
{
2012-04-28 01:31:30 +00:00
$this -> setPosted ( 'media_category' , $this -> getQuery ( 'for' ));
if ( ! $this -> getId ())
{
$this -> getModel () -> set ( 'media_category' , $this -> getQuery ( 'for' ));
}
2010-10-04 22:14:05 +00:00
}
2012-04-30 10:39:03 +00:00
2010-10-04 22:14:05 +00:00
}
2014-01-09 04:42:13 -08:00
2010-10-04 22:14:05 +00:00
}
2009-12-02 10:03:53 +00:00
2012-08-04 04:15:41 +00:00
function navPage () // no functioning correctly - see e_AJAX_REQUEST above.
{
$bbcodeMode = ( $this -> getQuery ( 'bbcode' ) == 'img' ) ? 'bbcode=img' : FALSE ;
if ( $_GET [ 'from' ])
{
$bbcodeMode .= " &from= " . intval ( $_GET [ 'from' ]);
}
$bbcodeMode .= " &nav=1 " ;
$tag = ( $bbcodeMode ) ? " " : $this -> getQuery ( 'tagid' );
echo e107 :: getMedia () -> mediaSelect ( $this -> getQuery ( 'for' ), $this -> getQuery ( 'tagid' ), $bbcodeMode ); // eg. news, news-thumbnail
return ;
}
2012-04-28 01:31:30 +00:00
function dialogPage () // Popup dialogPage for Image Selection.
{
2012-05-25 11:30:49 +00:00
$cat = $this -> getQuery ( 'for' );
2016-10-31 20:34:59 -07:00
$file = ( preg_match ( '/_file(_[\d]{1,2})?$/' , $cat )) ? TRUE : FALSE ;
2012-08-12 00:24:02 +00:00
$mes = e107 :: getMessage ();
$mes -> addDebug ( " For: " . $cat );
2013-05-31 15:54:14 -07:00
$mes -> addDebug ( " Bbcode: " . $this -> getQuery ( 'bbcode' ));
2013-03-09 19:22:30 -08:00
2014-01-09 04:42:13 -08:00
2013-11-06 16:36:48 -08:00
$this -> processUploadUrl ( true , $cat );
2012-05-25 11:30:49 +00:00
if ( $file )
{
2012-10-31 20:18:18 +00:00
$cat = e107 :: getParser () -> toDB ( $cat );
2012-08-12 00:24:02 +00:00
if ( ! isset ( $this -> cats [ $cat ]))
{
return ;
}
2012-05-25 11:30:49 +00:00
2012-08-12 00:24:02 +00:00
$this -> listQry = " SELECT m.*,u.user_id,u.user_name FROM #core_media AS m LEFT JOIN #user AS u ON m.media_author = u.user_id WHERE m.media_category = ' " . $cat . " ' " ; // without any Order or Limit.
2012-05-25 11:30:49 +00:00
2012-08-12 00:24:02 +00:00
unset ( $this -> fields [ 'checkboxes' ]);
$this -> fields [ 'options' ][ 'type' ] = 'method' ;
$this -> fields [ 'media_category' ][ 'nolist' ] = true ;
$this -> fields [ 'media_userclass' ][ 'nolist' ] = true ;
$this -> fields [ 'media_dimensions' ][ 'nolist' ] = true ;
$this -> fields [ 'media_description' ][ 'nolist' ] = true ;
$this -> fields [ 'media_type' ][ 'nolist' ] = true ;
foreach ( $this -> fields as $k => $v )
{
$this -> fields [ $k ][ 'filter' ] = false ;
}
2016-10-31 20:34:59 -07:00
echo $this -> mediaSelectUpload ( 'file' );
$tagid = e107 :: getParser () -> filter ( $this -> getQuery ( 'tagid' ));
echo '<div class="media-select-file-footer"><a class="btn btn-danger e-media-select-file-none e-dialog-close" data-target="' . $tagid . '" data-target-label="' . LAN_CHOOSE_FILE . '" href="#" ><span><i class="fa fa-ban"></i> ' . IMALAN_167 . '</span></a></div>' ;
2012-04-28 01:31:30 +00:00
}
2012-08-12 00:24:02 +00:00
else
{
echo $this -> mediaSelectUpload ();
}
2012-04-28 01:31:30 +00:00
}
2012-05-22 13:32:49 +00:00
2012-08-04 04:15:41 +00:00
2014-01-09 04:42:13 -08:00
function uploadTab ()
2012-05-22 13:32:49 +00:00
{
2015-11-04 19:35:00 -08:00
if ( ! ADMIN ){ exit ; }
if ( ! getperms ( 'A' ) && ! getperms ( 'A1' ))
{
return '' ;
}
2013-11-06 16:07:58 -08:00
2016-01-11 20:53:05 -08:00
// if 'for' has no value, files are placed in /temp and not added to the db.
2016-11-17 12:34:09 -08:00
2016-12-03 20:47:26 -08:00
$maxFileSize = e107 :: pref ( 'core' , 'upload_maxfilesize' );
if ( empty ( $maxFileSize ))
{
$maxFileSize = " 20M " ;
}
2016-11-17 12:34:09 -08:00
2016-10-31 20:34:59 -07:00
$text = " <h4> " . IMALAN_145 . " </h4> " ;
2016-12-06 19:24:48 -08:00
$text .= '<div id="uploader" data-max-size="' . str_replace ( 'M' , 'mb' , $maxFileSize ) . '" rel="' . e_JS . 'plupload/upload.php?for=' . $this -> getQuery ( 'for' ) . '&path=' . $this -> getQuery ( 'path' ) . ' " >
2016-10-01 11:26:30 +02:00
< p > '.IMALAN_146.' </ p >
2012-05-22 13:32:49 +00:00
</ div > ' ;
2016-01-11 20:53:05 -08:00
$text .= '<hr />' ;
2013-11-06 16:07:58 -08:00
$frm = e107 :: getForm ();
2016-01-11 20:53:05 -08:00
2013-11-06 16:07:58 -08:00
$text .= $frm -> open ( 'upload-url-form' , 'post' );
$text .= '<div class="plupload_header_content">' ;
2016-10-31 20:34:59 -07:00
$text .= " <h4> " . IMALAN_147 . " </h4> " ;
2016-01-11 20:53:05 -08:00
$text .= " <div class='plupload_header_text form-inline' style='padding-left:20px;padding-right:20px'> " ;
$text .= " <table class='table'> " ;
$text .= " <tr>
2016-10-01 11:26:30 +02:00
< td class = 'text-nowrap' > " .IMALAN_148. " :</ td >
2016-01-11 20:53:05 -08:00
< td >< input type = 'text' name = 'upload_url' size = '255' style = 'width:100%' placeholder = 'eg. http://website.com/some-image.jpg' /></ td >
2016-10-01 11:26:30 +02:00
< td style = 'text-align:left' > " . $frm->admin_button ('upload_remote_url',1,'create',IMALAN_149). " </ td >
2016-01-11 20:53:05 -08:00
</ tr > " ;
2016-10-01 11:26:30 +02:00
$text .= " <tr><td> " . LAN_CAPTION . " ( " . LAN_OPTIONAL . " ):</td><td><input type='text' name='upload_caption' size='255' style='width:100%' placeholder='eg. My Image Caption' /></td>
2016-01-11 20:53:05 -08:00
< td ></ td ></ tr > " ;
$text .= " </table> " ;
// $text .= ;
2013-11-06 16:07:58 -08:00
$text .= " </div> " ;
2014-01-09 04:42:13 -08:00
$text .= " </div> \n \n " ;
2013-11-06 16:07:58 -08:00
2014-01-09 04:42:13 -08:00
$text .= $frm -> close ();
2013-11-06 16:07:58 -08:00
2012-05-22 13:32:49 +00:00
return $text ;
}
2012-04-28 01:31:30 +00:00
2012-08-12 00:24:02 +00:00
function mediaSelectUpload ( $type = 'image' )
2012-04-28 01:31:30 +00:00
{
2012-04-30 10:39:03 +00:00
$frm = e107 :: getForm ();
2014-01-23 15:56:53 -08:00
$videoActive = 'inactive' ;
2013-03-09 19:22:30 -08:00
$options = array ();
$options [ 'bbcode' ] = ( $this -> getQuery ( 'bbcode' ) == 'img' ) ? 'img' : FALSE ;
2013-07-12 03:21:27 -07:00
2012-07-23 02:25:17 +00:00
2015-07-19 17:10:03 -07:00
$text = " <ul id='admin-ui-media-manager' class='nav nav-tabs'> \n " ;
2014-01-17 06:49:55 -08:00
2014-05-31 23:15:26 -07:00
if ( $this -> getQuery ( 'bbcode' ) != 'video' && $this -> getQuery ( 'bbcode' ) != 'glyph' )
2014-01-23 15:56:53 -08:00
{
2016-10-01 11:26:30 +02:00
$text .= " <li class='active'><a data-toggle='tab' href='#core-media-select'> " . IMALAN_151 . " </a></li> \n " ;
2014-01-23 15:56:53 -08:00
}
else
{
2014-05-31 23:15:26 -07:00
if ( $this -> getQuery ( 'bbcode' ) == 'glyph' )
{
$glyphActive = 'active' ;
}
else
{
$videoActive = 'active' ;
}
2014-01-23 15:56:53 -08:00
}
2014-01-17 06:49:55 -08:00
2015-11-04 19:35:00 -08:00
if ( getperms ( 'A|A1' ) && ( $this -> getQuery ( 'bbcode' ) != 'video' && $this -> getQuery ( 'bbcode' ) != 'glyph' ))
2014-01-17 06:49:55 -08:00
{
2016-10-01 11:26:30 +02:00
$text .= " <li><a data-toggle='tab' href='#core-media-upload'> " . IMALAN_150 . " </a></li> " ;
2014-01-17 06:49:55 -08:00
}
if ( varset ( $options [ 'bbcode' ]) == 'img' )
2012-04-30 10:39:03 +00:00
{
2016-10-01 11:26:30 +02:00
$text .= " <li><a data-toggle='tab' href='#core-media-style'> " . IMALAN_152 . " </a></li> \n " ;
2012-04-30 10:39:03 +00:00
}
2014-01-17 06:49:55 -08:00
if ( $this -> getQuery ( 'glyphs' ) == 1 || $this -> getQuery ( 'bbcode' ) == 'glyph' )
2013-07-12 03:21:27 -07:00
{
2014-05-31 23:15:26 -07:00
$text .= " <li class=' { $glyphActive } '><a data-toggle='tab' href='#core-media-glyphs'>Glyphs</a></li> \n " ;
2013-07-12 03:21:27 -07:00
}
2014-01-17 06:49:55 -08:00
if ( $this -> getQuery ( 'video' ) == 1 || $this -> getQuery ( 'bbcode' ) == 'video' )
2014-01-08 15:51:14 -08:00
{
2014-01-23 15:56:53 -08:00
$text .= " <li class=' { $videoActive } '><a data-toggle='tab' href='#core-media-video'>Youtube</a></li> \n " ;
2014-01-08 15:51:14 -08:00
}
2013-07-12 03:21:27 -07:00
2013-03-21 18:23:40 -07:00
if ( varset ( $_GET [ 'from' ]))
2012-05-24 07:24:49 +00:00
{
2013-03-09 19:22:30 -08:00
$options [ 'from' ] .= intval ( $_GET [ 'from' ]);
2012-05-24 07:24:49 +00:00
}
2013-03-09 19:22:30 -08:00
2012-04-30 10:39:03 +00:00
$text .= "
2012-04-28 01:31:30 +00:00
</ ul >
2014-05-31 23:15:26 -07:00
< div class = 'tab-content media-manager' > " ;
2012-04-28 01:31:30 +00:00
2014-05-31 23:15:26 -07:00
if ( $this -> getQuery ( 'bbcode' ) != 'video' && $this -> getQuery ( 'bbcode' ) != 'glyph' )
2014-01-23 15:56:53 -08:00
{
$text .= " <div class='tab-pane active' id='core-media-select'>
2016-03-11 12:31:09 -08:00
< div style = 'display:block;width:100%' > " ;
2014-01-23 15:56:53 -08:00
$text .= $this -> imageTab ( $type , $options );
$text .= " </div></div> " ;
}
2012-04-28 01:31:30 +00:00
2014-01-23 15:56:53 -08:00
$text .= " <div class='tab-pane' id='core-media-upload'>
2014-01-09 04:42:13 -08:00
" ;
2012-04-28 01:31:30 +00:00
$this -> fields [ 'media_category' ][ 'readonly' ] = TRUE ;
$this -> fields [ 'media_url' ][ 'noedit' ] = TRUE ;
$this -> fields [ 'media_userclass' ][ 'noedit' ] = TRUE ;
2015-11-04 19:35:00 -08:00
if ( getperms ( 'A|A1' ))
{
$text .= $this -> uploadTab (); // To test upload script with plupload
}
2012-05-25 11:30:49 +00:00
// $text .= $this->CreatePage(); // comment me out to test plupload
2012-04-28 01:31:30 +00:00
$text .= "
2013-02-25 02:47:23 -08:00
</ div > " ;
2012-04-30 10:39:03 +00:00
/* In BBCODE - Mode this dialog rerturns an [ img ] bbcode to the 'tagid' container with the appropriate parms generated .
* eg . [ img style = float : left ; margin - right : 3 px ]{ e_MEDIA_IMAGE } someimage . jpg [ / img ]
* Then the dialog may be used as a bbcode img popup and within TinyMce also .
*
*/
2016-01-11 20:53:05 -08:00
if ( $options [ 'bbcode' ]) //TODO LAN lan_image.php
2012-04-30 10:39:03 +00:00
{
2013-02-25 02:55:41 -08:00
$text .= " <div class='tab-pane' id='core-media-style'>
2014-01-09 04:42:13 -08:00
2013-03-21 18:23:40 -07:00
< div class = 'row' >
2015-07-14 12:13:46 -07:00
< div class = 'col-md-6 span6' >
2013-03-21 18:23:40 -07:00
< table class = 'table' >
2012-05-13 05:50:32 +00:00
< colgroup >
< col class = 'col-label' />
< col class = 'col-control' />
2012-04-30 10:39:03 +00:00
</ colgroup >
< tbody >
2016-01-11 20:53:05 -08:00
< tr >
2016-10-01 11:26:30 +02:00
< td > " .LAN_CAPTION. " : </ td >
2016-01-11 20:53:05 -08:00
< td >
< input type = 'text' class = 'e-media-attribute' id = 'alt' name = 'alt' size = '4' style = 'width:100%' value = '' />
</ td >
</ tr >
2012-04-30 10:39:03 +00:00
< tr >
2016-10-01 11:26:30 +02:00
< td > " .IMALAN_120. " : </ td >
2012-04-30 10:39:03 +00:00
< td >
2016-01-11 20:53:05 -08:00
< input type = 'text' class = 'e-media-attribute' id = 'width' name = 'width' size = '4' style = 'width:50px' value = '' /> px & nbsp ;
& #10060; <input type='text' class='e-media-attribute' id='height' name='height' size='4' style='width:50px' value='' /> px
2012-04-30 10:39:03 +00:00
</ td >
</ tr >
< tr >
2016-10-01 11:26:30 +02:00
< td > " .IMALAN_157. " : </ td >
< td > " . $frm->selectbox ('float', array('default'=>LAN_DEFAULT,'left'=>IMALAN_139,'right'=>IMALAN_138)). " </ td >
2012-04-30 10:39:03 +00:00
</ tr >
< tr >
2016-10-01 11:26:30 +02:00
< td > " .IMALAN_158. " : </ td >
2013-03-21 18:23:40 -07:00
< td >< input class = 'e-media-attribute input-mini' type = 'text' id = 'margin-left' name = 'margin_left' value = '' /> px </ td >
2012-04-30 10:39:03 +00:00
</ tr >
< tr >
2016-10-01 11:26:30 +02:00
< td > " .IMALAN_159. " : </ td >
2013-03-21 18:23:40 -07:00
< td >< input class = 'e-media-attribute input-mini' type = 'text' id = 'margin-right' name = 'margin_right' value = '' /> px </ td >
2012-04-30 10:39:03 +00:00
</ tr >
< tr >
2016-10-01 11:26:30 +02:00
< td > " .IMALAN_160. " : </ td >
2013-03-21 18:23:40 -07:00
< td >< input class = 'e-media-attribute input-mini' type = 'text' id = 'margin-top' name = 'margin_top' value = '' /> px </ td >
2012-04-30 10:39:03 +00:00
</ tr >
< tr >
2016-10-01 11:26:30 +02:00
< td > " .IMALAN_161. " : </ td >
2013-03-21 18:23:40 -07:00
< td >< input class = 'e-media-attribute input-mini' type = 'text' id = 'margin-bottom' name = 'margin_bottom' value = '' /> px </ td >
2012-04-30 10:39:03 +00:00
</ tr >
</ tbody ></ table >
2013-03-21 18:23:40 -07:00
</ div >
2015-07-14 12:13:46 -07:00
< div class = 'col-md-6 span6' >
2016-01-11 20:53:05 -08:00
< h5 > " .LAN_PREVIEW. " </ h5 >
2013-03-21 18:23:40 -07:00
< img class = 'well' id = 'preview' src = '".e_IMAGE_ABS."generic/blank.gif' style = 'min-width:220px; min-height:180px;' />
2012-04-30 20:35:59 +00:00
2013-03-21 18:23:40 -07:00
</ div >
</ div >
2013-02-25 02:55:41 -08:00
</ div > " ;
2012-04-30 10:39:03 +00:00
}
2013-07-12 03:21:27 -07:00
2014-01-17 06:49:55 -08:00
if ( $this -> getQuery ( 'glyphs' ) == 1 || $this -> getQuery ( 'bbcode' ) == 'glyph' )
2013-07-12 03:21:27 -07:00
{
//TODO
2014-05-31 23:15:26 -07:00
$text .= " <div class='tab-pane clearfix { $glyphActive } ' id='core-media-glyphs' style='font-size:24px'> " ;
2014-01-09 04:42:13 -08:00
$text .= $this -> glyphTab ();
2013-07-12 03:21:27 -07:00
2013-07-12 07:13:10 -07:00
$text .= " </div>
2013-07-12 03:21:27 -07:00
" ;
}
2014-01-17 06:49:55 -08:00
if ( $this -> getQuery ( 'video' ) || $this -> getQuery ( 'bbcode' ) == 'video' )
2014-01-08 15:51:14 -08:00
{
2014-01-23 15:56:53 -08:00
$text .= " <div class='tab-pane clearfix { $videoActive } ' id='core-media-video' > " ;
2014-01-09 04:42:13 -08:00
// $text .= "<div class='row-fluid'>";
2014-01-08 15:51:14 -08:00
$text .= $this -> videoTab ();
$text .= " </div> " ;
2014-01-09 04:42:13 -08:00
// $text .= "</div>";
2014-01-08 15:51:14 -08:00
}
2012-04-30 10:39:03 +00:00
$text .= " </div> " ;
2016-01-11 20:53:05 -08:00
// For BBCODE/TinyMce mode.
// e-dialog-save
2013-07-12 07:13:10 -07:00
if ( $options [ 'bbcode' ] || E107_DEBUG_LEVEL > 0 )
2012-04-30 10:39:03 +00:00
{
2012-05-24 07:24:49 +00:00
2012-04-30 10:39:03 +00:00
$text .= " <div style='text-align:right;padding:5px'>
2016-01-11 20:53:05 -08:00
< button type = 'submit' class = 'btn btn-success submit e-dialog-save' data - bbcode = '".$options[' bbcode ']."' data - target = '".$this->getQuery(' tagid ')."' name = 'save_image' value = 'Save it' >
2016-11-02 09:29:18 +01:00
< span > " .LAN_SAVE. " </ span >
2012-04-30 10:39:03 +00:00
</ button >
2015-07-13 19:09:30 -07:00
< button type = 'submit' class = ' btn btn-default submit e-dialog-close' name = 'cancel_image' value = 'Cancel' >
2016-11-02 09:29:18 +01:00
< span > " .LAN_CANCEL. " </ span >
2012-04-30 10:39:03 +00:00
</ button >
</ div > " ;
2014-01-23 17:23:38 -08:00
2012-04-30 10:39:03 +00:00
}
2014-01-23 17:23:38 -08:00
$type = ( E107_DEBUG_LEVEL > 0 ) ? " text " : " hidden " ;
2015-04-02 02:49:19 -07:00
$br = ( E107_DEBUG_LEVEL > 0 ) ? " <br /> " : " " ;
2014-01-23 17:23:38 -08:00
$text .= "
2016-02-04 11:40:15 -08:00
" . $br . " < input title = 'bbcode' type = '{$type}' readonly = 'readonly' class = 'span11 col-md-11' id = 'bbcode_holder' name = 'bbcode_holder' value = '' />
" . $br . " < input title = 'html/wysiwyg' type = '{$type}' class = 'span11 col-md-11' readonly = 'readonly' id = 'html_holder' name = 'html_holder' value = '' />
" . $br . " < input title = '(preview) src' type = '{$type}' class = 'span11 col-md-11' readonly = 'readonly' id = 'src' name = 'src' value = '' />
" . $br . " < input title = 'path (saved to db)' type = '{$type}' class = 'span11 col-md-11' readonly = 'readonly' id = 'path' name = 'path' value = '' />
2014-01-23 17:23:38 -08:00
" ;
2012-04-28 01:31:30 +00:00
return $text ;
}
2014-01-23 15:56:53 -08:00
function imageTab ( $type , $options )
{
$tag = ( $options [ 'bbcode' ]) ? " " : $this -> getQuery ( 'tagid' );
if ( varset ( $_GET [ 'w' ]))
{
$options [ 'w' ] = intval ( $_GET [ 'w' ]);
}
if ( $type == 'file' )
{
$this -> perPage = 0 ;
$this -> getTreeModel () -> setParam ( 'db_query' , $this -> _modifyListQry ( false , false , false , false , $this -> listQry )) -> load ();
$text = $this -> getUI () -> getList ();
}
else
{
$text = e107 :: getMedia () -> mediaSelect ( $this -> getQuery ( 'for' ), $this -> getQuery ( 'tagid' ), $options ); // eg. news, news-thumbnail
}
return $text ;
}
2014-01-09 04:42:13 -08:00
function glyphTab ( $parm = '' )
{
$parms = array (
'width' => 32 ,
'height' => 32 ,
'type' => 'glyph' ,
'tagid' => $this -> getQuery ( 'tagid' ),
'action' => 'glyph' , // Used by AJAX to identify correct function.
2015-07-16 13:41:15 -07:00
'perPage' => 80 ,
2014-01-09 04:42:13 -08:00
'gridClass' => 'media-carousel-item-glyph pull-left' ,
2014-01-23 17:23:38 -08:00
'bbcode' => 'glyph' ,
'close' => 'true'
2014-01-09 04:42:13 -08:00
);
2016-12-22 08:47:54 -08:00
$items = array ();
2015-11-13 14:44:38 -08:00
$bs2 = e107 :: getMedia () -> getGlyphs ( 'bs3' , 'glyphicon-' );
2014-01-09 04:42:13 -08:00
foreach ( $bs2 as $val )
{
$items [] = array (
2015-11-13 14:44:38 -08:00
'previewUrl' => 'glyphicon ' . $val ,
2014-01-09 04:42:13 -08:00
'saveValue' => $val . '.glyph' ,
'thumbUrl' => $val ,
'title' => $val ,
'slideCaption' => 'Bootstrap' ,
'slideCategory' => 'bootstrap'
);
}
2015-11-13 14:44:38 -08:00
2014-01-16 02:42:26 -08:00
2014-01-09 04:42:13 -08:00
$fa4 = e107 :: getMedia () -> getGlyphs ( 'fa4' );
2016-12-22 08:47:54 -08:00
2014-01-09 04:42:13 -08:00
foreach ( $fa4 as $val )
{
$items [] = array (
2014-02-06 07:29:02 -08:00
'previewUrl' => 'fa fa-' . $val ,
2014-01-09 04:42:13 -08:00
'saveValue' => $val . '.glyph' ,
'thumbUrl' => $val ,
'title' => $val ,
'slideCaption' => 'Font-Awesome 4' ,
'slideCategory' => 'font-awesome'
);
}
2017-01-01 08:13:42 -08:00
$custom = e107 :: getThemeGlyphs ();
if ( ! empty ( $custom ))
{
foreach ( $custom as $glyphConfig )
{
$tmp = e107 :: getMedia () -> getGlyphs ( $glyphConfig , $glyphConfig [ 'prefix' ]);
if ( ! empty ( $tmp ))
{
foreach ( $tmp as $val )
{
$items [] = array (
'previewUrl' => $val ,
'saveValue' => $val . '.glyph' ,
'thumbUrl' => $val ,
'title' => $val ,
'slideCaption' => ucfirst ( $glyphConfig [ 'name' ]),
'slideCategory' => $glyphConfig [ 'name' ]
);
}
}
}
}
2014-01-09 04:42:13 -08:00
2017-01-18 09:32:45 -08:00
if ( ! empty ( $parm [ 'search' ]))
2014-01-09 04:42:13 -08:00
{
$filtered = array ();
2016-12-22 08:47:54 -08:00
if ( ! empty ( $items ))
2014-01-09 04:42:13 -08:00
{
2016-12-22 08:47:54 -08:00
foreach ( $items as $v )
2014-01-09 04:42:13 -08:00
{
2016-12-22 08:47:54 -08:00
if ( strpos ( $v [ 'title' ], $parm [ 'search' ]) !== false )
{
$v [ 'slideCaption' ] = '' ;
$filtered [] = $v ;
}
}
}
2014-01-09 04:42:13 -08:00
$items = $filtered ;
}
return e107 :: getMedia () -> browserCarousel ( $items , $parms );
}
2015-06-08 15:55:05 -07:00
/**
* Extract Video or Playlist code from a URL
* Currently works with v = xxx or list = xxxx
* @ param $url
* @ return string
*/
2015-03-31 14:48:07 -07:00
function getYouTubeCode ( $url )
{
2015-06-08 15:55:05 -07:00
$url = str_replace ( " url: " , " http:// " , $url );
list ( $tmp , $qry ) = explode ( " ? " , $url );
2015-03-31 14:48:07 -07:00
parse_str ( $qry , $opt );
2015-06-08 15:55:05 -07:00
if ( ! empty ( $opt [ 'list' ]))
{
return 'playlist:' . $opt [ 'list' ];
}
if ( ! empty ( $opt [ 'v' ]))
{
return 'video:' . $opt [ 'v' ];
}
$pattern = '#^(?:https?://)?(?:www\.|m\.)?(?:youtu\.be/|youtube\.com(?:/embed/|/v/|/watch\?v=|/watch\?.+&v=))([\w-]{11})(?:.+)?$#x' ;
preg_match ( $pattern , $url , $matches );
return isset ( $matches [ 1 ]) ? 'video:' . trim ( $matches [ 1 ]) : false ;
2015-03-31 14:48:07 -07:00
}
2012-04-28 01:31:30 +00:00
2015-06-08 15:55:05 -07:00
/**
* @ param string $parm
* @ return mixed | string
* @ see https :// www . googleapis . com / youtube / v3 / search
*/
2014-01-08 15:51:14 -08:00
function videoTab ( $parm = '' )
{
2016-02-14 13:44:00 -06:00
$apiKey = e107 :: pref ( 'core' , 'youtube_apikey' );
2015-06-08 15:55:05 -07:00
$searchQry = $this -> getQuery ( 'search' );
2015-03-31 14:48:07 -07:00
2015-06-08 15:55:05 -07:00
if ( substr ( $searchQry , 0 , 4 ) == 'url:' )
{
$searchQry = $this -> getYouTubeCode ( $searchQry );
2015-03-31 14:48:07 -07:00
2015-06-08 15:55:05 -07:00
}
2015-03-31 14:48:07 -07:00
2015-06-08 15:55:05 -07:00
if ( ! empty ( $searchQry )) // -- Search Active.
{
if ( substr ( $searchQry , 0 , 6 ) == 'video:' || substr ( $searchQry , 0 , 2 ) == 'v=' ) // YouTube video code
2014-01-08 15:51:14 -08:00
{
2015-06-08 15:55:05 -07:00
$searchQry = ( substr ( $searchQry , 0 , 2 ) == 'v=' ) ? trim ( substr ( $searchQry , 2 )) : trim ( substr ( $searchQry , 6 ));
$extension = 'youtube' ;
// $feed = "https://www.googleapis.com/youtube/v3/videos?part=snippet&id=".urlencode($searchQry)."&key=".$apiKey;
2015-03-31 14:48:07 -07:00
2015-06-08 15:55:05 -07:00
$data = array ();
$data [ 'items' ][ 0 ][ 'id' ][ 'videoId' ] = $searchQry ;
2016-07-06 09:58:17 -07:00
$data [ 'items' ][ 0 ][ 'snippet' ][ 'thumbnails' ][ 'medium' ][ 'url' ] = " https://i.ytimg.com/vi/ " . $searchQry . " /mqdefault.jpg " ;
2015-06-08 15:55:05 -07:00
$data [ 'items' ][ 0 ][ 'snippet' ][ 'title' ] = 'Specified Video' ;
}
elseif ( substr ( $searchQry , 0 , 9 ) == 'playlist:' ) // playlist
{
2015-12-12 16:54:10 -08:00
if ( empty ( $apiKey ))
{
$playlistID = substr ( $searchQry , 9 );
$data = array ();
$data [ 'items' ][ 0 ][ 'id' ][ 'videoId' ] = $playlistID ;
$data [ 'items' ][ 0 ][ 'snippet' ][ 'thumbnails' ][ 'medium' ][ 'url' ] = e_IMAGE_ABS . " generic/playlist_120.png " ; // "http://i.ytimg.com/vi/".$playlistID."/mqdefault.jpg"; // not really possible, so it will show a generic grey image.
$data [ 'items' ][ 0 ][ 'snippet' ][ 'title' ] = 'Specified Playlist' ;
}
else
{
$searchQry = trim ( substr ( $searchQry , 9 ));
$feed = " https://www.googleapis.com/youtube/v3/search?part=snippet&q= " . urlencode ( $searchQry ) . " &type=playlist&maxResults=1&key= " . $apiKey ;
}
$extension = 'youtubepl' ;
2015-06-08 15:55:05 -07:00
}
elseif ( substr ( $searchQry , 0 , 8 ) == 'channel:' )
{
$searchQry = trim ( substr ( $searchQry , 8 ));
$extension = 'youtube' ;
$feed = " https://www.googleapis.com/youtube/v3/search?part=snippet&channelId= " . urlencode ( $searchQry ) . " &type=video&maxResults=20&key= " . $apiKey ;
}
else
{
$feed = " https://www.googleapis.com/youtube/v3/search?part=snippet&q= " . urlencode ( $searchQry ) . " &type=video&maxResults=20&key= " . $apiKey ;
$extension = 'youtube' ;
}
2015-03-31 14:48:07 -07:00
2015-06-08 15:55:05 -07:00
}
else // -- default state.
{
2015-03-31 14:48:07 -07:00
2015-06-08 15:55:05 -07:00
$defaultAccount = e107 :: pref ( 'core' , 'youtube_default_account' );
if ( empty ( $defaultAccount ))
{
$defaultAccount = 'e107inc' ;
}
2015-03-31 14:48:07 -07:00
2015-06-08 15:55:05 -07:00
$accFeed = " https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername= " . $defaultAccount . " &key= " . $apiKey ;
$accData = e107 :: getFile () -> getRemoteContent ( $accFeed );
$accData = json_decode ( $accData , true );
2016-02-14 13:44:00 -06:00
$channelID = e107 :: pref ( 'core' , 'youtube_default_account' );
2015-03-31 14:48:07 -07:00
2015-06-08 15:55:05 -07:00
foreach ( $accData [ 'items' ] as $val )
2014-01-08 15:51:14 -08:00
{
2015-06-08 15:55:05 -07:00
if ( $val [ 'kind' ] == 'youtube#channel' )
2015-04-14 10:31:21 -07:00
{
2015-06-08 15:55:05 -07:00
$channelID = $val [ 'id' ];
break ;
2015-04-14 10:31:21 -07:00
}
2015-03-31 14:48:07 -07:00
}
2015-06-08 15:55:05 -07:00
$feed = " https://www.googleapis.com/youtube/v3/search?part=snippet&channelId= " . $channelID . " &type=video&maxResults=20&key= " . $apiKey ;
$extension = 'youtube' ;
}
if ( ! empty ( $feed ) )
{
2015-03-31 14:48:07 -07:00
2015-06-08 15:55:05 -07:00
if ( ! empty ( $apiKey ))
2015-03-31 14:48:07 -07:00
{
2015-06-08 15:55:05 -07:00
$data = e107 :: getFile () -> getRemoteContent ( $feed );
$data = json_decode ( $data , true );
$items = array ();
2015-03-31 14:48:07 -07:00
}
2015-06-08 15:55:05 -07:00
else // empty key.
2014-01-08 15:51:14 -08:00
{
2016-11-02 09:29:18 +01:00
$link = '<a style="color:black" target="_blank" href="' . e_ADMIN . 'image.php?mode=main&action=prefs#/tab2">' . IMALAN_177 . '</a>' ;
$items = " <div class='alert alert-info'><p> " . e107 :: getParser () -> lanVars ( e107 :: getParser () -> toHTML ( IMALAN_174 , true ), array ( 'x' => $link )) . " </p></div> " ;
2014-01-08 15:51:14 -08:00
}
2015-03-31 14:48:07 -07:00
2015-06-08 15:55:05 -07:00
}
2015-03-31 14:48:07 -07:00
2015-06-08 15:55:05 -07:00
if ( ! empty ( $data ))
{
foreach ( $data [ 'items' ] as $value )
{
$id = $value [ 'id' ][ 'videoId' ];
$thumbnail = $value [ 'snippet' ][ 'thumbnails' ][ 'medium' ][ 'url' ];
$items [] = array (
'previewUrl' => $thumbnail ,
'saveValue' => $id . " . " . $extension , // youtube",
'thumbUrl' => $thumbnail ,
'title' => varset ( $value [ 'snippet' ][ 'title' ], '' )
);
if ( $extension == 'youtubepl' ) // save Image for background.
{
$hiresThumbnail = $thumbnail = $value [ 'snippet' ][ 'thumbnails' ][ 'high' ][ 'url' ];
e107 :: getMedia () -> saveThumb ( $hiresThumbnail , $id ); //TODO move to $tp->Video(); ?
}
}
}
// return print_a($data,true);
2016-11-02 09:29:18 +01:00
$parms = array ( 'width' => 200 , 'height' => 113 , 'type' => 'image' , 'bbcode' => 'video' , 'tagid' => $this -> getQuery ( 'tagid' ), 'action' => 'youtube' , 'searchPlaceholder' => IMALAN_175 );
2015-06-08 15:55:05 -07:00
$text = e107 :: getMedia () -> browserCarousel ( $items , $parms );
2014-01-08 15:51:14 -08:00
2015-06-08 15:55:05 -07:00
if ( E107_DEBUG_LEVEL > 0 && ! empty ( $feed ))
{
$text .= " <div><small>Debug: " . $feed . " </small></div> " ;
if ( ! empty ( $data ))
{
$text .= print_a ( $data , true );
}
}
2014-01-08 15:51:14 -08:00
return $text ;
}
2012-04-28 01:31:30 +00:00
2009-12-02 10:03:53 +00:00
function importPage ()
{
2013-11-06 16:36:48 -08:00
$this -> processUploadUrl ();
2010-03-09 16:05:41 +00:00
$this -> batchImportForm ();
2009-12-02 10:03:53 +00:00
}
2014-01-08 15:51:14 -08:00
2013-11-06 16:36:48 -08:00
function processUploadUrl ( $import = false , $cat = '_common' )
{
$fl = e107 :: getFile ();
$mes = e107 :: getMessage ();
2016-12-15 15:08:49 +01:00
$tp = e107 :: getParser ();
2013-11-06 16:36:48 -08:00
if ( vartrue ( $_POST [ 'upload_remote_url' ]))
{
$fileName = basename ( $_POST [ 'upload_url' ]);
2015-09-01 15:53:48 -07:00
if ( strpos ( $fileName , '?' ) !== false )
{
list ( $fileName , $bla ) = explode ( " ? " , $fileName );
}
2016-12-20 10:58:43 +01:00
$uploadCaption = ! empty ( $_POST [ 'upload_caption' ]) ? $tp -> filter ( $_POST [ 'upload_caption' ], 'str' ) : '' ;
2016-07-06 17:08:17 -07:00
$fileName = str_replace ( array ( '%' , '+' ), '' , $fileName );
2016-05-30 15:19:19 -07:00
2016-01-11 20:53:05 -08:00
// remove script extensions.
if ( substr ( $fileName , - 4 ) == " .php " || substr ( $fileName , - 4 ) == " .htm " || substr ( $fileName , - 5 ) == " .html " || substr ( $fileName , - 4 ) == " .asp " )
{
2016-12-20 10:58:43 +01:00
$fileName = empty ( $uploadCaption ) ? str_replace ( array ( " .php " , " .html " , " .asp " , " .htm " ), '' , $fileName ) . " _ " . time () : eHelper :: dasherize ( strtolower ( $uploadCaption ));
2016-01-11 20:53:05 -08:00
}
2016-12-15 15:08:49 +01:00
if ( ! $fl -> getRemoteFile ( $tp -> filter ( $_POST [ 'upload_url' ], 'file' ), $fileName , 'import' ))
2013-11-06 16:36:48 -08:00
{
2016-11-02 09:29:18 +01:00
$mes -> addError ( IMALAN_176 );
2013-11-06 16:36:48 -08:00
}
elseif ( $import == true )
{
2016-12-20 10:58:43 +01:00
$data = array ( 'media_caption' => $uploadCaption );
e107 :: getMedia () -> importFile ( $fileName , $cat , null , $data );
2013-11-06 16:36:48 -08:00
}
}
}
2010-03-09 16:05:41 +00:00
2009-12-02 10:03:53 +00:00
function settingsPage ()
{
2012-06-02 08:12:16 +00:00
global $pref ;
$frm = e107 :: getForm ();
$tp = e107 :: getParser ();
$sql = e107 :: getDb ();
$ns = e107 :: getRender ();
$mes = e107 :: getMessage ();
if ( function_exists ( 'gd_info' ))
{
$gd_info = gd_info ();
$gd_version = $gd_info [ 'GD Version' ];
}
else
{
$gd_version = " <span class='error'> " . IMALAN_55 . " </span> " ;
}
if ( $pref [ 'resize_method' ] == " ImageMagick " && ( ! vartrue ( e107 :: getFolder ( 'imagemagick' ))))
{
$mes -> addWarning ( 'Please add: <b>$IMAGEMAGICK_DIRECTORY="' . $pref [ 'im_path' ] . '";</b> to your e107_config.php file' );
}
//$IM_NOTE = "";
$im_path = vartrue ( e107 :: getFolder ( 'imagemagick' ));
if ( $im_path != " " )
{
$im_file = $im_path . 'convert' ;
if ( ! file_exists ( $im_file ))
{
//$IM_NOTE = "<span class='error'>".IMALAN_52."</span>";
$mes -> addWarning ( IMALAN_52 );
}
else
{
$cmd = " { $im_file } -version " ;
$tmp = `$cmd` ;
if ( strpos ( $tmp , " ImageMagick " ) === FALSE )
{
//$IM_NOTE = "<span class='error'>".IMALAN_53."</span>";
$mes -> addWarning ( IMALAN_53 );
}
}
}
$text = "
< form method = 'post' action = '".e_SELF."?".e_QUERY."' >
< fieldset id = 'core-image-settings' >
< legend class = 'e-hideme' > " .IMALAN_7. " </ legend >
2012-11-26 14:41:32 -08:00
< table class = 'table adminform' >
2012-06-02 08:12:16 +00:00
< colgroup >
< col class = 'col-label' />
< col class = 'col-control' />
</ colgroup >
< tbody >
< tr >
2012-11-26 14:41:32 -08:00
< td >
2012-06-02 08:12:16 +00:00
" .IMALAN_1. "
</ td >
2012-11-26 14:41:32 -08:00
< td >
2012-06-02 08:12:16 +00:00
< div class = 'auto-toggle-area autocheck' >
" . $frm->checkbox ('image_post', 1, $pref['image_post'] ). "
< div class = 'field-help' > " .IMALAN_2. " </ div >
</ div >
</ td >
</ tr >
< tr >
2012-11-26 14:41:32 -08:00
< td >
2012-06-02 08:12:16 +00:00
" .IMALAN_10. "
</ td >
2012-11-26 14:41:32 -08:00
< td >
2012-06-02 08:12:16 +00:00
" .r_userclass('image_post_class', $pref['image_post_class'] , " off " , " public , guest , nobody , member , admin , main , classes " ). "
< div class = 'field-help' > " .IMALAN_11. " </ div >
</ td >
</ tr >
< tr >
2012-11-26 14:41:32 -08:00
< td >
2012-06-02 08:12:16 +00:00
" .IMALAN_12. "
</ td >
2012-11-26 14:41:32 -08:00
< td >
2012-06-02 08:12:16 +00:00
" . $frm->select_open ('image_post_disabled_method'). "
" . $frm->option (IMALAN_14, '0', ( $pref['image_post_disabled_method'] == " 0 " )). "
" . $frm->option (IMALAN_15, '1', ( $pref['image_post_disabled_method'] == " 1 " )). "
" . $frm->select_close (). "
< div class = 'field-help' > " .IMALAN_13. " </ div >
</ td >
</ tr > " ;
list ( $img_import_w , $img_import_h ) = explode ( " x " , $pref [ 'img_import_resize' ]);
2015-05-01 12:46:46 +02:00
$text .= "
2012-06-02 08:12:16 +00:00
< tr >
2015-05-01 12:46:46 +02:00
< td > " .IMALAN_105. " < div class = 'label-note' > " .IMALAN_106. " </ div ></ td >
2012-11-26 14:41:32 -08:00
< td >
2012-06-02 08:12:16 +00:00
" . $frm->text ('img_import_resize_w', $img_import_w ,4). " px X " . $frm->text ('img_import_resize_h', $img_import_h ,4). " px
</ td >
</ tr >
< tr >
2012-11-26 14:41:32 -08:00
< td > " .IMALAN_3. " < div class = 'label-note' > " .IMALAN_54. " { $gd_version } </ div ></ td >
< td >
2012-06-02 08:12:16 +00:00
" . $frm->select_open ('resize_method'). "
" . $frm->option ('gd1', 'gd1', ( $pref['resize_method'] == " gd1 " )). "
" . $frm->option ('gd2', 'gd2', ( $pref['resize_method'] == " gd2 " )). "
" . $frm->option ('ImageMagick', 'ImageMagick', ( $pref['resize_method'] == " ImageMagick " )). "
" . $frm->select_close (). "
< div class = 'field-help' > " .IMALAN_4. " </ div >
</ td >
</ tr > " ;
/*
$text .= "
// Removed to prevent mod_security blocks, and show only when relevant (non-GD2 users)
< tr >
2012-11-26 14:41:32 -08:00
< td > " .IMALAN_5. " < div class = 'label-note' > { $IM_NOTE } </ div ></ td >
< td >
2012-06-02 08:12:16 +00:00
" . $frm->text ('im_path', $pref['im_path'] ). "
< div class = 'field-help' > " .IMALAN_6. " </ div >
</ td >
</ tr > " ;
// Removed as IE6 should no longer be supported. A 3rd-party plugin can be made for this functionality if really needed.
$text .= "
< tr >
2012-11-26 14:41:32 -08:00
< td > " .IMALAN_34. "
2012-06-02 08:12:16 +00:00
</ td >
2012-11-26 14:41:32 -08:00
< td >
2012-06-02 08:12:16 +00:00
< div class = 'auto-toggle-area autocheck' >
" . $frm->checkbox ('enable_png_image_fix', 1, ( $pref['enable_png_image_fix'] )). "
< div class = 'field-help' > " .IMALAN_35. " </ div >
</ div >
</ td >
</ tr > " ;
*/
$text .= "
< tr >
2012-11-26 14:41:32 -08:00
< td > " .IMALAN_36. " </ td >
< td >
2012-06-02 08:12:16 +00:00
" . $frm->admin_button ('check_avatar_sizes', ADLAN_145). "
</ td >
</ tr >
</ tbody >
</ table >
< div class = 'buttons-bar center' >
" . $frm->admin_button ('update_options', IMALAN_8, 'update'). "
</ div >
</ fieldset >
</ form > " ;
echo $mes -> render () . $text ;
return ;
// $ns->tablerender(LAN_MEDIAMANAGER." :: ".IMALAN_7, $mes->render().$text);
2009-12-02 10:03:53 +00:00
}
2010-03-09 16:05:41 +00:00
2015-06-18 01:17:26 -07:00
function avatarPageDeleteChecked ()
{
$sql = e107 :: getDb ();
$mes = e107 :: getMessage ();
2016-12-02 13:14:50 -08:00
$tp = e107 :: getParser ();
2015-06-18 01:17:26 -07:00
if ( ! empty ( $_POST [ 'multiaction' ]))
{
2016-12-15 15:08:49 +01:00
$actions = $tp -> filter ( $_POST [ 'multiaction' ]);
2015-06-18 01:17:26 -07:00
$tmp = array (); $tmp1 = array (); $message = array ();
2016-12-15 15:08:49 +01:00
foreach ( $actions as $todel )
2015-06-18 01:17:26 -07:00
{
list ( $usr , $path ) = explode ( '#' , $todel );
// $path = basename($path);
$path = str_replace ( " ../ " , " " , $path ); // clean the path.
$mes -> addDebug ( 'usr: ' . intval ( $usr ) . ' path: ' . $path );
$image_type = 2 ;
if ( strpos ( $path , '-upload-' ) === 0 )
{
$image_type = 1 ;
$path = substr ( $path , strlen ( '-upload-' ));
}
//delete it from server
2016-12-02 13:14:50 -08:00
$deletePath = e_AVATAR . $tp -> filter ( $path );
2015-06-18 01:17:26 -07:00
if ( @ unlink ( $deletePath ))
{
$mes -> addDebug ( 'Deleted: ' . $deletePath );
$message [] = basename ( $path ); //admin log & sysmessage
}
else
{
$mes -> addError ( 'Unable to delete: ' . $deletePath ); // Do not translate, temporary during beta stage.
}
//It's owned by an user
if ( ! empty ( $usr ))
{
switch ( $image_type )
{
case 1 : //avatar
$tmp [] = intval ( $usr );
break ;
case 2 : //photo
$tmp1 [] = intval ( $usr );
break ;
}
}
}
//Reset all deleted user avatars with one query
if ( ! empty ( $tmp ))
{
$sql -> update ( " user " , " user_image='' WHERE user_id IN ( " . implode ( ',' , $tmp ) . " ) " );
$mes -> addDebug ( " user_image='' WHERE user_id IN ( " . implode ( ',' , $tmp ) . " ) " );
}
//Reset all deleted user photos with one query
if ( ! empty ( $tmp1 ))
{
$sql -> update ( " user " , " user_sess='' WHERE user_id IN ( " . implode ( ',' , $tmp1 ) . " ) " );
$mes -> addDebug ( " user_sess='' WHERE user_id IN ( " . implode ( ',' , $tmp1 ) . " ) " );
}
unset ( $tmp , $tmp1 );
//Format system message
if ( ! empty ( $message ))
{
e107 :: getLog () -> add ( 'IMALAN_01' , implode ( '[!br!]' , $message ), E_LOG_INFORMATIVE , '' );
$mes -> addSuccess ( implode ( ', ' , $message ) . ' ' . IMALAN_28 );
}
}
}
2016-02-25 12:53:04 -08:00
function renderHelp ()
{
if ( $this -> getAction () == 'avatar' )
{
2016-10-01 11:26:30 +02:00
$text = IMALAN_155 . " : <br /><code> " . e_AVATAR_DEFAULT . " </code> " ;
2016-02-25 12:53:04 -08:00
return array ( 'caption' => EMESSLAN_TITLE_INFO , 'text' => $text );
}
2015-06-18 01:17:26 -07:00
2016-02-25 12:53:04 -08:00
}
2015-06-18 01:17:26 -07:00
2009-12-02 10:03:53 +00:00
function avatarPage ()
{
2015-06-18 01:17:26 -07:00
global $pref ;
if ( isset ( $_POST [ 'submit_show_delete_multi' ]))
{
$this -> avatarPageDeleteChecked ();
}
2015-08-16 15:05:34 -07:00
e107 :: css ( 'inline' , '
span . avatar - label { width : 100 % ; display : block ; padding : 5 px ; margin - bottom : 5 px }
div . avatar - container { margin - bottom : 5 px ; max - height : 350 px }
' );
2015-06-18 01:17:26 -07:00
$sql = e107 :: getDb ();
$frm = e107 :: getForm ();
$tp = e107 :: getParser ();
$mes = e107 :: getMessage ();
$avFiles = e107 :: getFile () -> get_files ( e_MEDIA . " avatars/ " , " .jpg|.png|.gif|.jpeg|.JPG|.GIF|.PNG " , null , 2 );
$dirlist = array ();
foreach ( $avFiles as $f )
{
$dirlist [] = str_replace ( e_MEDIA . " avatars/ " , " " , $f [ 'path' ]) . $f [ 'fname' ];
}
$text = '' ;
if ( empty ( $dirlist ))
{
$text .= IMALAN_29 ;
}
else
{
$tmp = $sql -> retrieve ( 'user' , 'user_id,user_image' , 'user_image !="" ' , true );
$imageUsed = array ();
foreach ( $tmp as $val )
{
$id = $val [ 'user_id' ];
2015-08-16 15:05:34 -07:00
$imageUsed [ $id ] = str_replace ( " -upload- " , " " , $val [ 'user_image' ]);
2015-06-18 01:17:26 -07:00
}
$userImages = array_flip ( $imageUsed );
$text = $frm -> open ( 'core-image-avatars' );
2015-08-16 15:05:34 -07:00
$text .= " <div id='core-image-show-avatars' class='row'> " ;
2015-06-18 01:17:26 -07:00
$count = 0 ;
while ( list ( $key , $image_name ) = each ( $dirlist ))
{
//$users = IMALAN_21." | ";
$row = array ( 'user_id' => '' );
$image_pre = '' ;
$disabled = false ;
/*
if ( $sql -> db_Select ( " user " , " * " , " user_image='-upload- " . $tp -> toDB ( $image_name ) . " ' OR user_sess=' " . $tp -> toDB ( $image_name ) . " ' " ))
{
$row = $sql -> db_Fetch ();
if ( $row [ 'user_image' ] == '-upload-' . $image_name ) $image_pre = '-upload-' ;
$users .= " <a href=' " . $e107 -> url -> create ( 'user/profile/view' , 'name=' . $row [ 'user_name' ] . '&id=' . $row [ 'user_id' ]) . " '> { $row [ 'user_name' ] } </a> <span class='smalltext'>( " . ( $row [ 'user_sess' ] == $image_name ? IMALAN_24 : IMALAN_23 ) . " )</span> " ;
}
else
{
}
*/
// :
2015-08-16 15:05:34 -07:00
// $fileName = basename($image_name);
2015-06-18 01:17:26 -07:00
$fileName = basename ( $image_name );
2015-08-16 15:05:34 -07:00
2016-10-01 11:26:30 +02:00
$users = ( in_array ( $fileName , $imageUsed )) ? " <span class='label label-warning avatar-label'> " . IMALAN_153 . " </span> " : '<span class="label label-default avatar-label" >' . IMALAN_154 . '</span>' ;
2015-06-18 01:17:26 -07:00
//directory?
if ( is_dir ( e_MEDIA . " avatars/ " . $image_name ))
{
//File info
$users = " <a href='#' title=' " . IMALAN_69 . " : { $image_name } '><img class='e-tip icon S16' src=' " . e_IMAGE_ABS . " admin_images/info_16.png' alt=' " . IMALAN_66 . " : { $image_name } ' title=' " . IMALAN_69 . " : { $image_name } ' /></a> <span class='error'> " . IMALAN_69 . " </span> " ;
//Friendly UI - click text to select a form element
$img_src = '<span class="error">' . IMALAN_70 . '</span>' ;
$disabled = true ;
}
else
{
//File info
// $users = "<a class='e-tip' href='#' title='".IMALAN_66.": {$image_name}'><img src='".e_IMAGE_ABS."admin_imaXXXges/info_16.png' alt='".IMALAN_66.": {$image_name}' /></a> ".$users;
// Control over the image size (design)
// $image_size = getimagesize(e_MEDIA."avatars/".$image_name);
//Friendly UI - click text to select a form element
// Resized on-the-fly - avatar-size no longer an issue.
2015-08-16 15:05:34 -07:00
// $attr = "aw=".$pref['im_width']."&ah=".$pref['im_height'];
$attr = " aw=200&ah=200 " ;
2015-06-18 01:17:26 -07:00
$img_path = $tp -> thumbUrl ( e_MEDIA_ABS . " avatars/ " . $image_name , $attr );
$type = dirname ( $image_name );
if ( $prevType != $type )
{
2015-08-16 15:05:34 -07:00
$text .= " <div class='col-md-12 clearfix'></div>
< h4 class = 'clearfix col-md-12' > " . $type . " </ h4 > " ;
2015-06-18 01:17:26 -07:00
}
$for = $frm -> name2id ( 'multiaction-' . $image_name );
2015-08-16 15:05:34 -07:00
$img_src = "
2015-06-18 01:17:26 -07:00
< div class = 'thumbnail' >
2017-01-20 10:40:05 -08:00
< label for = '".$for."' >< img class = 'img-responsive img-fluid' src = '".$img_path."' alt = '{$image_name}' title = '".IMALAN_66.": {$image_name}' /></ label >
2015-06-18 01:17:26 -07:00
</ div >
2015-08-16 15:05:34 -07:00
" ;
2015-06-18 01:17:26 -07:00
$prevType = $type ;
}
//style attribute allowed here - server side width/height control
//autocheck class - used for JS selectors (see eCoreImage object)
$text .= "
2015-08-16 16:38:50 -07:00
< div class = 'col-md-2 col-sm-4 center autocheck avatar-container' >
2015-06-18 01:17:26 -07:00
< div class = 'well' >
< div class = 'image-users' > { $users } </ div >
< div class = 'image-preview' > { $img_src } </ div >
< div class = 'image-delete' >
2015-08-16 15:05:34 -07:00
" . $frm->checkbox ('multiaction[]', intval( $userImages[$fileName] ). " #{$image_pre}{$image_name}", false, array('id' => $for, 'disabled' => $disabled))."
2015-06-18 01:17:26 -07:00
</ div >
</ div >
</ div >
" ;
$count ++ ;
}
2015-08-16 15:05:34 -07:00
$text .= " </div>
< div class = 'col-md-12 spacer clearfix' >
< div class = 'row buttons-bar' >
2015-06-18 01:17:26 -07:00
< input type = 'hidden' name = 'show_avatars' value = '1' />
" . $frm->admin_button ('e_check_all', LAN_CHECKALL, 'action'). "
" . $frm->admin_button ('e_uncheck_all', LAN_UNCHECKALL, 'action'). "
" . $frm->admin_button ('submit_show_delete_multi', LAN_DELCHECKED, 'delete'). "
2016-10-01 11:26:30 +02:00
" . $frm->admin_button ('submit_show_deleteall', IMALAN_156, 'delete'). "
2015-06-18 01:17:26 -07:00
</ div >
</ div >
2015-08-16 15:05:34 -07:00
2015-06-18 01:17:26 -07:00
</ form >
" ;
// $frm->admin_button('submit_cancel_show', IMALAN_68, 'cancel')
}
return $mes -> render () . $text ;
// $ns->tablerender(LAN_MEDIAMANAGER." :: ".IMALAN_18, $mes->render().$text);
2009-12-02 10:03:53 +00:00
}
2010-03-09 16:05:41 +00:00
2009-12-02 10:03:53 +00:00
function iconsPage ()
{
2010-03-14 02:11:23 +00:00
// $this->icon_editor();
2009-12-02 10:03:53 +00:00
}
2010-03-09 16:05:41 +00:00
2009-11-15 20:24:55 +00:00
/**
* Invoked just before item create event
* @ return array
*/
2009-11-17 15:23:01 +00:00
public function beforeCreate ( $new_data )
2009-11-15 20:24:55 +00:00
{
2012-04-28 01:31:30 +00:00
// print_a($_POST);
2009-11-15 20:24:55 +00:00
// return data to be merged with posted model data
2009-11-18 07:16:51 +00:00
$this -> getRequest () -> setPosted ( 'media_upload' , null );
2009-11-18 14:46:28 +00:00
//$dataFields = $this->getModel()->getDataFields();
//unset($dataFields['media_upload']);
2010-10-04 16:01:17 +00:00
//$this->getModel()->setDataFields($dataFields);
2010-10-04 22:14:05 +00:00
if ( $this -> getQuery ( 'for' ) && $this -> getMediaCategory ( $this -> getQuery ( 'for' )))
{
$new_data [ 'media_category' ] = $this -> getQuery ( 'for' );
}
2009-11-18 09:53:39 +00:00
return $this -> observeUploaded ( $new_data );
2009-11-15 20:24:55 +00:00
}
2010-03-09 16:05:41 +00:00
2009-11-15 20:24:55 +00:00
/**
2010-03-09 16:05:41 +00:00
* Same as beforeCreate () but invoked on edit
2009-12-13 21:52:32 +00:00
* @ return TBD
2009-11-15 20:24:55 +00:00
*/
2009-11-17 15:23:01 +00:00
public function beforeUpdate ( $new_data , $old_data , $id )
2009-11-15 20:24:55 +00:00
{
// return data to be merged with posted model data
2012-08-02 02:11:22 +00:00
// $new_data['media_category'] = implode(",",$new_data['media_category']);
$this -> fields [ 'media_category' ][ 'data' ] = 'str' ; //XXX Quick fix for 'comma' incompatibility in Db-Update routines.
2012-05-23 08:29:57 +00:00
return $new_data ;
2012-08-02 02:11:22 +00:00
// return $this->observeUploaded($new_data);
2009-11-15 20:24:55 +00:00
}
2011-06-07 13:01:36 +00:00
2010-10-04 16:01:17 +00:00
public function mediaData ( $sc_path )
{
if ( ! $sc_path ) return array ();
$path = e107 :: getParser () -> replaceConstants ( $sc_path );
2012-05-17 09:19:44 +00:00
$info = e107 :: getFile () -> get_file_info ( $path , true );
2011-06-07 13:01:36 +00:00
return array (
2010-10-04 16:01:17 +00:00
'media_type' => $info [ 'mime' ],
'media_datestamp' => time (),
'media_url' => e107 :: getParser () -> createConstants ( $path , 'rel' ),
'media_size' => filesize ( $path ),
'media_author' => USERID ,
'media_usedby' => '' ,
'media_tags' => '' ,
'media_dimensions' => $info [ 'img-width' ] . " x " . $info [ 'img-height' ]
);
}
2010-03-09 16:05:41 +00:00
2009-11-18 14:46:28 +00:00
// XXX - strict mysql error on Create without UPLOAD!
2009-11-18 09:53:39 +00:00
function observeUploaded ( $new_data )
2009-11-15 20:24:55 +00:00
{
2009-12-02 10:03:53 +00:00
$fl = e107 :: getFile ();
2010-03-09 16:05:41 +00:00
2009-11-18 07:16:51 +00:00
$mes = e107 :: getMessage ();
2011-06-07 13:01:36 +00:00
2012-04-28 01:31:30 +00:00
if ( vartrue ( $_FILES [ 'file_userfile' ])) // CREATE
2009-11-15 20:24:55 +00:00
{
2012-04-27 02:02:38 +00:00
2010-10-04 16:01:17 +00:00
$pref [ 'upload_storagetype' ] = " 1 " ;
require_once ( e_HANDLER . " upload_handler.php " ); //TODO - still not a class!
2012-11-12 21:46:10 +00:00
// $uploaded = process_uploaded_files(e_MEDIA.'temp/'); //FIXME doesn't handle xxx.JPG (uppercase)
2013-05-17 18:17:04 -07:00
$uploaded = process_uploaded_files ( e_IMPORT ); //FIXME doesn't handle xxx.JPG (uppercase)
2010-10-04 16:01:17 +00:00
$upload = array_shift ( $uploaded );
2009-11-18 07:16:51 +00:00
if ( vartrue ( $upload [ 'error' ]))
2010-03-09 16:05:41 +00:00
{
2012-04-28 01:31:30 +00:00
$mes -> addError ( $upload [ 'message' ]);
2012-04-27 02:02:38 +00:00
return FALSE ;
}
2011-06-07 13:01:36 +00:00
2010-10-04 16:01:17 +00:00
if ( ! $typePath = $this -> getPath ( $upload [ 'type' ]))
{
2015-05-01 15:55:13 +02:00
$mes -> addError ( IMALAN_107 );
2010-10-04 16:01:17 +00:00
return FALSE ;
}
2012-04-28 01:31:30 +00:00
$mes -> addDebug ( print_a ( $upload , TRUE ));
2011-06-07 13:01:36 +00:00
2012-11-12 21:46:10 +00:00
// $oldpath = e_MEDIA."temp/".$upload['name'];
2013-05-17 18:17:04 -07:00
$oldpath = e_IMPORT . $upload [ 'name' ];
2012-04-28 01:31:30 +00:00
$newpath = $this -> checkDupe ( $oldpath , $typePath . '/' . $upload [ 'name' ]);
2011-06-07 13:01:36 +00:00
2012-04-28 01:31:30 +00:00
if ( ! rename ( $oldpath , e_MEDIA . $newpath ))
2010-10-04 16:01:17 +00:00
{
2015-05-01 15:55:13 +02:00
$srch = array ( '[x]' , '[y]' );
$repl = array ( $oldpath , $newpath );
$text = str_replace ( $srch , $repl , IMALAN_108 );
$mes -> add ( $text , E_MESSAGE_ERROR );
2010-10-04 16:01:17 +00:00
return FALSE ;
};
2011-06-07 13:01:36 +00:00
2012-04-28 01:31:30 +00:00
$img_data = $this -> mediaData ( $newpath ); // Basic File Info only
$img_data [ 'media_name' ] = $new_data [ 'name' ];
$img_data [ 'media_caption' ] = $new_data [ 'media_caption' ];
$img_data [ 'media_category' ] = $new_data [ 'media_category' ];
$img_data [ 'media_description' ] = $new_data [ 'media_description' ];
$img_data [ 'media_tags' ] = $new_data [ 'media_tags' ];
$img_data [ 'media_userclass' ] = 0 ;
$img_data [ 'media_author' ] = USERID ;
if ( ! varset ( $img_data [ 'media_name' ]))
2010-10-04 16:01:17 +00:00
{
$img_data [ 'media_name' ] = $upload [ 'name' ];
2012-04-28 01:31:30 +00:00
}
2012-04-27 02:02:38 +00:00
$mes -> addDebug ( print_a ( $img_data , TRUE ));
2012-04-28 01:31:30 +00:00
return $img_data ;
2010-10-04 16:01:17 +00:00
}
2012-04-28 01:31:30 +00:00
else // Update Only ?
2010-10-04 16:01:17 +00:00
{
2012-05-23 08:29:57 +00:00
2010-10-04 16:01:17 +00:00
$img_data = $this -> mediaData ( $new_data [ 'media_url' ]);
2011-06-07 13:01:36 +00:00
2010-10-04 16:01:17 +00:00
if ( ! ( $typePath = $this -> getPath ( $img_data [ 'media_type' ])))
{
2015-05-01 15:55:13 +02:00
$mes -> addError ( IMALAN_109 . " " . $typePath );
2012-04-27 02:02:38 +00:00
2009-11-18 09:53:39 +00:00
return FALSE ;
}
2012-04-27 02:02:38 +00:00
2010-10-04 16:01:17 +00:00
$fname = basename ( $new_data [ 'media_url' ]);
// move to the required place
2013-05-17 18:17:04 -07:00
if ( strpos ( $new_data [ 'media_url' ], '{e_IMPORT}' ) !== FALSE )
2012-11-12 21:46:10 +00:00
// if(strpos($new_data['media_url'], '{e_MEDIA}temp/') !== FALSE)
2009-11-18 09:53:39 +00:00
{
2010-10-04 16:01:17 +00:00
$tp = e107 :: getParser ();
$oldpath = $tp -> replaceConstants ( $new_data [ 'media_url' ]);
2012-04-28 01:31:30 +00:00
$newpath = $this -> checkDupe ( $oldpath , $typePath . '/' . $fname );
2010-10-04 16:01:17 +00:00
if ( ! rename ( $oldpath , $newpath ))
{
2015-05-01 15:55:13 +02:00
$srch = array ( '[x]' , '[y]' );
$repl = array ( $oldpath , str_replace ( '../' , '' , $newpath ));
2015-05-08 10:49:52 +02:00
$text = str_replace ( $srch , $repl , IMALAN_108 );
2015-05-01 15:55:13 +02:00
$mes -> add ( $text , E_MESSAGE_ERROR );
2010-10-04 16:01:17 +00:00
return FALSE ;
}
$img_data [ 'media_url' ] = $tp -> createConstants ( $newpath , 'rel' );
2009-11-18 07:16:51 +00:00
}
2011-06-07 13:01:36 +00:00
2009-11-18 09:53:39 +00:00
if ( ! varset ( $new_data [ 'media_name' ]))
{
2010-10-04 16:01:17 +00:00
$img_data [ 'media_name' ] = basename ( $new_data [ 'media_url' ]);
2009-11-18 09:53:39 +00:00
}
2012-04-28 01:31:30 +00:00
return $img_data ;
2009-11-15 20:24:55 +00:00
}
2012-04-27 02:02:38 +00:00
2012-04-28 01:31:30 +00:00
2009-11-15 20:24:55 +00:00
}
2010-03-09 16:05:41 +00:00
2012-04-28 01:31:30 +00:00
// Check for existing image path in db and rename if found.
function checkDupe ( $oldpath , $newpath )
{
$mes = e107 :: getMessage ();
$tp = e107 :: getParser ();
$f = e107 :: getFile () -> get_file_info ( $oldpath , TRUE );
2015-04-17 11:46:47 -07:00
$mes -> addDebug ( " checkDupe(): newpath= " . $newpath . " <br />oldpath= " . $oldpath . " <br /> " . print_r ( $newpath , TRUE ));
2012-07-12 01:43:38 +00:00
if ( file_exists ( $newpath ) || e107 :: getDb () -> db_Select ( " core_media " , " * " , " media_url = ' " . $tp -> createConstants ( $newpath , 'rel' ) . " ' LIMIT 1 " ) )
2012-04-28 01:31:30 +00:00
{
2012-07-18 06:34:26 +00:00
$mes -> addWarning ( $newpath . " already exists. " );
2012-04-28 01:31:30 +00:00
$file = $f [ 'pathinfo' ][ 'filename' ] . " _. " . $f [ 'pathinfo' ][ 'extension' ];
2012-07-18 06:34:26 +00:00
$newpath = $this -> getPath ( $f [ 'mime' ]) . '/' . $file ;
return false ;
2012-04-28 01:31:30 +00:00
}
return $newpath ;
}
2009-11-17 15:23:01 +00:00
function beforeDelete ( $data , $id ) // call before 'delete' is executed. - return false to prevent delete execution (e.g. some dependencies check)
2009-11-15 20:24:55 +00:00
{
return true ;
}
2010-03-09 16:05:41 +00:00
2009-11-17 15:23:01 +00:00
function afterDelete ( $deleted_data , $id ) // call after 'delete' is successfully executed. - delete the file with the db record (optional pref)
2009-11-15 20:24:55 +00:00
{
2010-03-09 16:05:41 +00:00
2009-11-15 20:24:55 +00:00
}
2010-03-09 16:05:41 +00:00
2012-04-23 20:24:24 +00:00
function getPath ( $mime )
2009-11-15 20:24:55 +00:00
{
2016-01-24 00:37:36 -08:00
return e107 :: getMedia () -> getPath ( $mime );
/*
2009-11-18 07:16:51 +00:00
$mes = e107 :: getMessage ();
2010-03-09 16:05:41 +00:00
2009-12-02 10:03:53 +00:00
list ( $pmime , $tmp ) = explode ( '/' , $mime );
2010-03-09 16:05:41 +00:00
2009-11-18 07:16:51 +00:00
if ( ! vartrue ( $this -> mimePaths [ $pmime ]))
2010-03-09 16:05:41 +00:00
{
2015-05-01 15:55:13 +02:00
$text = str_replace ( '[x]' , $mime , IMALAN_111 );
$mes -> add ( $text , E_MESSAGE_ERROR );
2009-11-18 07:16:51 +00:00
return FALSE ;
}
2010-03-09 16:05:41 +00:00
2012-04-23 20:24:24 +00:00
$dir = $this -> mimePaths [ $pmime ] . date ( " Y-m " );
2009-11-18 07:16:51 +00:00
2012-04-23 20:24:24 +00:00
if ( ! is_dir ( $dir ))
2009-11-15 20:24:55 +00:00
{
2011-05-07 06:22:44 +00:00
if ( ! mkdir ( $dir , 0755 ))
2009-11-18 10:16:50 +00:00
{
2015-05-01 15:55:13 +02:00
$text = str_replace ( '[x]' , $dir , IMALAN_112 );
$mes -> add ( $text , E_MESSAGE_ERROR );
2010-03-09 16:05:41 +00:00
return FALSE ;
2009-11-18 10:16:50 +00:00
};
2009-11-15 20:24:55 +00:00
}
2016-01-24 00:37:36 -08:00
return $dir ; */
2009-11-15 20:24:55 +00:00
}
2010-03-09 16:05:41 +00:00
2009-12-02 10:03:53 +00:00
function batchImportForm ()
{
$frm = e107 :: getForm ();
$mes = e107 :: getMessage ();
$fl = e107 :: getFile ();
2016-12-15 15:08:49 +01:00
$tp = e107 :: getParser ();
2013-11-06 16:07:58 -08:00
2013-11-06 16:36:48 -08:00
2013-11-06 16:07:58 -08:00
2009-12-02 10:03:53 +00:00
$fl -> setFileInfo ( 'all' );
2012-07-12 01:43:38 +00:00
$rejectArray = array ( '^\.ftpquota$' , '^index\.html$' , '^null\.txt$' , '\.bak$' , '^.tmp' , '.*\.xml$' , '^\.$' , '^\.\.$' , '^\/$' , '^CVS$' , 'thumbs\.db' , '.*\._$' , '^\.htaccess$' , 'index\.html' , 'null\.txt' );
2012-07-13 06:32:42 +00:00
$fl -> setFileFilter ( $rejectArray );
2012-11-12 21:46:10 +00:00
// $files = $fl->get_files(e_MEDIA."temp/");
2013-05-17 18:17:04 -07:00
$files = $fl -> get_files ( e_IMPORT );
2012-07-12 01:43:38 +00:00
2013-02-25 02:47:23 -08:00
// e107::js('core','core/admin.js','prototype');
2012-07-12 01:43:38 +00:00
2010-03-09 16:05:41 +00:00
2009-12-02 10:03:53 +00:00
//TODO Detect XML file, and if found - read that instead of the directory.
if ( ! vartrue ( $_POST [ 'batch_import_selected' ]))
{
2015-05-01 15:55:13 +02:00
$mes -> add ( IMALAN_113 . " <b> " . e_IMPORT . " </b> " , E_MESSAGE_INFO );
2009-12-02 10:03:53 +00:00
}
2016-12-21 14:25:26 -08:00
if ( ! count ( $files ) )
2009-12-02 10:03:53 +00:00
{
2012-07-18 06:34:26 +00:00
if ( ! vartrue ( $_POST [ 'batch_import_selected' ]))
{
2015-05-01 15:55:13 +02:00
$mes -> add ( IMALAN_114 , E_MESSAGE_INFO );
2012-07-18 06:34:26 +00:00
}
2014-01-09 04:42:13 -08:00
$text = $this -> uploadTab ();
2012-07-18 06:34:26 +00:00
echo $mes -> render () . $text ;
2010-03-09 16:05:41 +00:00
return ;
2009-12-02 10:03:53 +00:00
}
2010-03-09 16:05:41 +00:00
2016-12-21 14:25:26 -08:00
2009-12-02 10:03:53 +00:00
$text = "
< form method = 'post' action = '".e_SELF."?".e_QUERY."' id = 'batch_import' >
< fieldset id = 'core-mediamanager-batch' >
< legend class = 'e-hideme' > " .DBLAN_20. " </ legend >
2012-11-26 14:41:32 -08:00
< table class = 'table adminlist' >
2012-05-16 03:10:56 +00:00
< colgroup >
2012-05-13 05:50:32 +00:00
< col style = 'width: 5%' />
< col />
< col />
< col />
2009-12-02 10:03:53 +00:00
</ colgroup >
< thead >
< tr >
2010-10-04 16:01:17 +00:00
< th class = 'center' > " .e107::getForm()->checkbox_toggle('e-column-toggle', 'batch_selected'). " </ th >
2015-05-01 15:55:13 +02:00
< th class = 'center' style = 'width:50px' > " .IMALAN_121. " </ th >
2011-05-07 06:22:44 +00:00
< th class = 'center' > " .LAN_FILE. " </ th >
2015-05-01 15:55:13 +02:00
< th > " .IMALAN_115. " </ th >
< th > " .IMALAN_116. " </ th >
2015-07-02 14:33:04 +01:00
< th > " .LAN_AUTHOR. " </ th >
2015-05-01 15:55:13 +02:00
< th > " .IMALAN_118. " </ th >
< th > " .IMALAN_119. " </ th >
2009-12-02 10:03:53 +00:00
< th > " .LAN_DATESTAMP. " </ th >
2015-05-01 15:55:13 +02:00
< th class = 'center last' > " .IMALAN_120. " </ th >
2009-12-02 10:03:53 +00:00
</ tr >
</ thead >
< tbody > " ;
2012-04-22 06:19:21 +00:00
2012-09-03 23:02:45 +00:00
// $c = 0;
2016-12-21 14:25:26 -08:00
2009-12-02 10:03:53 +00:00
foreach ( $files as $f )
{
2016-12-21 14:25:26 -08:00
if ( empty ( $f ))
{
e107 :: getMessage () -> addWarning ( " 0 byte file found in: " . e_IMPORT . " <br />Please remove before proceeding. " );
////rename(e_IMPORT.$f['path'].$f['fname'],e_IMPOT.$f['path'].$f['fname']."-bad");
continue ;
}
2012-07-12 01:43:38 +00:00
$default = $this -> getFileXml ( $f [ 'fname' ]);
2012-07-14 10:40:40 +00:00
$f = $fl -> cleanFileName ( $f , true );
2015-02-03 12:57:35 -08:00
2012-09-03 23:02:45 +00:00
$c = md5 ( $f [ 'path' ] . $f [ 'fname' ]);
2012-07-14 10:40:40 +00:00
if ( $f [ 'error' ])
{
2015-05-01 15:55:13 +02:00
$text = str_replace ( '[x]' , $f [ 'fname' ], IMALAN_122 );
$mes -> addWarning ( $text );
2012-07-14 10:40:40 +00:00
}
2012-08-19 02:33:43 +00:00
$large = e107 :: getParser () -> thumbUrl ( $f [ 'path' ] . $f [ 'fname' ], 'w=800' , true );
2016-01-24 00:37:36 -08:00
$checked = empty ( $_POST [ 'batch_selected' ]) ? true : false ;
2012-04-22 07:53:34 +00:00
$text .= "
< tr >
2016-01-24 00:37:36 -08:00
< td class = 'center' > " . $frm->checkbox ( " batch_selected [ " . $c . " ] " , $f['fname'] , $checked ). " </ td >
2012-04-22 06:19:21 +00:00
< td class = 'center' > " . $this->preview ( $f ). " </ td >
2012-08-19 02:33:43 +00:00
< td >< a class = 'e-dialog' href = '".$large."' > " . $f['fname'] . " </ a ></ td >
2016-12-15 15:08:49 +01:00
< td > " . $frm->text ('batch_import_name['. $c .']', ( $_POST['batch_import_name'] [ $c ] ? $tp->filter ( $_POST['batch_import_name'] [ $c ]) : $default['title'] )). " </ td >
< td >< textarea name = 'batch_import_diz[".$c."]' rows = '3' cols = '50' > " . ( $_POST['batch_import_diz'] [ $c ] ? $tp->filter ( $_POST['batch_import_diz'] [ $c ]) : $default['description'] ). " </ textarea ></ td >
2012-07-12 01:43:38 +00:00
2012-09-03 23:02:45 +00:00
< td >< a href = 'mailto:".$default[' authorEmail ']."' > " . $default['authorName'] . " </ a >< br /> " . $default['authorEmail'] . " </ td >
2009-12-02 10:03:53 +00:00
< td > " . $f['mime'] . " </ td >
< td > " . $f['fsize'] . " </ td >
< td > " .e107::getDateConvert()->convert_date( $f['modified'] ). " </ td >
2010-03-09 16:05:41 +00:00
< td class = 'center last' > " . $f['img-width'] . " x " . $f['img-height'] . " </ td >
2012-04-22 07:53:34 +00:00
</ tr >
2012-09-03 23:02:45 +00:00
\n " ;
2012-04-22 07:53:34 +00:00
2012-09-03 23:02:45 +00:00
// $c++;
2012-07-18 06:34:26 +00:00
$lastMime = $f [ 'mime' ];
2010-03-09 16:05:41 +00:00
}
2012-07-12 01:43:38 +00:00
// <td>".$frm->textarea('batch_import_diz['.$c.']', ($_POST['batch_import_diz'][$c] ? $_POST['batch_import_diz'][$c] : $default['description']))."</td>
2009-12-02 10:03:53 +00:00
2016-03-14 13:03:55 -07:00
2016-11-02 09:29:18 +01:00
$this -> cats [ '_avatars_public' ] = IMALAN_178 ;
$this -> cats [ '_avatars_private' ] = IMALAN_179 ;
2016-03-14 13:03:55 -07:00
2012-07-18 06:34:26 +00:00
if ( ! isset ( $_POST [ 'batch_category' ]) && substr ( $lastMime , 0 , 5 ) == 'image' )
{
$_POST [ 'batch_category' ] = " _common_image " ;
}
2009-12-02 10:03:53 +00:00
$text .= "
</ tbody >
</ table >
2016-01-24 00:37:36 -08:00
< div class = 'buttons-bar center form-inline' >
2016-12-15 15:08:49 +01:00
" .IMALAN_123. " " . $frm->selectbox ('batch_category', $this->cats , $tp->filter ( $_POST['batch_category'] ));
2011-08-23 02:51:56 +00:00
2012-07-18 06:34:26 +00:00
// $waterMarkPath = e_THEME.e107::getPref('sitetheme')."/images/watermark.png"; // Now performed site-wide dynamically.
2011-08-23 02:51:56 +00:00
2015-04-17 11:46:47 -07:00
// if(is_readable($waterMarkPath))
2011-08-23 02:51:56 +00:00
{
2012-07-14 10:40:40 +00:00
// $text .= $frm->checkbox_label("Add Watermark", 'batch_import_watermark',1);
2011-08-23 02:51:56 +00:00
}
$text .= "
2009-12-02 10:03:53 +00:00
</ div >
< div class = 'buttons-bar center' >
2015-05-01 15:55:13 +02:00
" . $frm->admin_button ('batch_import_selected', IMALAN_124, 'import')
. $frm -> admin_button ( 'batch_import_delete' , IMALAN_125 , 'delete' );
2011-08-23 02:51:56 +00:00
$text .= "
2009-12-02 10:03:53 +00:00
</ div >
</ fieldset >
</ form >
2010-03-09 16:05:41 +00:00
2009-12-02 10:03:53 +00:00
" ;
2010-03-09 16:05:41 +00:00
2009-12-02 10:03:53 +00:00
echo $mes -> render () . $text ;
}
2010-03-09 16:05:41 +00:00
2012-07-12 01:43:38 +00:00
// Check for matching XML file name and if found, return data from it during import.
function getFileXml ( $imgFile )
{
list ( $file , $ext ) = explode ( " . " , $imgFile );
2013-05-17 18:17:04 -07:00
$xmlFile = e_IMPORT . $file . " .xml " ;
2012-07-12 01:43:38 +00:00
if ( is_readable ( $xmlFile ))
{
$data = file_get_contents ( $xmlFile );
$tmp = preg_match ( " /<author name=(?:'| \" )([^' \" ]*)/i " , $data , $authorName );
$tmp = preg_match ( " /email=(?:'| \" )([^' \" ]*)/i " , $data , $authorEmail );
$tmp = preg_match ( " /<title>(.*)< \ /title>/i " , $data , $title );
$tmp = preg_match ( " /<description>(.*)< \ /description>/i " , $data , $diz );
return array (
'title' => $title [ 1 ],
'description' => $diz [ 1 ],
'authorName' => $authorName [ 1 ],
'authorEmail' => $authorEmail [ 1 ]
);
}
2013-05-17 18:17:04 -07:00
$srch = array ( " _ " , " - " );
$description = str_replace ( $srch , " " , $file );
2015-02-03 12:57:35 -08:00
$file = utf8_encode ( $file );
$description = utf8_encode ( $description );
2013-05-17 18:17:04 -07:00
return array ( 'title' => basename ( $file ), 'description' => $description , 'authorName' => USERNAME , 'authorEmail' => '' );
2012-07-12 01:43:38 +00:00
/*
Example : matchingfilename . xml ( ie . same name as jpg |. gif |. png etc )
< ? xml version = '1.0' encoding = 'utf-8' ?>
< e107Media >
< item file = 'filename.jpg' date = '2012-10-25' >
< author name = 'MyName' url = 'http://mysite.com' email = 'email@email.com' />
< title > Title of File </ title >
< description > Description of File </ description >
< category ></ category >
</ item >
</ e107Media >
*/
}
function deleteFileXml ( $imgFile )
{
list ( $file , $ext ) = explode ( " . " , $imgFile );
2013-05-17 18:17:04 -07:00
$xmlFile = e_IMPORT . $file . " .xml " ;
2012-07-12 01:43:38 +00:00
if ( file_exists ( $xmlFile ))
{
unlink ( $xmlFile );
}
}
2012-07-18 06:34:26 +00:00
function batchDelete ()
{
2016-12-20 10:58:43 +01:00
$tp = e107 :: getParser ();
2012-07-18 06:34:26 +00:00
foreach ( $_POST [ 'batch_selected' ] as $key => $file )
{
if ( trim ( $file ) == '' )
{
continue ;
}
2012-11-12 21:46:10 +00:00
// $oldpath = e_MEDIA."temp/".$file;
2016-12-20 10:58:43 +01:00
$oldpath = e_IMPORT . $tp -> filter ( $file , 'file' );
2012-07-18 06:34:26 +00:00
if ( file_exists ( $oldpath ))
{
unlink ( $oldpath );
}
}
}
2012-07-12 01:43:38 +00:00
2012-09-03 23:02:45 +00:00
2009-12-02 10:03:53 +00:00
function batchImport ()
{
$fl = e107 :: getFile ();
$mes = e107 :: getMessage ();
$sql = e107 :: getDb ();
2011-05-07 06:22:44 +00:00
$tp = e107 :: getParser ();
2011-08-22 23:52:45 +00:00
2011-07-10 23:21:09 +00:00
if ( ! count ( $_POST [ 'batch_selected' ]))
{
2015-05-01 15:55:13 +02:00
$mes -> addError ( IMALAN_126 );
2011-07-10 23:21:09 +00:00
return ;
}
2012-04-22 06:19:21 +00:00
2012-09-03 23:02:45 +00:00
2011-08-22 23:52:45 +00:00
list ( $img_import_w , $img_import_h ) = explode ( " x " , e107 :: getPref ( 'img_import_resize' ));
2011-08-23 02:51:56 +00:00
if ( vartrue ( $_POST [ 'batch_import_watermark' ]))
{
$WM = TRUE ;
$watermarkPath = e_THEME . e107 :: getPref ( 'sitetheme' ) . " /images/watermark.png " ;
$watermark = PhpThumbFactory :: create ( $watermarkPath );
}
else
{
$WM = FALSE ;
}
2010-03-09 16:05:41 +00:00
2012-07-11 04:46:09 +00:00
// Disable resize-on-import and watermark for now.
2012-09-03 23:02:45 +00:00
$img_import_w = 2816 ;
$img_import_h = 2112 ;
2012-07-11 04:46:09 +00:00
2012-04-22 06:19:21 +00:00
foreach ( $_POST [ 'batch_selected' ] as $key => $file )
2009-12-02 10:03:53 +00:00
{
2016-03-14 13:42:41 -07:00
2016-12-05 20:35:48 -08:00
$oldpath = e_IMPORT . $tp -> filter ( $file , 'file' );
2016-03-14 13:03:55 -07:00
if ( $_POST [ 'batch_category' ] == '_avatars_public' || $_POST [ 'batch_category' ] == '_avatars_private' )
{
2016-12-15 15:08:49 +01:00
$newpath = ( $_POST [ 'batch_category' ] == '_avatars_public' ) ? e_AVATAR_DEFAULT . $tp -> filter ( $file , 'file' ) : $newpath = e_AVATAR_UPLOAD . $tp -> filter ( $file , 'file' );
2016-03-14 13:03:55 -07:00
if ( rename ( $oldpath , $newpath ))
{
$mes -> addSuccess ( IMALAN_128 . " " . $newpath );
}
else
{
$mes -> addError ( IMALAN_128 . " " . $newpath );
}
continue ;
}
2011-08-22 23:52:45 +00:00
// Resize on Import Routine ------------------------
if ( vartrue ( $img_import_w ) && vartrue ( $img_import_h ))
{
2012-09-03 23:02:45 +00:00
// $this->resizeImage($file,$img_import_w,$img_import_h);
2011-08-22 23:52:45 +00:00
}
// End Resize routine. ---------------------
2011-06-07 13:01:36 +00:00
2011-05-07 06:22:44 +00:00
$f = $fl -> get_file_info ( $oldpath );
2011-06-07 13:01:36 +00:00
2010-10-10 22:08:57 +00:00
if ( ! $f [ 'mime' ])
{
2012-07-11 04:46:09 +00:00
2015-05-01 15:55:13 +02:00
$mes -> add ( IMALAN_127 . " " . $oldpath , E_MESSAGE_WARNING );
2012-07-11 04:46:09 +00:00
// $mes->add(print_a($f,true), E_MESSAGE_ERROR);
$f [ 'mime' ] = " other/file " ;
2010-10-10 22:08:57 +00:00
}
2011-06-07 13:01:36 +00:00
2016-01-24 00:37:36 -08:00
if ( ! $newDir = $this -> getPath ( $f [ 'mime' ]))
{
continue ;
}
$newpath = $this -> checkDupe ( $oldpath , $newDir . '/' . $file );
2012-04-22 06:19:21 +00:00
$newname = $tp -> toDB ( $_POST [ 'batch_import_name' ][ $key ]);
$newdiz = $tp -> toDB ( $_POST [ 'batch_import_diz' ][ $key ]);
2009-12-02 10:03:53 +00:00
$f [ 'fname' ] = $file ;
2012-04-22 06:19:21 +00:00
2012-04-28 01:31:30 +00:00
/*
if ( file_exists ( $newpath ) || $sql -> db_Select ( " core_media " , " media_url = ' " . $tp -> createConstants ( $newpath , 'rel' ) . " ' LIMIT 1 " ) )
{
$mes -> addWarning ( $newpath . " already exists and was renamed during import. " );
$file = $f [ 'pathinfo' ][ 'filename' ] . " _. " . $f [ 'pathinfo' ][ 'extension' ];
$newpath = $this -> getPath ( $f [ 'mime' ]) . '/' . $file ;
}
*/
2012-04-22 07:53:34 +00:00
2011-05-07 06:22:44 +00:00
if ( rename ( $oldpath , $newpath ))
2009-12-02 10:03:53 +00:00
{
$insert = array (
2012-04-22 06:19:21 +00:00
'media_caption' => $newdiz ,
2010-03-09 16:05:41 +00:00
'media_description' => '' ,
2016-12-15 15:08:49 +01:00
'media_category' => $tp -> filter ( $_POST [ 'batch_category' ]),
2010-03-09 16:05:41 +00:00
'media_datestamp' => $f [ 'modified' ],
2011-05-07 06:22:44 +00:00
'media_url' => $tp -> createConstants ( $newpath , 'rel' ),
2012-07-11 04:46:09 +00:00
'media_userclass' => '0' ,
2012-04-22 06:19:21 +00:00
'media_name' => $newname ,
2011-05-07 06:22:44 +00:00
'media_author' => USERID ,
'media_size' => $f [ 'fsize' ],
2010-03-09 16:05:41 +00:00
'media_dimensions' => $f [ 'img-width' ] . " x " . $f [ 'img-height' ],
2011-05-07 06:22:44 +00:00
'media_usedby' => '' ,
'media_tags' => '' ,
'media_type' => $f [ 'mime' ]
2009-12-02 10:03:53 +00:00
);
2010-03-09 16:05:41 +00:00
2016-01-24 00:37:36 -08:00
if ( $sql -> insert ( " core_media " , $insert ))
2009-12-02 10:03:53 +00:00
{
2015-05-01 15:55:13 +02:00
$mes -> add ( IMALAN_128 . " " . $f [ 'fname' ], E_MESSAGE_SUCCESS );
2012-07-12 01:43:38 +00:00
$this -> deleteFileXml ( $f [ 'fname' ]);
2009-12-02 10:03:53 +00:00
}
else
{
2011-05-07 06:22:44 +00:00
rename ( $newpath , $oldpath ); //move it back.
2009-12-02 10:03:53 +00:00
}
}
2010-03-09 16:05:41 +00:00
}
2009-12-02 10:03:53 +00:00
}
2010-03-09 16:05:41 +00:00
2009-12-02 10:03:53 +00:00
function preview ( $f )
{
list ( $type , $tmp ) = explode ( " / " , $f [ 'mime' ]);
if ( $type == 'image' )
{
2010-10-04 16:01:17 +00:00
$url = e107 :: getParser () -> thumbUrl ( $f [ 'path' ] . $f [ 'fname' ], 'w=100' , true );
2012-07-12 01:43:38 +00:00
$large = e107 :: getParser () -> thumbUrl ( $f [ 'path' ] . $f [ 'fname' ], 'w=800' , true );
2010-10-04 16:01:17 +00:00
//echo $url;
2012-07-12 01:43:38 +00:00
return " <a class='e-dialog' href=' " . $large . " '><img src=' " . $url . " ' alt= \" " . $f [ 'name' ] . " \" width='100px' /></a> " ;
2009-12-02 10:03:53 +00:00
}
else
{
2010-03-09 16:05:41 +00:00
return ; //TODO generic icon/image for no preview.
2009-12-02 10:03:53 +00:00
}
}
2010-03-09 16:05:41 +00:00
2010-10-04 16:01:17 +00:00
public function getMediaCategory ( $id = false )
{
2012-05-23 08:29:57 +00:00
if ( is_array ( $id ))
{
$text = " " ;
foreach ( $id as $val )
{
$text .= ( isset ( $this -> cats [ $val ]) ? " <span class='nowrap'> " . $this -> cats [ $val ] . " </span><br /> " : '' );
}
return $text ;
}
2010-10-04 16:01:17 +00:00
if ( $id ) return ( isset ( $this -> cats [ $id ]) ? $this -> cats [ $id ] : 0 );
return $this -> cats ;
}
2012-04-22 07:53:34 +00:00
/*
* UPDATE IMAGE OPTIONS - MAIN SCREEN
*/
function updateSettings ()
{
global $pref , $admin_log , $tp ;
$mes = e107 :: getMessage ();
$tmp = array ();
$tmp [ 'image_post' ] = intval ( $_POST [ 'image_post' ]);
$tmp [ 'resize_method' ] = $tp -> toDB ( $_POST [ 'resize_method' ]);
$tmp [ 'im_path' ] = trim ( $tp -> toDB ( $_POST [ 'im_path' ]));
$tmp [ 'image_post_class' ] = intval ( $_POST [ 'image_post_class' ]);
$tmp [ 'image_post_disabled_method' ] = intval ( $_POST [ 'image_post_disabled_method' ]);
$tmp [ 'enable_png_image_fix' ] = intval ( $_POST [ 'enable_png_image_fix' ]);
if ( $_POST [ 'img_import_resize_w' ] && $_POST [ 'img_import_resize_h' ])
{
$tmp [ 'img_import_resize' ] = intval ( $_POST [ 'img_import_resize_w' ]) . " x " . intval ( $_POST [ 'img_import_resize_h' ]);
}
if ( $admin_log -> logArrayDiffs ( $tmp , $pref , 'IMALAN_04' ))
{
save_prefs (); // Only save if changes
$mes -> add ( IMALAN_9 , E_MESSAGE_SUCCESS );
}
else
{
$mes -> add ( IMALAN_20 , E_MESSAGE_INFO );
}
}
2011-06-07 13:01:36 +00:00
2006-12-02 04:36:16 +00:00
}
2009-11-07 11:20:34 +00:00
new media_admin ();
require_once ( e_ADMIN . " auth.php " );
e107 :: getAdminUI () -> runPage ();
// -----------------------------------------------------------------------
2010-03-09 16:05:41 +00:00
2009-11-07 11:20:34 +00:00
2009-07-16 08:15:35 +00:00
$action = e_QUERY ;
2009-11-08 13:22:02 +00:00
if ( varset ( $_GET [ 'action' ]) == " icons " )
2009-07-16 08:15:35 +00:00
{
2009-12-02 10:03:53 +00:00
// icon_editor();
2009-07-16 08:15:35 +00:00
}
2009-11-08 13:22:02 +00:00
if ( varset ( $_GET [ 'action' ]) == " avatars " )
2009-07-16 08:15:35 +00:00
{
2009-12-02 10:03:53 +00:00
// show_avatars();
2009-07-16 08:15:35 +00:00
}
2009-11-08 13:22:02 +00:00
if ( varset ( $_GET [ 'action' ]) == 'settings' )
2009-07-16 08:15:35 +00:00
{
2009-12-02 10:03:53 +00:00
// main_config();
2009-07-16 08:15:35 +00:00
}
2008-12-10 16:59:19 +00:00
/*
* DELETE CHECKED AVATARS - SHOW AVATAR SCREEN
*/
2009-07-16 08:15:35 +00:00
2008-12-10 16:59:19 +00:00
2008-12-05 22:01:25 +00:00
2008-12-10 16:59:19 +00:00
/*
* DELETE ALL UNUSED IMAGES - SHOW AVATAR SCREEN
*/
if ( isset ( $_POST [ 'submit_show_deleteall' ]))
2008-12-05 22:01:25 +00:00
{
2013-04-19 22:50:41 -07:00
$handle = opendir ( e_AVATAR_UPLOAD );
2008-12-10 16:59:19 +00:00
$dirlist = array ();
2013-04-19 22:50:41 -07:00
while ( $file = readdir ( $handle ))
{
if ( ! is_dir ( e_AVATAR_UPLOAD . $file ) && $file != '.' && $file != '..' && $file != " index.html " && $file != " null.txt " && $file != '/' && $file != 'CVS' && $file != 'Thumbs.db' ) {
2006-12-02 04:36:16 +00:00
$dirlist [] = $file ;
}
}
closedir ( $handle );
2008-12-10 16:59:19 +00:00
if ( ! empty ( $dirlist ))
2008-12-05 22:01:25 +00:00
{
2008-12-10 16:59:19 +00:00
$imgList = '' ;
$count = 0 ;
foreach ( $dirlist as $image_name )
{
$image_name = basename ( $image_name );
$image_todb = $tp -> toDB ( $image_name );
if ( ! $sql -> db_Count ( 'user' , '(*)' , " WHERE user_image='-upload- { $image_todb } ' OR user_sess=' { $image_todb } ' " )) {
2013-04-19 22:50:41 -07:00
unlink ( e_AVATAR_UPLOAD . $image_name );
2008-12-10 16:59:19 +00:00
$imgList .= '[!br!]' . $image_name ;
$count ++ ;
}
2006-12-02 04:36:16 +00:00
}
2008-12-10 16:59:19 +00:00
$message = $count . " " . IMALAN_26 ;
2013-02-25 20:14:59 +01:00
$mes -> addSuccess ( $message );
2014-10-23 11:12:13 -07:00
e107 :: getLog () -> add ( 'IMALAN_02' , $message . $imgList , E_LOG_INFORMATIVE , '' );
2008-12-10 16:59:19 +00:00
unset ( $imgList );
2006-12-02 04:36:16 +00:00
}
}
2008-12-05 22:01:25 +00:00
2008-12-10 16:59:19 +00:00
/*
* DELETE ALL CHECKED BAD IMAGES - VALIDATE SCREEN
*/
if ( isset ( $_POST [ 'submit_avdelete_multi' ]))
2008-12-05 22:01:25 +00:00
{
2006-12-02 04:36:16 +00:00
require_once ( e_HANDLER . " avatar_handler.php " );
2008-12-05 22:01:25 +00:00
$avList = array ();
2008-12-10 16:59:19 +00:00
$tmp = array ();
$uids = array ();
2016-12-20 10:58:43 +01:00
$tp = e107 :: getParser ();
$sql = e107 :: getDb ();
2008-12-10 16:59:19 +00:00
//Sanitize
2016-12-20 10:58:43 +01:00
$multiaction = $tp -> filter ( $_POST [ 'multiaction' ], 'int' );
2008-12-10 16:59:19 +00:00
//sql queries significant reduced
2016-12-20 10:58:43 +01:00
if ( ! empty ( $multiaction ) && $sql -> db_Select ( " user " , 'user_id, user_name, user_image' , " user_id IN ( " . implode ( ',' , $multiaction ) . " ) " ))
2006-12-02 04:36:16 +00:00
{
2008-12-10 16:59:19 +00:00
$search_users = $sql -> db_getList ( 'ALL' , FALSE , FALSE , 'user_id' );
2016-12-20 10:58:43 +01:00
foreach ( $multiaction as $uid )
2008-12-05 22:01:25 +00:00
{
2015-02-14 23:34:15 -08:00
if ( vartrue ( $search_users [ $uid ]))
2008-12-10 16:59:19 +00:00
{
$avname = avatar ( $search_users [ $uid ][ 'user_image' ]);
if ( strpos ( $avname , " http:// " ) === FALSE )
{ // Internal file, so unlink it
@ unlink ( $avname );
}
$uids [] = $uid ;
$tmp [] = $search_users [ $uid ][ 'user_name' ];
$avList [] = $uid . ':' . $search_users [ $uid ][ 'user_name' ] . ':' . $search_users [ $uid ][ 'user_image' ];
2006-12-02 04:36:16 +00:00
}
}
2008-12-10 16:59:19 +00:00
//sql queries significant reduced
if ( ! empty ( $uids ))
{
$sql -> db_Update ( " user " , " user_image='' WHERE user_id IN ( " . implode ( ',' , $uids ) . " ) " );
}
2013-02-25 20:14:59 +01:00
$mes -> addSuccess ( IMALAN_51 . '<strong>' . implode ( ', ' , $tmp ) . '</strong> ' . IMALAN_28 );
2014-10-23 11:12:13 -07:00
e107 :: getLog () -> add ( 'IMALAN_03' , implode ( '[!br!]' , $avList ), E_LOG_INFORMATIVE , '' );
2008-12-12 09:55:33 +00:00
2008-12-10 16:59:19 +00:00
unset ( $search_users );
2006-12-02 04:36:16 +00:00
}
2008-12-10 16:59:19 +00:00
unset ( $avList , $tmp , $uids );
2006-12-02 04:36:16 +00:00
}
2008-12-10 16:59:19 +00:00
2006-12-02 04:36:16 +00:00
2008-12-10 16:59:19 +00:00
/*
* CHECK AVATARS SCREEN
*/
2008-12-09 15:19:03 +00:00
if ( isset ( $_POST [ 'check_avatar_sizes' ]))
2008-12-05 22:01:25 +00:00
{
2006-12-02 04:36:16 +00:00
// Set up to track what we've done
//
$iUserCount = 0 ;
$iAVinternal = 0 ;
$iAVexternal = 0 ;
$iAVnotfound = 0 ;
$iAVtoobig = 0 ;
require_once ( e_HANDLER . " avatar_handler.php " );
2008-12-09 15:19:03 +00:00
$text = "
< form method = 'post' action = '".e_SELF."' >
2008-12-10 16:59:19 +00:00
< fieldset id = 'core-image-check-avatar' >
2008-12-09 15:19:03 +00:00
< legend class = 'e-hideme' > " .CACLAN_3. " </ legend >
2012-11-26 14:41:32 -08:00
< table class = 'table adminlist' >
2012-05-13 05:50:32 +00:00
< colgroup >
< col style = 'width:10%' />
< col style = 'width:20%' />
< col style = 'width:25%' />
< col style = 'width:45%' />
2008-12-09 15:19:03 +00:00
</ colgroup >
< thead >
< tr >
2009-07-16 08:15:35 +00:00
< th class = 'center' > " .LAN_OPTIONS. " </ th >
2009-11-08 09:14:39 +00:00
< th class = 'center' > " .LAN_USER. " </ th >
2008-12-09 15:19:03 +00:00
< th class = 'center' > " .IMALAN_62. " </ th >
2009-11-08 09:14:39 +00:00
< th class = 'center last' > " .LAN_URL. " </ th >
2008-12-09 15:19:03 +00:00
</ tr >
</ thead >
< tbody >
" ;
2006-12-02 04:36:16 +00:00
//
// Loop through avatar field for every user
//
$iUserCount = $sql -> db_Count ( " user " );
2008-12-10 16:59:19 +00:00
$found = false ;
$allowedWidth = intval ( $pref [ 'im_width' ]);
$allowedHeight = intval ( $pref [ 'im_width' ]);
2006-12-02 04:36:16 +00:00
if ( $sql -> db_Select ( " user " , " * " , " user_image!='' " )) {
2008-12-10 16:59:19 +00:00
2008-12-09 15:19:03 +00:00
while ( $row = $sql -> db_Fetch ())
2008-12-05 22:01:25 +00:00
{
2008-12-10 16:59:19 +00:00
//Check size
$avname = avatar ( $row [ 'user_image' ]);
2008-12-09 15:19:03 +00:00
if ( strpos ( $avname , " http:// " ) !== FALSE )
2006-12-02 04:36:16 +00:00
{
$iAVexternal ++ ;
$bAVext = TRUE ;
} else {
$iAVinternal ++ ;
$bAVext = FALSE ;
}
2008-12-10 16:59:19 +00:00
2006-12-02 04:36:16 +00:00
$image_stats = getimagesize ( $avname );
$sBadImage = " " ;
2008-12-10 16:59:19 +00:00
2006-12-02 04:36:16 +00:00
if ( ! $image_stats )
{
$iAVnotfound ++ ;
// allow delete
$sBadImage = IMALAN_42 ;
2008-12-10 16:59:19 +00:00
}
else
{
2006-12-02 04:36:16 +00:00
$imageWidth = $image_stats [ 0 ];
$imageHeight = $image_stats [ 1 ];
2008-12-10 16:59:19 +00:00
if ( ( $imageHeight > $allowedHeight ) || ( $imageWidth > $allowedWidth ) )
2006-12-02 04:36:16 +00:00
{ // Too tall or too wide
$iAVtoobig ++ ;
2008-12-10 16:59:19 +00:00
if ( $imageWidth > $allowedWidth )
{
2006-12-02 04:36:16 +00:00
$sBadImage = IMALAN_40 . " ( $imageWidth ) " ;
}
2008-12-10 16:59:19 +00:00
if ( $imageHeight > $allowedHeight )
{
2006-12-02 04:36:16 +00:00
if ( strlen ( $sBadImage ))
{
$sBadImage .= " , " ;
}
$sBadImage .= IMALAN_41 . " ( $imageHeight ) " ;
}
}
}
2008-12-09 15:19:03 +00:00
2008-12-10 16:59:19 +00:00
//If not found or too large, allow delete
2006-12-02 04:36:16 +00:00
if ( strlen ( $sBadImage ))
{
2016-01-31 18:50:39 -08:00
$uparams = array ( 'id' => $row [ 'user_id' ], 'name' => $row [ 'user_name' ]);
$ulink = e107 :: getUrl () -> create ( 'user/profile/view' , $uparams );
2008-12-10 16:59:19 +00:00
$found = true ;
2006-12-02 04:36:16 +00:00
$text .= "
< tr >
2008-12-11 11:25:21 +00:00
< td class = 'autocheck center' >
2008-12-10 16:59:19 +00:00
< input class = 'checkbox' type = 'checkbox' name = 'multiaction[]' id = 'avdelete-{$row[' user_id ']}' value = '{$row[' user_id ']}' />
2008-12-09 15:19:03 +00:00
</ td >
< td >
2016-01-31 18:50:39 -08:00
< label for = 'avdelete-{$row[' user_id ']}' title = '".IMALAN_56."' > " .IMALAN_51. " </ label >< a href = '".$ulink."' > " . $row['user_name'] . " </ a >
2008-12-09 15:19:03 +00:00
</ td >
< td > " . $sBadImage . " </ td >
< td > " . $avname . " </ td >
2006-12-02 04:36:16 +00:00
</ tr > " ;
}
2008-12-10 16:59:19 +00:00
}
}
//Nothing found
if ( ! $found )
{
$text .= "
2008-12-09 15:19:03 +00:00
< tr >
< td colspan = '4' class = 'center' > " .IMALAN_65. " </ td >
2008-12-10 16:59:19 +00:00
</ tr >
" ;
2006-12-02 04:36:16 +00:00
}
2008-12-10 16:59:19 +00:00
2006-12-02 04:36:16 +00:00
$text .= "
2008-12-09 15:19:03 +00:00
</ tbody >
</ table >
< div class = 'buttons-bar' >
2008-12-10 16:59:19 +00:00
< input type = 'hidden' name = 'check_avatar_sizes' value = '1' />
2009-11-08 09:14:39 +00:00
" . $frm->admin_button ('check_all', LAN_CHECKALL, 'action'). "
" . $frm->admin_button ('uncheck_all', LAN_UNCHECKALL, 'action'). "
" . $frm->admin_button ('submit_avdelete_multi', LAN_DELCHECKED, 'delete'). "
2008-12-09 15:19:03 +00:00
</ div >
</ fieldset >
</ form >
2012-11-26 14:41:32 -08:00
< table class = 'table adminform' >
2012-05-13 05:50:32 +00:00
< colgroup >
2009-07-16 08:15:35 +00:00
< col class = 'col-label' />
< col class = 'col-control' />
</ colgroup >
2008-12-10 16:59:19 +00:00
</ colgroup >
< tbody >
< tr >
2009-07-16 08:15:35 +00:00
< td > " .IMALAN_38. " </ td >
< td > { $allowedWidth } </ td >
2008-12-10 16:59:19 +00:00
</ tr >
< tr >
2009-07-16 08:15:35 +00:00
< td > " .IMALAN_39. " </ td >
< td > { $allowedHeight } </ td >
2008-12-10 16:59:19 +00:00
</ tr >
< tr >
2009-07-16 08:15:35 +00:00
< td > " .IMALAN_45. " </ td >
< td > { $iAVnotfound } </ td >
2008-12-10 16:59:19 +00:00
</ tr >
< tr >
2009-07-16 08:15:35 +00:00
< td > " .IMALAN_46. " </ td >
< td > { $iAVtoobig } </ td >
2008-12-10 16:59:19 +00:00
</ tr >
< tr >
2009-07-16 08:15:35 +00:00
< td > " .IMALAN_47. " </ td >
< td > { $iAVinternal } </ td >
2008-12-10 16:59:19 +00:00
</ tr >
< tr >
2009-07-16 08:15:35 +00:00
< td > " .IMALAN_48. " </ td >
< td > { $iAVexternal } </ td >
2008-12-10 16:59:19 +00:00
</ tr >
< tr >
2009-07-16 08:15:35 +00:00
< td > " .IMALAN_49. " </ td >
< td > " .( $iAVexternal + $iAVinternal ). " ( " .(int)(100.0*(( $iAVexternal + $iAVinternal )/ $iUserCount )).'%, '. $iUserCount . " " .IMALAN_50. " ) </ td >
2008-12-10 16:59:19 +00:00
</ tr >
</ tbody >
2008-12-09 15:19:03 +00:00
</ table >
" ;
2006-12-02 04:36:16 +00:00
2013-02-25 20:14:59 +01:00
$ns -> tablerender ( IMALAN_37 , $mes -> render () . $text );
2006-12-02 04:36:16 +00:00
}
2009-11-07 11:20:34 +00:00
2009-07-16 08:15:35 +00:00
//Just in case...
2012-06-09 04:44:11 +00:00
if ( ! e_AJAX_REQUEST ) require_once ( " footer.php " );
2009-07-16 08:15:35 +00:00
2016-02-14 13:44:00 -06:00
?>