1<?php
2	/**
3	 * e107 website system
4	 *
5	 * Copyright (C) 2008-2016 e107 Inc (e107.org)
6	 * Released under the terms and conditions of the
7	 * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
8	 *
9	 */
10
11// Generated e107 Plugin Admin Area
12
13require_once('../../class2.php');
14if (!getperms('P') || !e107::isInstalled('newsfeed'))
15{
16	e107::redirect('admin');
17	exit;
18}
19
20e107::lan('newsfeed',true);
21
22
23define('NEWSFEED_LIST_CACHE_TAG', 'newsfeeds'.e_LAN."_");
24define('NEWSFEED_NEWS_CACHE_TAG', 'newsfeeds_news_'.e_LAN."_");
25
26
27class newsfeed_adminArea extends e_admin_dispatcher
28{
29
30	protected $modes = array(
31
32		'main'	=> array(
33			'controller' 	=> 'newsfeed_ui',
34			'path' 			=> null,
35			'ui' 			=> 'newsfeed_form_ui',
36			'uipath' 		=> null
37		),
38
39
40	);
41
42
43	protected $adminMenu = array(
44
45		'main/list'			=> array('caption'=> LAN_MANAGE, 'perm' => 'P'),
46		'main/create'		=> array('caption'=> LAN_CREATE, 'perm' => 'P'),
47
48		// 'main/custom'		=> array('caption'=> 'Custom Page', 'perm' => 'P')
49	);
50
51	protected $adminMenuAliases = array(
52		'main/edit'	=> 'main/list'
53	);
54
55	protected $menuTitle = LAN_PLUGIN_NEWSFEEDS_NAME;
56}
57
58
59
60
61
62class newsfeed_ui extends e_admin_ui
63{
64
65		protected $pluginTitle		= LAN_PLUGIN_NEWSFEEDS_NAME;
66		protected $pluginName		= 'newsfeed';
67	//	protected $eventName		= 'newsfeed-newsfeed'; // remove comment to enable event triggers in admin.
68		protected $table			= 'newsfeed';
69		protected $pid				= 'newsfeed_id';
70		protected $perPage			= 10;
71		protected $batchDelete		= true;
72		protected $batchCopy		= true;
73	//	protected $sortField		= 'somefield_order';
74	//	protected $orderStep		= 10;
75	//	protected $tabs				= array('Tabl 1','Tab 2'); // Use 'tab'=>0  OR 'tab'=>1 in the $fields below to enable.
76
77	//	protected $listQry      	= "SELECT * FROM `#tableName` WHERE field != '' "; // Example Custom Query. LEFT JOINS allowed. Should be without any Order or Limit.
78
79		protected $listOrder		= 'newsfeed_id DESC';
80
81		protected $fields 		= array (  'checkboxes' =>   array ( 'title' => '', 'type' => null, 'data' => null, 'width' => '5%', 'thclass' => 'center', 'forced' => '1', 'class' => 'center', 'toggle' => 'e-multiselect',  ),
82		  'newsfeed_id' =>			array ( 'title' => LAN_ID, 'data' => 'int', 'width' => '5%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',  ),
83		  'newsfeed_name' =>		array ( 'title' => LAN_TITLE, 'type' => 'text', 'data' => 'str', 'required'=>true,  'width' => 'auto', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',  ),
84		  'newsfeed_url' =>			array ( 'title' => LAN_URL, 'type' => 'url', 'data' => 'str', 'required'=>true, 'inline'=>true, 'width' => 'auto',  'help' => '', 'readParms' => '', 'writeParms' => array('size'=>'xxlarge'), 'class' => 'left', 'thclass' => 'left',  ),
85		  'newsfeed_data' =>		array ( 'title' => LAN_DATA, 'type' => null,  'data' => false, 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',  ),
86		  'newsfeed_description' =>	array ( 'title' => LAN_DESCRIPTION, 'type' => 'textarea', 'data' => 'str', 'width' => '40%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',  ),
87		  'newsfeed_image' =>		array ( 'title' => NFLAN_11, 'type' => 'method', 'data' => 'str', 'width' => 'auto', 'help' => LAN_OPTIONAL, 'readParms' => 'thumb=80x80', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',  ),
88
89		  'newsfeed_updateint' =>	array ( 'title' => NFLAN_18, 'type' => 'text', 'data' => 'int', 'inline'=>true, 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => array('default'=>3600), 'class' => 'left', 'thclass' => 'left',  ),
90		  'newsfeed_timestamp' =>	array ( 'title' => LAN_LAST_UPDATED, 'type' => 'method', 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left',  ),
91
92		  'newsfeed_active' =>		array ( 'title' => NFLAN_12, 'type' => 'radio', 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => array('default'=>3, 'optArray'=>array(NFLAN_13,NFLAN_14,NFLAN_20,NFLAN_21)), 'class' => 'left', 'thclass' => 'left',  ),
93
94		  'newsfeed_showmenu'	=>	array ( 'title' => NFLAN_45, 'type'=>'method', 'data'=>false, 'class'=>'center', 'thclass'=>'center' ),
95		  'newsfeed_showmain'	=>	array ( 'title' => NFLAN_46, 'type'=>'method', 'data'=>false, 'class'=>'center', 'thclass'=>'center'),
96
97		  'options' 			=>	array ( 'title' => LAN_OPTIONS, 'type' => null, 'data' => null, 'width' => '8%', 'thclass' => 'center last', 'class' => 'center last', 'forced' => '1',  ),
98		);
99
100		protected $fieldpref = array('newsfeed_name', 'newsfeed_url', 'newsfeed_updateint', 'newsfeed_timestamp', 'newsfeed_active', 'newsfeed_showmenu', 'newsfeed_showmain');
101
102
103	//	protected $preftabs        = array('General', 'Other' );
104		protected $prefs = array(
105		);
106
107
108		public function init()
109		{
110			if($this->getAction() == 'edit' || $this->getAction() == 'create')
111			{
112				$this->fields['newsfeed_updateint']['type'] = 'number';
113			}
114			// Set drop-down values (if any).
115
116		}
117
118
119		// ------- Customize Create --------
120
121		public function beforeCreate($new_data)
122		{
123			if(isset($new_data['newsfeed_showmenu']))
124			{
125			    $new_data['newsfeed_image'] = e107::getParser()->toDB($new_data['newsfeed_image'])."::".intval($new_data['newsfeed_showmenu'])."::".intval($new_data['newsfeed_showmain']);
126			}
127
128			$new_data['newsfeed_timestamp'] = 0;
129
130			return $new_data;
131		}
132
133		public function afterCreate($new_data, $old_data, $id)
134		{
135			// do something
136			e107::getCache()->clear(NEWSFEED_LIST_CACHE_TAG);
137			e107::getCache()->clear(NEWSFEED_NEWS_CACHE_TAG);
138		}
139
140		public function onCreateError($new_data, $old_data)
141		{
142			// do something
143		}
144
145
146		// ------- Customize Update --------
147
148		public function beforeUpdate($new_data, $old_data, $id)
149		{
150			if(isset($new_data['newsfeed_showmenu']))
151			{
152			    $new_data['newsfeed_image'] = e107::getParser()->toDB($new_data['newsfeed_image'])."::".intval($new_data['newsfeed_showmenu'])."::".intval($new_data['newsfeed_showmain']);
153
154			}
155
156			$new_data['newsfeed_timestamp'] = 0; // reset so the feed data refreshes.
157
158
159			return $new_data;
160		}
161
162		public function afterUpdate($new_data, $old_data, $id)
163		{
164			// do something
165			e107::getCache()->clear(NEWSFEED_LIST_CACHE_TAG);
166			e107::getCache()->clear(NEWSFEED_NEWS_CACHE_TAG);
167		}
168
169		public function onUpdateError($new_data, $old_data, $id)
170		{
171			// do something
172		}
173
174
175	/*
176		// optional - a custom page.
177		public function customPage()
178		{
179			$text = 'Hello World!';
180			return $text;
181
182		}
183	*/
184
185}
186
187
188
189class newsfeed_form_ui extends e_admin_form_ui
190{
191
192
193	// Custom Method/Function
194	function newsfeed_active($curVal,$mode)
195	{
196		$frm = e107::getForm();
197
198		switch($mode)
199		{
200			case 'read': // List Page
201				return $curVal;
202			break;
203
204			case 'write': // Edit Page
205				return $frm->text('newsfeed_active',$curVal, 255, 'size=large');
206			break;
207
208			case 'filter':
209			case 'batch':
210				return  array();
211			break;
212		}
213	}
214
215
216	function newsfeed_image($curVal,$mode)
217	{
218		$frm = e107::getForm();
219
220		switch($mode)
221		{
222			case 'read': // List Page
223				return $curVal;
224			break;
225
226			case 'write': // Edit Page
227
228				$tmp = explode('::',$curVal);
229
230				return $frm->text('newsfeed_image',$tmp[0], 255, 'size=large');
231			break;
232
233			case 'filter':
234			case 'batch':
235				return  array();
236			break;
237		}
238	}
239
240
241	function newsfeed_timestamp($curVal,$mode)
242	{
243		$frm = e107::getForm();
244
245		switch($mode)
246		{
247			case 'read': // List Page
248				if($curVal == 0)
249				{
250					return '-';
251				}
252
253				return e107::getParser()->toDate($curVal, 'relative');
254			break;
255
256			case 'write': // Edit Page
257
258				// $tmp = explode('::',$curVal);
259
260				return  e107::getParser()->toDate($curVal, 'relative').$this->hidden('newsfeed_timestamp',0);
261			break;
262
263			case 'filter':
264			case 'batch':
265				return  array();
266			break;
267		}
268	}
269
270	function newsfeed_showmain($curVal,$mode)
271	{
272		$frm = e107::getForm();
273
274		switch($mode)
275		{
276			case 'read': // List Page
277				$data = $this->getController()->getListModel()->get('newsfeed_image');
278				list($image,$menu,$main) = explode('::',$data);
279
280				return intval($main);
281			break;
282
283			case 'write': // Edit Page
284
285				$data = $this->getController()->getModel()->get('newsfeed_image');
286				list($image,$menu,$main) = explode('::',$data);
287
288				if(empty($main))
289				{
290					$main = 10;
291				}
292
293				return $frm->number('newsfeed_showmain',$main, 3);
294			break;
295
296			case 'filter':
297			case 'batch':
298				return  array();
299			break;
300		}
301	}
302
303
304
305	function newsfeed_showmenu($curVal,$mode)
306	{
307		$frm = e107::getForm();
308
309		switch($mode)
310		{
311			case 'read': // List Page
312				$data = $this->getController()->getListModel()->get('newsfeed_image');
313				list($image,$menu,$main) = explode('::',$data);
314
315				return intval($menu);
316			break;
317
318			case 'write': // Edit Page
319				$data = $this->getController()->getModel()->get('newsfeed_image');
320				list($image,$menu,$main) = explode('::',$data);
321
322				if(empty($menu))
323				{
324					$menu = 10;
325				}
326
327				return $frm->number('newsfeed_showmenu',$menu, 3);
328			break;
329
330			case 'filter':
331			case 'batch':
332				return  array();
333			break;
334		}
335	}
336}
337
338
339new newsfeed_adminArea();
340
341require_once(e_ADMIN."auth.php");
342e107::getAdminUI()->runPage();
343
344require_once(e_ADMIN."footer.php");
345exit;
346