redirect_fields = array('status','sortby','order','page','nb'); $this->field_entries = 'blogs'; $this->title_cb = __('Blogs'); $this->loadDefaults(); $core->callBehavior('adminBlogsActionsPage',$core,$this); } protected function loadDefaults() { // We could have added a behavior here, but we want default action // to be setup first dcDefaultBlogActions::adminBlogsActionsPage($this->core,$this); } public function beginPage($breadcrumb='',$head='') { if ($this->in_plugin) { echo ''.__('Blogs').''. dcPage::jsLoad('js/_blogs_actions.js'). $head. ''. $breadcrumb; } else { dcPage::open( __('Blogs'), dcPage::jsLoad('js/_blogs_actions.js'). $head, $breadcrumb ); } echo '

'.__('Back to blogs list').'

'; } public function endPage() { dcPage::close(); } public function error(Exception $e) { $this->core->error->add($e->getMessage()); $this->beginPage(dcPage::breadcrumb( array( html::escapeHTML($this->core->blog->name) => '', __('Blogs') => $this->core->adminurl->get('admin.blogs'), __('Blogs actions') => '' )) ); $this->endPage(); } public function getCheckboxes() { $ret = ''; foreach ($this->entries as $id=>$res) { $ret .= ''. ''.form::checkbox(array($this->field_entries.'[]'),$id,true,'','').''. ''.$res['blog'].''. ''.$res['name'].''. ''; } return ''. ''. ''.$ret.'
'.__('Blog id').''.__('Blog name').'
'; } protected function fetchEntries($from) { $params=array(); if (!empty($from['blogs'])) { $params['blog_id'] = $from['blogs']; } $bl = $this->core->getBlogs($params); while ($bl->fetch()) { $this->entries[$bl->blog_id] = array( 'blog' => $bl->blog_id, 'name' => $bl->blog_name ); } $this->rs = $bl; } } class dcDefaultBlogActions { public static function adminBlogsActionsPage($core, dcBlogsActionsPage $ap) { if (!$core->auth->isSuperAdmin()) { return; } $ap->addAction( array(__('Status') => array( __('Set online') => 'online', __('Set offline') => 'offline', __('Set as removed') => 'remove' )), array('dcDefaultBlogActions','doChangeBlogStatus') ); $ap->addAction( array(__('Delete') => array( __('Delete') => 'delete')), array('dcDefaultBlogActions','doDeleteBlog') ); } public static function doChangeBlogStatus($core, dcBlogsActionsPage $ap, $post) { if (!$core->auth->isSuperAdmin()) { return; } $action = $ap->getAction(); $ids = $ap->getIDs(); if (empty($ids)) { throw new Exception(__('No blog selected')); } switch ($action) { case 'online' : $status = 1; break; case 'offline' : $status = 0; break; case 'remove' : $status = -1; break; default : $status = 1; break; } $cur = $core->con->openCursor($core->prefix.'blog'); $cur->blog_status = $status; //$cur->blog_upddt = date('Y-m-d H:i:s'); $cur->update('WHERE blog_id '.$core->con->in($ids)); dcPage::addSuccessNotice(__('Selected blogs have been successfully updated.')); $ap->redirect(true); } public static function doDeleteBlog($core, dcBlogsActionsPage $ap, $post) { if (!$core->auth->isSuperAdmin()) { return; } $ap_ids = $ap->getIDs(); if (empty($ap_ids)) { throw new Exception(__('No blog selected')); } if (!$core->auth->checkPassword($core->auth->crypt($_POST['pwd']))) { throw new Exception(__('Password verification failed')); } $ids = array(); foreach($ap_ids as $id) { if ($id == $core->blog->id) { dcPage::addWarningNotice(__('The current blog cannot be deleted.')); } else { $ids[] = $id; } } if (!empty($ids)) { # --BEHAVIOR-- adminBeforeBlogsDelete $core->callBehavior('adminBeforeBlogsDelete',$ids); foreach($ids as $id) { $core->delBlog($id); } dcPage::addSuccessNotice(sprintf( __( '%d blog has been successfully deleted', '%d blogs have been successfully deleted', count($ids) ), count($ids)) ); } $ap->redirect(false); } }