
/modules/Demo/admin_load.php Highlighted file source
Line 17: Register::adminControllers('Karmabunny\Demo', [
Line 18: 'demo_item' => 'Admin\DemoItemAdminController',
Line 19: 'demo_item_category' => 'Admin\DemoItemCategoryAdminController',
Line 20: 'word' => 'Admin\WordAdminController',
Line 21: 'word_category' => 'Admin\WordCategoryAdminController',

/modules/Demo/Controllers/Admin/DemoItemAdminController.php Highlighted file source
Line 14: namespace SproutModules\Karmabunny\Demo\Controllers\Admin;
Line 18: use Sprout\Controllers\Admin\HasCategoriesAdminController;
Line 31: class DemoItemAdminController extends HasCategoriesAdminController
Line 33: protected $controller_name = 'demo_item';
Line 63: $url = "admin/call/{$this->controller_name}/runWorker";
Line 80: * Return the sub-actions for adding; for spec {@see AdminController::renderSubActions}
Line 114: * Return the sub-actions for editing; for spec {@see AdminController::renderSubActions}

/modules/Demo/Controllers/Admin/WordAdminController.php Highlighted file source
Line 14: namespace SproutModules\Karmabunny\Demo\Controllers\Admin;
Line 18: use Sprout\Controllers\Admin\HasCategoriesAdminController;
Line 25: class WordAdminController extends HasCategoriesAdminController
Line 27: protected $controller_name = 'word';
Line 62: * Return the sub-actions for adding; for spec {@see AdminController::renderSubActions}
Line 96: * Return the sub-actions for editing; for spec {@see AdminController::renderSubActions}

/modules/HomePage/Controllers/Admin/HomePageAdminController.php Highlighted file source
Line 14: namespace SproutModules\Karmabunny\HomePage\Controllers\Admin;
Line 16: use Sprout\Controllers\Admin\ManagedAdminController;
Line 17: use Sprout\Controllers\Admin\PageAdminController;
Line 24: class HomePageAdminController extends ManagedAdminController
Line 26: protected $controller_name = 'home_page';
Line 51: * Proxies navigation to the 'page' controller.
Line 55: $pages = new PageAdminController();
Line 61: * Proxies tools to the 'page' controller.
Line 65: $ctlr = new PageAdminController();
Line 71: * Gets the name of the controller to use for the top nav

/modules/Welcome/config/routes.php Highlighted file source
Line 17: $ns = 'SproutModules\\Karmabunny\\Welcome\\Controllers\\';
Line 20: $config[''] = $ns . 'WelcomeController/redirect';
Line 23: $config['welcome/info'] = $ns . 'WelcomeController/phpInfo';
Line 26: $config['welcome/checklist'] = $ns . 'WelcomeController/checklist';
Line 27: $config['welcome/run_test/([_a-z]+)'] = $ns . 'WelcomeController/runTest/$1';
Line 28: $config['welcome/db_conf_form'] = $ns . 'WelcomeController/dbConfForm';
Line 29: $config['welcome/db_conf_test'] = $ns . 'WelcomeController/dbConfTest';
Line 30: $config['welcome/db_conf_result'] = $ns . 'WelcomeController/dbConfResult';
Line 31: $config['welcome/db_conf_database'] = $ns . 'WelcomeController/dbConfDatabase';
Line 32: $config['welcome/db_conf_hosts'] = $ns . 'WelcomeController/dbConfHosts';
Line 33: $config['welcome/db_conf_password'] = $ns . 'WelcomeController/dbConfPassword';
Line 34: $config['welcome/sync'] = $ns . 'WelcomeController/sync';
Line 35: $config['welcome/super_op_form'] = $ns . 'WelcomeController/superOperatorForm';
Line 36: $config['welcome/super_op_action'] = $ns . 'WelcomeController/superOperatorAction';
Line 37: $config['welcome/super_op_result'] = $ns . 'WelcomeController/superOperatorResult';
Line 38: $config['welcome/super_op_conf'] = $ns . 'WelcomeController/superOperatorConf';
Line 39: $config['welcome/add_sample_action'] = $ns . 'WelcomeController/addSampleAction';

/sprout/config/routes.php Highlighted file source
Line 23: * Default controller to use
Line 25: $config['_default'] = 'SproutModules\Karmabunny\HomePage\Controllers\HomePageController';
Line 28: // $config['admin/edit/.+'] = 'AdminController/edit/$1';
Line 29: $config['admin_ajax/widget_settings/([^/]+)'] = 'AdminAjaxController/widgetSettings/$1';
Line 30: $config['admin_ajax/widget_disp_conds'] = 'AdminAjaxController/widgetDispConds';
Line 31: $config['admin_ajax/widget_disp_cond_params'] = 'AdminAjaxController/widgetDispCondParams';
Line 32: $config['admin_ajax/add_addon/([0-9]+)/([^/]+)'] = 'AdminAjaxController/addAddon/$1/$2';
Line 33: $config['admin_ajax/footer_compat'] = 'AdminAjaxController/footerCompat';
Line 34: $config['admin_ajax/get_tag_suggestions/([^/]+)'] = 'AdminAjaxController/getTagSuggestions/$1';
Line 35: $config['admin_ajax/get_tag_suggestions'] = 'AdminAjaxController/getTagSuggestions';
Line 36: $config['admin_ajax/get_entrance_arguments/([^/]+)'] = 'AdminAjaxController/getEntranceArguments/$1';
Line 37: $config['admin_ajax/get_entrance_arguments'] = 'AdminAjaxController/getEntranceArguments';
Line 38: $config['admin_ajax/add_category'] = 'AdminAjaxController/addCategory';
Line 39: $config['admin_ajax/attr_editor'] = 'AdminAjaxController/attrEditor';
Line 40: $config['admin_ajax/lnk_editor'] = 'AdminAjaxController/lnkEditor';
Line 41: $config['admin_ajax/tour_complete/([-_a-zA-Z0-9]+)'] = 'AdminAjaxController/setTourCompleted/$1';
Line 42: $config['admin_ajax/richtext_import/([^/]+)'] = 'AdminAjaxController/richtextImport/$1';
Line 43: $config['admin_ajax/richtext_import_iframe'] = 'AdminAjaxController/richtextImportIframe';
Line 44: $config['admin_ajax/lnk_editor'] = 'AdminAjaxController/lnkEditor';
Line 45: $config['admin_ajax/style_guide_demo_conditions'] = 'AdminAjaxController/styleGuideDemoConditions';
Line 47: $config['admin/?'] = 'AdminController/index';
Line 48: $config['admin/login'] = 'AdminController/login';
Line 49: $config['admin/login_action'] = 'AdminController/loginAction';
Line 50: $config['admin/login-two-factor'] = 'AdminController/loginTwoFactor';
Line 51: $config['admin/login-two-factor-action'] = 'AdminController/loginTwoFactorAction';
Line 52: $config['admin/logout'] = 'AdminController/logout';
Line 53: $config['admin/set_richtext/([^/]+)'] = 'AdminController/setRichtext/$1';
Line 54: $config['admin/style_guide'] = 'AdminController/styleGuide/index';
Line 55: $config['admin/style_guide/([_a-z]+)'] = 'AdminController/styleGuide/$1';
Line 56: $config['admin/dashboard'] = 'AdminController/dashboard';
Line 57: $config['admin/close_firstrun'] = 'AdminController/closeFirstrun';
Line 58: $config['admin/intro/([^/]+)'] = 'AdminController/intro/$1';
Line 59: $config['admin/search/([^/]+)'] = 'AdminController/search/$1';
Line 60: $config['admin/contents/([^/]+)'] = 'AdminController/contents/$1';
Line 61: $config['admin/export/([^/]+)'] = 'AdminController/export/$1';
Line 62: $config['admin/export_action/([^/]+)'] = 'AdminController/exportAction/$1';
Line 63: $config['admin/import_upload/([^/]+)'] = 'AdminController/importUpload/$1';
Line 64: $config['admin/import_upload_action/([^/]+)'] = 'AdminController/importUploadAction/$1';
Line 65: $config['admin/import_options/([^/]+)'] = 'AdminController/importOptions/$1';
Line 66: $config['admin/import_action/([^/]+)'] = 'AdminController/importAction/$1';
Line 67: $config['admin/add/([^/]+)'] = 'AdminController/add/$1';
Line 68: $config['admin/add_save/([^/]+)'] = 'AdminController/addSave/$1';
Line 69: $config['admin/edit/([^/]+)/([0-9]+)'] = 'AdminController/edit/$1/$2';
Line 70: $config['admin/edit_save/([^/]+)/([0-9]+)'] = 'AdminController/editSave/$1/$2';
Line 71: $config['admin/delete/([^/]+)/([0-9]+)'] = 'AdminController/delete/$1/$2';
Line 72: $config['admin/delete_save/([^/]+)/([0-9]+)'] = 'AdminController/deleteSave/$1/$2';
Line 73: $config['admin/restore/([0-9]+)'] = 'AdminController/restore/$1';
Line 74: $config['admin/duplicate/([^/]+)/([0-9]+)'] = 'AdminController/duplicate/$1/$2';
Line 75: $config['admin/duplicate_save/([^/]+)/([0-9]+)'] = 'AdminController/duplicateSave/$1/$2';
Line 76: $config['admin/moderate'] = 'AdminController/moderate';
Line 77: $config['admin/moderate_action'] = 'AdminController/moderateAction';
Line 78: $config['admin/extra/(.+)'] = 'AdminController/extra/$1';
Line 79: $config['admin/call/([^/]+)/(.+)'] = 'AdminController/call/$1/$2';
Line 80: $config['admin/set_active_subsite'] = 'AdminController/setActiveSubsite';
Line 81: $config['admin/ajax_unlock'] = 'AdminController/ajaxUnlock';
Line 82: $config['admin/user-agent'] = 'AdminController/userAgent';
Line 83: $config['admin/heartbeat'] = 'AdminController/heartbeat';
Line 85: $config['content_subscribe/unsub/([0-9]+)/([a-z0-9]+)'] = 'Sprout\\Controllers\\ContentSubscribeController/unsub/$1/$2';
Line 86: $config['content_subscribe/unsub_action/([0-9]+)/([a-z0-9]+)'] = 'Sprout\\Controllers\\ContentSubscribeController/unsubAction/$1/$2';
Line 88: $config['dbtools/?'] = 'DbToolsController/index';
Line 89: $config['dbtools/(.+)'] = 'DbToolsController/$1';
Line 91: $config['email_share/share'] = 'Sprout\\Controllers\\EmailShareController/share';
Line 92: $config['email_share/submit'] = 'Sprout\\Controllers\\EmailShareController/submit';
Line 93: $config['email_share/thanks'] = 'Sprout\\Controllers\\EmailShareController/thanks';
Line 95: $config['page/view_by_name/([^/]+)'] = 'Sprout\\Controllers\\PageController/viewByName/$1';
Line 96: $config['page/view_by_id/([0-9]+)'] = 'Sprout\\Controllers\\PageController/viewById/$1';
Line 97: $config['page/view_specific_rev/([0-9]+)/([0-9]+(?:/[a-zA-Z0-9]+)?)'] = 'Sprout\\Controllers\\PageController/viewSpecificRev/$1/$2';
Line 98: $config['page/preview_store/([0-9]+)'] = 'Sprout\\Controllers\\PageController/previewStore/$1';
Line 99: $config['page/preview/([0-9]+)'] = 'Sprout\\Controllers\\PageController/preview/$1';
Line 100: $config['page/additional_css/([0-9]+)/([^/]+)'] = 'Sprout\\Controllers\\PageController/additionalCss/$1/$2';
Line 101: $config['page/additional_css/([0-9]+)'] = 'Sprout\\Controllers\\PageController/additionalCss/$1';
Line 102: $config['page/front_end_search/([0-9]+)/([^/]+)/([^/]+)'] = 'Sprout\\Controllers\\PageController/frontEndSearch/$1/$2/$3';
Line 103: $config['page/review/([0-9]+)'] = 'Sprout\\Controllers\\PageController/review/$1';
Line 105: $config['search(?:/(?:index)?)?'] = 'Sprout\\Controllers\\SearchController/index';
Line 107: $config['file/resize/([^/]+)/([^/]+)'] = 'Sprout\\Controllers\\FileController/resize/$1/$2';
Line 108: $config['file/redirect_resize/([^/]+)/([^/]+)'] = 'Sprout\\Controllers\\FileController/redirectResize/$1/$2';
Line 109: $config['file/play_audio/([^/]+)'] = 'Sprout\\Controllers\\FileController/playAudio/$1';
Line 110: $config['file/download/([0-9]+)(?:/([a-z_]+))?'] = 'Sprout\\Controllers\\FileController/download/$1/$2';
Line 111: $config['file/name_lookup'] = 'Sprout\\Controllers\\FileController/nameLookup';
Line 113: $config['tinymce4/image'] = 'Tinymce4Controller/image';
Line 114: $config['tinymce4/image_list/([0-9]+)'] = 'Tinymce4Controller/imageList/$1';
Line 115: $config['tinymce4/image_search'] = 'Tinymce4Controller/imageSearch';
Line 116: $config['tinymce4/image_size/([0-9]+)'] = 'Tinymce4Controller/imageSize/$1';
Line 117: $config['tinymce4/library'] = 'Tinymce4Controller/library';
Line 118: $config['tinymce4/library_search'] = 'Tinymce4Controller/librarySearch';
Line 119: $config['tinymce4/library_browse/([^/]+)'] = 'Tinymce4Controller/libraryBrowse/$1';
Line 120: $config['tinymce4/video'] = 'Tinymce4Controller/video';
Line 121: $config['tinymce4/video_list/([0-9]+)'] = 'Tinymce4Controller/videoList/$1';
Line 122: $config['tinymce4/video_search'] = 'Tinymce4Controller/videoSearch';
Line 123: $config['tinymce4/upload'] = 'Tinymce4Controller/upload';
Line 124: $config['tinymce4/gallery'] = 'Tinymce4Controller/gallery';
Line 126: $config['cron_job/run/([a-zA-Z0-9_]+)'] = 'CronJobController/run/$1';
Line 127: $config['cron_job/runJob'] = 'CronJobController/runJob';
Line 129: $config['worker_job/run/([0-9]+)/([a-zA-Z0-9]+)'] = 'WorkerJobController/run/$1/$2';
Line 131: $config['locale/get_address_fields/([^/]+)'] = 'LocaleController/getAddressFields/$1';
Line 132: $config['locale/get_address_fields_required/([^/]+)'] = 'LocaleController/getAddressFieldsRequired/$1';
Line 135: $config['robots\.txt'] = 'SeoController/robots';
Line 137: $config['robots\.txt'] = 'SeoController/robotsDeny';
Line 140: $config['seo/xmlSitemap'] = 'SeoController/xmlSitemap';
Line 142: $config['embed_video/thumb/([^/]+)/([^/]+)/([^/]+)'] = 'EmbedVideoController/thumb/$1/$2/$3';
Line 144: $config['file_upload/upload_begin'] = 'Sprout\\Controllers\\FileUploadController/uploadBegin';
Line 145: $config['file_upload/upload_chunk'] = 'Sprout\\Controllers\\FileUploadController/uploadChunk';
Line 146: $config['file_upload/upload_done'] = 'Sprout\\Controllers\\FileUploadController/uploadDone';
Line 147: $config['file_upload/upload_form'] = 'Sprout\\Controllers\\FileUploadController/uploadForm';
Line 148: $config['file_upload/upload_cancel'] = 'Sprout\\Controllers\\FileUploadController/uploadCancel';
Line 150: $config['captcha/image/([0-9]+)'] = 'Sprout\\Controllers\\CaptchaController/image/$1';
Line 151: $config['captcha/about'] = 'Sprout\\Controllers\\CaptchaController/about';
Line 153: $config['advanced_search'] = 'Sprout\\Controllers\\AdvancedSearchController/index';
Line 155: $config['result/(error|success)'] = 'Sprout\\Controllers\\ResultController/$1';

/sprout/Controllers/Admin/CategoryAdminController.php Highlighted file source
Line 14: namespace Sprout\Controllers\Admin;
Line 34: * This is a generic controller which category controllers should extend.
Line 36: abstract class CategoryAdminController extends ManagedAdminController {
Line 37: protected $controller_name;
Line 55: * Instance of the parent controller
Line 62: $base_name = str_replace('_category', '', $this->controller_name);
Line 65: $parent_class = preg_replace('/CategoryAdminController$/', 'AdminController', get_class($this));
Line 74: * Return the instance of the parent controller
Line 82: * Proxy for top nav name => the main controller class
Line 90: * Proxy for navigation => the main controller class
Line 98: * Proxy for tools => the main controller class
Line 141: $view->controller_name = $this->controller_name;
Line 217: $view->controller_name = $this->controller_name;
Line 248: Url::redirect('admin/edit/' . $this->controller_name . '/' . $item_id);
Line 296: $main_controller = str_replace('_category', '', $this->controller_name);
Line 297: $main_table = Inflector::plural($main_controller);
Line 306: INNER JOIN ~{$joiner_table} AS joiner ON joiner.{$main_controller}_id = main.id
Line 311: $view->controller_name = $this->controller_name;
Line 337: Url::redirect('admin/delete/' . $this->controller_name . '/' . $id);
Line 340: $main_controller = str_replace('_category', '', $this->controller_name);
Line 341: $main_table = Inflector::plural($main_controller);
Line 352: INNER JOIN ~{$joiner_table} AS joiner ON joiner.{$main_controller}_id = main.id
Line 383: if (! AdminPerms::controllerAccess($this->parent_inst->getControllerName(), 'reorder')) {
Line 387: $item_name = str_replace('_category', '', $this->controller_name);
Line 421: $view->controller_name = $this->controller_name;
Line 439: if (! AdminPerms::controllerAccess($this->parent_inst->getControllerName(), 'reorder')) {
Line 441: Url::redirect('admin/contents/' . $this->controller_name);
Line 444: $item_name = str_replace('_category', '', $this->controller_name);
Line 469: if (! AdminPerms::controllerAccess($this->parent_inst->getControllerName(), 'categories')) {
Line 483: $view->action = 'admin/call/' . $this->controller_name . '/reorderCategoriesSave';
Line 498: if (! AdminPerms::controllerAccess($this->parent_inst->getControllerName(), 'categories')) {
Line 500: Url::redirect('admin/contents/' . $this->controller_name);
Line 513: $item_name = str_replace('_category', '', $this->controller_name);

/sprout/Controllers/Admin/ContentSubscriptionAdminController.php Highlighted file source
Line 13: namespace Sprout\Controllers\Admin;
Line 24: class ContentSubscriptionAdminController extends ManagedAdminController
Line 26: protected $controller_name = 'content_subscription';
Line 60: * @param anything $unused Not used in this controller, but used by has_categories
Line 77: $itemlist->addAction('Duplicate', "SITE/admin/duplicate/{$this->controller_name}/%%", 'button-grey icon-before icon-add');
Line 80: $itemlist->addAction('Delete', "SITE/admin/delete/{$this->controller_name}/%%", 'button button-red icon-before icon-delete');
Line 97: $outer->controller_name = $this->controller_name;

/sprout/Controllers/Admin/FileAdminController.php Highlighted file source
Line 14: namespace Sprout\Controllers\Admin;
Line 60: class FileAdminController extends HasCategoriesAdminController implements FrontEndSearch
Line 62: protected $controller_name = 'file';
Line 514: // The file upload controller has a perfect implementation of this, so just use that
Line 515: $ctlr = new \Sprout\Controllers\FileUploadController();
Line 573: if (! AdminPerms::controllerAccess('file', 'add')) {
Line 652: if (!AdminPerms::controllerAccess('file', 'categories')) {
Line 740: * Return the sub-actions for editing; for spec {@see AdminController::renderSubActions}
Line 748: 'url' => 'admin/extra/' . $this->controller_name . '/find_usage/' . $item_id,
Line 998: * They are removed later, when the deletion log is cleared; see {@see ActionLogAdminController::cronCleanup}.
Line 1283: $view->controller_name = $this->controller_name;
Line 1367: if (! AdminPerms::controllerAccess('file', 'add')) {
Line 1370: if (! AdminPerms::controllerAccess('file', 'contents')) {
Line 1373: $view->cat_create = AdminPerms::controllerAccess('file', 'categories');
Line 1384: if (! AdminPerms::controllerAccess('file', 'contents')) {
Line 1565: $cont = new \Sprout\Controllers\FileController();

/sprout/Controllers/Admin/HasCategoriesAdminController.php Highlighted file source
Line 14: namespace Sprout\Controllers\Admin;
Line 39: * An abstract class for controllers of things which have categories.
Line 41: abstract class HasCategoriesAdminController extends ManagedAdminController {
Line 42: protected $controller_name;
Line 191: $view->controller_name = $this->controller_name;
Line 218: $tools['reorder'] = "<li class=\"reorder\"><a href=\"admin/extra/{$this->controller_name}_category/reorder_categories\">Reorder Categories</a></li>";
Line 259: * Returns the main list of records for this controller
Line 334: $_GET['main_mode'] = @$_SESSION['admin'][$this->controller_name]['main_mode'];
Line 336: $_SESSION['admin'][$this->controller_name]['main_mode'] = $_GET['main_mode'];
Line 414: $itemlist->addAction('edit', "SITE/admin/edit/{$this->controller_name}/%%");
Line 419: $itemlist->addAction('Duplicate', "SITE/admin/duplicate/{$this->controller_name}/%%", 'button-grey icon-before icon-add');
Line 422: $itemlist->addAction('Delete', "SITE/admin/delete/{$this->controller_name}/%%", 'button button-red icon-before icon-delete');
Line 439: $outer->controller_name = $this->controller_name;
Line 543: $view = new View("{$view_dir}/admin/{$this->controller_name}_add");
Line 546: $view->controller_name = $this->controller_name;
Line 612: $view = new View("{$view_dir}/admin/{$this->controller_name}_edit");
Line 627: $view->controller_name = $this->controller_name;
Line 668: // Clobber duplication fields with any defaults defined in controller
Line 692: WHERE {$this->controller_name}_id = ?";
Line 708: $view = new View("{$view_dir}/admin/{$this->controller_name}_edit");
Line 710: $view->controller_name = $this->controller_name;
Line 764: * Updates the category table for this controller (so for articles, the updated table will be articles_cat_join)
Line 780: $item_column = $this->controller_name . '_id';
Line 808: $this->logAddCategory(Inflector::plural($this->controller_name), $item_id, $cat_id);
Line 818: $this->logDeleteCategory(Inflector::plural($this->controller_name), $item_id, $cat_id);
Line 831: if (! AdminPerms::controllerAccess($this->getControllerName(), 'edit')) {
Line 837: Url::redirect('admin/contents/' . $this->controller_name);
Line 844: $view->controller_name = $this->controller_name;
Line 878: if (! AdminPerms::controllerAccess($this->getControllerName(), 'edit')) {
Line 880: Url::redirect('admin/contents/' . $this->controller_name);
Line 885: Url::redirect('admin/contents/' . $this->controller_name);
Line 890: Url::redirect('admin/extra/' . $this->controller_name . '/multi_categorise' . '?' . http_build_query($_POST));
Line 901: Url::redirect('admin/contents/' . $this->controller_name);
Line 920: Url::redirect('admin/contents/' . $this->controller_name);

/sprout/Controllers/Admin/ListAdminController.php Highlighted file source
Line 14: namespace Sprout\Controllers\Admin;
Line 28: * Any controller which is essentially a short list of items, which are not substantial enough
Line 31: * Required fields for a list controller table:
Line 36: abstract class ListAdminController extends ManagedAdminController {
Line 57: $view->controller_name = $this->controller_name;
Line 80: $items[] = "<li class=\"reorder\"><a href=\"admin/call/{$this->controller_name}/reorder\" onclick=\"$.facebox({'ajax':this.href}); return false;\">Reorder</a></li>";
Line 125: $view->controller_name = $this->controller_name;
Line 155: Url::redirect("admin/intro/" . $this->controller_name);

/sprout/Controllers/Admin/ManagedAdminController.php Highlighted file source
Line 14: namespace Sprout\Controllers\Admin;
Line 19: use Sprout\Controllers\Controller;
Line 49: * This is a generic controller which all controllers which are managed in the admin area should extend.
Line 51: * Required fields for a managed controller table:
Line 57: abstract class ManagedAdminController extends Controller {
Line 59: * This is the name of the controller - should match the class name, but without the '_Controller' bit.
Line 61: protected $controller_name;
Line 64: * This is the friendly name of the controller. In 99% of cases, should be the plural form of the controller name
Line 74: * This is the name of the table to get data from. Will be automatically deducted from the controller name if not specified
Line 153: /** Should this controller log add/edit/delete actions? */
Line 183: if ($this->controller_name == '') throw new Exception ('Managed controller without a defined name!');
Line 184: if ($this->friendly_name == '') throw new Exception ('Managed controller without a defined friendly name!');
Line 217: * Most controllers which need a custom refine bar should call this before adding their own search widgets
Line 236: * Initialises the table name if it isn't already set, using the plural of the shorthand controller name
Line 242: $this->table_name = Inflector::plural($this->controller_name);
Line 247: * Returns the defined controller name.
Line 249: final public function getControllerName() {
Line 250: return $this->controller_name;
Line 254: * Returns the defined controller friendly name
Line 261: * Returns the defined controller navigation name
Line 275: * Gets the name of the controller to use for the top nav
Line 279: return $this->controller_name;
Line 298: * Returns the intro HTML for this controller.
Line 302: Url::redirect('admin/contents/' . $this->controller_name);
Line 378: $export->controller_name = $this->controller_name;
Line 545: $view = new View("sprout/admin/{$this->controller_name}_import");
Line 549: $view->controller_name = $this->controller_name;
Line 886: $view->controller_name = $this->controller_name;
Line 915: // Determine if per-record permissions used for this controller
Line 918: $restrict = PerRecordPerms::controllerRestricted($this);
Line 924: array_unshift($params, $this->controller_name);
Line 926: ON rec_perm.controller = ? AND item.id = rec_perm.item_id";
Line 945: * Return HTML which represents a list of records for this controller
Line 992: $_GET['main_mode'] = @$_SESSION['admin'][$this->controller_name]['main_mode'];
Line 994: $_SESSION['admin'][$this->controller_name]['main_mode'] = $_GET['main_mode'];
Line 1047: * @param anything $unused Not used in this controller, but used by has_categories
Line 1059: * @param anything $unused Not used in this controller, but used by has_categories
Line 1072: $itemlist->addAction('edit', "SITE/admin/edit/{$this->controller_name}/%%");
Line 1077: $itemlist->addAction('Duplicate', "SITE/admin/duplicate/{$this->controller_name}/%%", 'button-grey icon-before icon-add');
Line 1080: $itemlist->addAction('Delete', "SITE/admin/delete/{$this->controller_name}/%%", 'button button-red icon-before icon-delete');
Line 1097: $outer->controller_name = $this->controller_name;
Line 1218: $view = new View("{$view_dir}/admin/{$this->controller_name}_add");
Line 1221: $view->controller_name = $this->controller_name;
Line 1304: * These are rendered into HTML using {@see AdminController::renderSubActions}
Line 1391: $view = new View("{$view_dir}/admin/{$this->controller_name}_edit");
Line 1406: $view->controller_name = $this->controller_name;
Line 1448: * These are rendered into HTML using {@see AdminController::renderSubActions}
Line 1462: 'url' => 'admin/delete/' . $this->controller_name . '/' . $item_id,
Line 1526: * These are rendered into HTML using {@see AdminController::renderSubActions}
Line 1549: // Clobber duplication fields with any defaults defined in controller
Line 1579: $view = new View("{$view_dir}/admin/{$this->controller_name}_edit");
Line 1581: $view->controller_name = $this->controller_name;
Line 1633: $view = new View("{$this->getModulePath()}/admin/{$this->controller_name}_delete");
Line 1637: $view->controller_name = $this->controller_name;
Line 1647: 'content' => "Invalid id specified - {$this->controller_name} does not exist",
Line 1672: * These are rendered into HTML using {@see AdminController::renderSubActions}
Line 1681: 'url' => 'admin/edit/' . $this->controller_name . '/' . $item_id,
Line 1738: * Return the navigation for this controller
Line 1758: $tools['import'] = "<li class=\"import\"><a href=\"SITE/admin/import_upload/{$this->controller_name}\">Import {$friendly}</a></li>";
Line 1759: $tools['export'] = "<li class=\"export\"><a href=\"SITE/admin/export/{$this->controller_name}\">Export {$friendly}</a></li>";
Line 1791: if (! AdminPerms::controllerAccess($this->getControllerName(), 'delete')) {
Line 1797: Url::redirect('admin/contents/' . $this->controller_name);
Line 1801: $view->controller_name = $this->controller_name;
Line 1815: if (! AdminPerms::controllerAccess($this->getControllerName(), 'delete')) {
Line 1817: Url::redirect('admin/contents/' . $this->controller_name);
Line 1822: Url::redirect('admin/contents/' . $this->controller_name);
Line 1850: Url::redirect('admin/contents/' . $this->controller_name);
Line 1861: if (! AdminPerms::controllerAccess($this->getControllerName(), 'edit')) {

/sprout/Controllers/Admin/OperatorCategoryAdminController.php Highlighted file source
Line 14: namespace Sprout\Controllers\Admin;
Line 29: class OperatorCategoryAdminController extends CategoryAdminController
Line 31: protected $controller_name = 'operator_category';
Line 63: $controllers = Register::getAdminControllers();
Line 65: // Remove category controllers, use controller friendly name
Line 66: foreach ($controllers as $shorthand => $ctlr_class) {
Line 68: if ($reflect->isSubclassOf('Sprout\\Controllers\\Admin\\CategoryAdminController')) {
Line 69: unset($controllers[$shorthand]);
Line 73: $controllers[$shorthand] = $props['friendly_name'];
Line 76: asort($controllers);
Line 77: $view->controllers = $controllers;
Line 81: $view->data['multiedit_permissions'] = MultiEdit::load('operatorcategory_permissions', ['operatorcategory_id' => $item_id], 'controller');
Line 176: $update_fields['controller'] = $data['controller'];

/sprout/Controllers/Admin/PageAdminController.php Highlighted file source
Line 14: namespace Sprout\Controllers\Admin;
Line 21: use Sprout\Controllers\PageController;
Line 77: class PageAdminController extends TreeAdminController
Line 79: protected $controller_name = 'page';
Line 157: if (!empty($_SESSION['admin'][$this->controller_name . '_nav'])) {
Line 158: $nodes_string = "'" . implode ("', '", $_SESSION['admin'][$this->controller_name . '_nav']) . "'";
Line 166: $view->controller_name = $this->controller_name;
Line 183: * Return the sub-actions for adding; for spec {@see AdminController::renderSubActions}
Line 246: // Controller list for entrance dropdown
Line 247: $front_end_controllers = Register::getFrontEndControllers();
Line 248: asort($front_end_controllers);
Line 251: $controller_arguments = [];
Line 252: if (!empty($data['controller_entrance'])) {
Line 253: $inst = Sprout::instance($data['controller_entrance']);
Line 255: $controller_arguments = $inst->_getEntranceArguments();
Line 256: if (empty($controller_arguments)) {
Line 257: $controller_arguments = ['' => '- Nothing available -'];
Line 275: $view->front_end_controllers = $front_end_controllers;
Line 276: $view->controller_arguments = $controller_arguments;
Line 319: $valid->required(['controller_entrance']);
Line 320: $valid->check('controller_entrance', 'Validity::length', 1, 200);
Line 321: if (!self::checkControllerEntrance($_POST['controller_entrance'], $page_id)) {
Line 322: $valid->addFieldError('controller_entrance', 'Invalid value');
Line 325: // Tell core AdminController the right URL to redirect to upon validation error
Line 394: $update_fields['controller_entrance'] = $_POST['controller_entrance'];
Line 395: $update_fields['controller_argument'] = $_POST['controller_argument'];
Line 444: return 'admin/edit/' . $this->controller_name . '/' . $page_id . '?suppress=true';
Line 1072: // Controller list for entrance dropdown
Line 1073: $front_end_controllers = Register::getFrontEndControllers();
Line 1074: asort($front_end_controllers);
Line 1077: $controller_arguments = array();
Line 1078: if ($data['controller_entrance']) {
Line 1079: $inst = Sprout::instance($data['controller_entrance']);
Line 1081: $controller_arguments = $inst->_getEntranceArguments();
Line 1082: if (empty($controller_arguments)) {
Line 1083: $controller_arguments = array('' => '- Nothing available -');
Line 1148: $view->front_end_controllers = $front_end_controllers;
Line 1149: $view->controller_arguments = $controller_arguments;
Line 1279: $q = "SELECT page.*, rev.type, rev.controller_entrance, rev.controller_argument, rev.redirect
Line 1412: if ($orig_page['controller_entrance'] != $_POST['controller_entrance']) $revision_changed = true;
Line 1413: if ($orig_page['controller_argument'] != $_POST['controller_argument']) $revision_changed = true;
Line 1424: if (empty($_POST['controller_argument'])) {
Line 1425: $_POST['controller_argument'] = '';
Line 1476: $valid->required(['controller_entrance', 'controller_argument']);
Line 1477: $valid->check('controller_entrance', 'Validity::length', 1, 200);
Line 1478: if (!self::checkControllerEntrance($_POST['controller_entrance'], $page_id)) {
Line 1479: $valid->addFieldError('controller_entrance', 'Invalid value');
Line 1599: $update_fields['controller_entrance'] = $_POST['controller_entrance'];
Line 1600: $update_fields['controller_argument'] = $_POST['controller_argument'];
Line 1798: $view->controller_name = $this->controller_name;
Line 2031: $list->addAction('edit', "SITE/admin/edit/{$this->controller_name}/%%");
Line 2063: * Returns the intro HTML for this controller.
Line 2064: * Looks for a view named "admin/<controller-name>_intro", and loads it if found.
Line 2070: $intro->controller_name = $this->controller_name;
Line 2087: $itemlist->addAction('edit', "SITE/admin/edit/{$this->controller_name}/%%");
Line 2194: * Validate given controller implements FrontEndEntrance
Line 2196: * @param string $controller Controller class
Line 2200: private static function checkControllerEntrance($controller, $page_id)
Line 2204: $front_end_controllers = Register::getFrontEndControllers();
Line 2205: if (empty($front_end_controllers[$controller])) return false;
Line 2207: $inst = Sprout::instance($controller);
Line 2290: if ($_SESSION['admin'][$this->controller_name . '_nav'] == null) $_SESSION['admin'][$this->controller_name . '_nav'] = array();
Line 2291: if ($_POST['dir'] != '/' and !in_array ($_POST['dir'], $_SESSION['admin'][$this->controller_name . '_nav'])) {
Line 2292: $_SESSION['admin'][$this->controller_name . '_nav'][] = $_POST['dir'];
Line 2304: if (empty($_SESSION['admin'][$this->controller_name . '_nav'])) return;
Line 2306: $index = array_search ($_POST['dir'], $_SESSION['admin'][$this->controller_name . '_nav']);
Line 2307: unset ($_SESSION['admin'][$this->controller_name . '_nav'][$index]);
Line 2336: $view->controller_name = $this->controller_name;
Line 2465: $items[] = "<li class=\"action-log\"><a href=\"SITE/admin/search/{$this->controller_name}\">Search pages</a></li>";
Line 2473: $items[] = "<li class=\"reorder\"><a href=\"admin/call/{$this->controller_name}/reorderTop\" onclick=\"$.facebox({'ajax':this.href}); return false;\">Reorder top-level</a></li>";
Line 2765: $ctlr = new PageController();

/sprout/Controllers/Admin/PerRecordPermissionAdminController.php Highlighted file source
Line 14: namespace Sprout\Controllers\Admin;
Line 35: * Manages which controllers have per-record permissions enabled
Line 37: class PerRecordPermissionAdminController extends NoRecordsAdminController
Line 39: protected $controller_name = 'per_record_permission';
Line 41: protected $table_name = 'per_record_controllers';
Line 45: * Gets the list of controllers which can have per-category permissions set
Line 49: protected function getControllerList()
Line 51: $controllers = Register::getAdminControllers();
Line 53: unset($controllers['page']); // already has tree-based permissions system
Line 54: unset($controllers['file']); // quite complex to implement with file selectors
Line 59: unset($controllers['form_submission']);
Line 61: foreach ($controllers as $shorthand => $ctlr_class) {
Line 65: // Ignore category controllers
Line 66: if ($reflect->isSubclassOf('Sprout\\Controllers\\Admin\\CategoryAdminController')) {
Line 67: unset($controllers[$shorthand]);
Line 71: // Ignore controllers without records
Line 72: if ($reflect->isSubclassOf('Sprout\\Controllers\\Admin\\NoRecordsAdminController')) {
Line 73: unset($controllers[$shorthand]);
Line 77: $controllers[$shorthand] = $props['friendly_name'];
Line 79: asort($controllers);
Line 81: return $controllers;
Line 86: * Return the navigation for this controller
Line 93: $out .= "<li><a href=\"admin/contents/{$this->controller_name}\">Configure tabs</a></li>";
Line 102: * Generate a form where operators can specify which controllers should have per-record permissions enabled
Line 104: * This is instead of the normal behaviour: HTML which represents a list of records for a controller
Line 106: * @return array Contains elements 'title' and 'content' as per {@see ManagedAdminController::_getContents}
Line 112: $controllers = $this->getControllerList();
Line 115: $view->enabled = Pdb::q('SELECT name FROM ~per_record_controllers WHERE active = 1', [], 'col');
Line 116: $view->controllers = $controllers;
Line 126: * Save which controllers should have per-record permissions enabled
Line 133: $controllers = @$_POST['controllers'];
Line 134: if (!is_array($controllers)) $controllers = [];
Line 136: if (count($controllers) == 0) {
Line 137: Pdb::update('per_record_controllers', ['active' => 0], [1]);
Line 141: $q = "UPDATE ~per_record_controllers SET active = 0 WHERE id = ?";
Line 144: $q = "UPDATE ~per_record_controllers SET active = 1 WHERE id = ?";
Line 147: $q = "INSERT INTO ~per_record_controllers (name, active) VALUES (?, 1)";
Line 151: FROM ~per_record_controllers";
Line 155: if (in_array($row['name'], $controllers)) {
Line 158: $this->logEdit('per_record_controllers', $row['id'], $row);
Line 163: $this->logEdit('per_record_controllers', $row['id'], $row);
Line 170: foreach ($controllers as $controller) {
Line 171: if (isset($extant[$controller])) continue;
Line 173: Pdb::execute($insert, [$controller], 'null');
Line 175: $this->logAdd('per_record_controllers', $id);
Line 183: Url::redirect('admin/contents/' . $this->controller_name);
Line 189: $controllers = $this->getControllerList();
Line 191: $q = "SELECT name FROM ~per_record_controllers WHERE active = 1 ORDER BY name";
Line 192: $active_controllers = Pdb::q($q, [], 'col');
Line 194: foreach ($controllers as $controller => $label) {
Line 195: if (!in_array($controller, $active_controllers)) {
Line 196: unset($controllers[$controller]);
Line 200: $out = '<form method="post" action="admin/call/' . $this->controller_name . '/resetSave">';
Line 204: $out .= Form::dropdown('controller', [], $controllers);
Line 237: $url = 'admin/extra/' . $this->controller_name . '/reset';
Line 240: if (empty($_POST['controller'])) {
Line 248: $ctlr = Admin::getController($_POST['controller']);

/sprout/Controllers/Admin/TreeAdminController.php Highlighted file source
Line 14: namespace Sprout\Controllers\Admin;
Line 31: * Any controller which is essentially a tree-based structure of nodes and sub-nodes.
Line 33: * Required fields for a tree controller table:
Line 42: abstract class TreeAdminController extends ManagedAdminController {
Line 61: if (!empty($_SESSION['admin'][$this->controller_name . '_nav'])) {
Line 62: $nodes_string = "'" . implode ("', '", $_SESSION['admin'][$this->controller_name . '_nav']) . "'";
Line 67: $view->controller_name = $this->controller_name;
Line 83: $items[] = "<li class=\"reorder\"><a href=\"admin/call/{$this->controller_name}/reorderTop\" onclick=\"$.facebox({'ajax':this.href}); return false;\">Reorder top-level</a></li>";
Line 86: $items[] = "<li class=\"config\"><a href=\"admin/extra/{$this->controller_name}/organise\">Organise tree</a></li>";
Line 124: $view = new View("{$this->getModulePath()}/admin/{$this->controller_name}_delete");
Line 128: $view->controller_name = $this->controller_name;
Line 138: 'content' => "Invalid id specified - {$this->controller_name} does not exist",
Line 216: if (! AdminPerms::controllerAccess($this->getControllerName(), 'reorder')) {
Line 258: $view->controller_name = $this->controller_name;
Line 271: if (! AdminPerms::controllerAccess($this->getControllerName(), 'reorder')) {
Line 293: $view->controller_name = $this->controller_name;
Line 307: if (! AdminPerms::controllerAccess($this->getControllerName(), 'reorder')) {
Line 309: Url::redirect('admin/contents/' . $this->getControllerName());
Line 328: Url::redirect("admin/intro/" . $this->controller_name);
Line 361: $view->controller_name = $this->controller_name;
Line 381: Url::redirect('admin/extra/' . $this->controller_name . '/organise');
Line 424: Url::redirect('admin/extra/' . $this->controller_name . '/organise');
Line 482: echo "+ <a href=\"SITE/admin/add/{$this->controller_name}?parent_id={$parent_id}\">Add Child</a>";
Line 484: echo "↕ <a href=\"SITE/{$this->controller_name}/reorder/{$parent_id}\" onclick=\"$.facebox({'ajax':this.href}); return false;\">Re-order</a>";
Line 488: if (empty($_SESSION['admin'][$this->controller_name . '_nav'])) {
Line 489: $_SESSION['admin'][$this->controller_name . '_nav'] = array();
Line 491: if ($_POST['dir'] != '/' and !in_array ($_POST['dir'], $_SESSION['admin'][$this->controller_name . '_nav'])) {
Line 492: $_SESSION['admin'][$this->controller_name . '_nav'][] = $_POST['dir'];
Line 502: if (empty($_SESSION['admin'][$this->controller_name . '_nav'])) return;
Line 504: $index = array_search ($_POST['dir'], $_SESSION['admin'][$this->controller_name . '_nav']);
Line 505: unset ($_SESSION['admin'][$this->controller_name . '_nav'][$index]);

/sprout/Controllers/AdminController.php Highlighted file source
Line 14: namespace Sprout\Controllers;
Line 24: use Sprout\Controllers\Admin\CategoryAdminController;
Line 25: use Sprout\Controllers\Admin\ManagedAdminController;
Line 26: use Sprout\Controllers\Admin\PageAdminController;
Line 66: * This delegates processing to controllers registered with {@see Register::adminControllers}
Line 68: class AdminController extends Controller
Line 106: Register::coreContentControllers();
Line 375: $ctlr = $this->getController('Sprout\Controllers\Admin\PageAdminController');
Line 378: $view->controller_name = '_style_guide';
Line 401: $ctlr = $this->getController('Sprout\Controllers\Admin\PageAdminController');
Line 409: $view->controller_name = '_dashboard';
Line 445: $ctlr = $this->getController($type);
Line 480: $ctlr = $this->getController($type);
Line 517: $ctlr = $this->getController($type);
Line 552: $ctlr = $this->getController($type);
Line 584: $ctlr = $this->getController($type);
Line 620: $ctlr = $this->getController($type);
Line 726: $ctlr = $this->getController($type);
Line 768: $ctlr = $this->getController($type);
Line 792: * @param ManagedAdminController $ctlr A controller to show the navigation of.
Line 794: private function error($message, ManagedAdminController $ctlr = null)
Line 817: * Check access for a given controller/access flag combo
Line 820: * @param ManagedAdminController $ctlr A controller to check
Line 825: private function checkAccess(ManagedAdminController $ctlr, $access_flag, $action)
Line 829: if ($ctlr instanceof CategoryAdminController) {
Line 834: if (AdminPerms::controllerAccess($ctlr->getControllerName(), $access_flag)) {
Line 867: * @param ManagedAdminController $ctlr The controller which manages the table containing the record
Line 871: function checkRecordAccess(ManagedAdminController $ctlr, $item_id)
Line 873: $restrict = PerRecordPerms::controllerRestricted($ctlr);
Line 879: $params[] = $ctlr->getControllerName();
Line 884: WHERE controller = ? AND item_id = ?";
Line 896: * @param ManagedAdminController $ctlr
Line 898: private function cleanupCommonPostData(ManagedAdminController $ctlr)
Line 966: * @param string ManagedAdminController $ctlr The controller to check permissions for
Line 970: protected function perRecordPermissionsFields(ManagedAdminController $ctlr, $item_id)
Line 972: if (!PerRecordPerms::controllerRestricted($ctlr)) {
Line 980: WHERE controller = ? AND item_id = ?";
Line 981: $access = Pdb::q($q, [$ctlr->getControllerName(), $item_id], 'arr');
Line 1062: $ctlr = $this->getController($type);
Line 1088: echo '<form action="admin/add_save/' . Enc::html($ctlr->getControllerName()) . '" method="post">';
Line 1108: $content = '<form action="admin/add_save/' . Enc::html($ctlr->getControllerName()) . '" method="post" id="edit-form" class="-clearfix">';
Line 1179: $ctlr = $this->getController($type);
Line 1250: $ctlr = $this->getController($type);
Line 1286: $content = '<form action="admin/edit_save/' . Enc::html($ctlr->getControllerName()) . '/' . $id;
Line 1366: $ctlr = $this->getController($type);
Line 1419: * @param string $type Shorthand controller name; see {@see Register::adminControllers}
Line 1426: $ctlr = $this->getController($type);
Line 1451: $content = '<form action="admin/delete_save/' . Enc::html($ctlr->getControllerName()) . '/' . $id . '" method="post" id="edit-form">';
Line 1494: $ctlr = $this->getController($type);
Line 1558: $ctlr = $this->getController($type);
Line 1564: $this->error("Duplication is not enabled for this controller");
Line 1602: $content = '<form action="admin/duplicate_save/' . Enc::html($ctlr->getControllerName()) . '/' . $id . '" method="post" id="edit-form">';
Line 1668: $ctlr = $this->getController($type);
Line 1756: $this->setNavigation($view, new PageAdminController());
Line 1858: * Calls any 'extra' commands that might be provided by the controller
Line 1869: * class BookingAdminController extends ManagedAdminController {
Line 1876: * @param string $type The class name of the method to call (must extend ManagedAdminController)
Line 1891: $ctlr = $this->getController($class);
Line 1930: * Directly calls a method provided by an admin controller
Line 1941: $ctlr = $this->getController($class);
Line 1942: if (!$ctlr or !($ctlr instanceof ManagedAdminController)) {
Line 1943: throw new InvalidArgumentException('Controller "' . $class . '" does not exist');
Line 1990: * Sets up the sidebar navigation for a view to show the navigation for a specific controller.
Line 1993: * @param Controller $ctlr The controller to use for navigation (and searching if supported).
Line 1995: private function setNavigation(View $view, Controller $ctlr)
Line 2002: $view->controller_name = $ctlr->getControllerName();
Line 2003: $view->controller_navigation_name = $ctlr->getNavigationName();
Line 2041: * Returns an instance of a controller class for a given type
Line 2043: * @deprecated This function is now just an alias for {@see Admin::getController}
Line 2045: * e.g. 'Sprout\Controllers\AwesomeController' or 'awesome'
Line 2046: * @return Controller
Line 2049: * and get SproutModules\AwesomeDeveloper\Controllers\ThingyController
Line 2051: private function getController($type)
Line 2053: return Admin::getController($type);
Line 2060: * @param string $type Admin controller slug, e.g. 'page'
Line 2101: * Unlocks lock for a given record/controller, all records for a controller, or all locks
Line 2138: $q = "SELECT id, record_id, record_table, controller, data
Line 2188: $ctlr_class = $main_record['controller'];
Line 2191: Url::redirect('admin/edit/' . Enc::url($ctlr->getControllerName()) . '/' . $main_record['record_id']);

/sprout/Controllers/AdvancedSearchController.php Highlighted file source
Line 14: namespace Sprout\Controllers;
Line 36: class AdvancedSearchController extends Controller implements FrontEndEntrance
Line 49: * Acts as the entrance-point of the controller.
Line 58: * Return an array of valid arguments to the entrance of this controller.
Line 88: $page_view->controller_name = 'user';
Line 213: // Iterate through results, passing the rendering task off to the appropriate controller
Line 216: $ctlr = $handler_inst[$row['controller_class']];

/sprout/Controllers/BaseController.php Highlighted file source
Line 17: namespace Sprout\Controllers;
Line 26: * This is a true base controller.
Line 30: * @package Sprout\Controllers
Line 32: abstract class BaseController
Line 35: // Allow all controllers to run in production by default
Line 45: // Set the instance to the first controller loaded
Line 88: * Gets the relative path to the module the controller lives in, or sprout itself
Line 104: * Return the class name for this controller, expressed in CSS style, i.e. with dashes
Line 106: * Example: When called from BlogPostController --> 'blog-post-controller'

/sprout/Controllers/Controller.php Highlighted file source
Line 16: namespace Sprout\Controllers;
Line 21: use Sprout\Controllers\Admin\ManagedAdminController;
Line 37: * Kohana Controller class. The controller class must be extended to work
Line 40: abstract class Controller extends BaseController
Line 43: /** Should this controller log add/edit/delete actions? */
Line 51: * e.g. {@see Controller::logAdd}, {@see Controller::logEdit}
Line 123: (record_table, record_id, type, modified_editor, ip_address, user_agent, controller,
Line 126: (:record_table, :record_id, :type, :modified_editor, :ip_address, :user_agent, :controller,
Line 138: $insert_data['controller'] = get_class($this);
Line 155: * @return array|bool False if not using logging for this controller, else the record row
Line 170: * Logs an add action. This is a wrapper for {@see Controller::logAction}
Line 183: * Logs the adding of a record to a category. This is a wrapper for {@see Controller::logAction}
Line 197: * Logs an edit action. This is a wrapper for {@see Controller::logAction}
Line 211: * Logs a delete action. This is a wrapper for {@see Controller::logAction}
Line 229: * Logs the removal of a record from a category. This is a wrapper for {@see Controller::logAction}
Line 321: if ($this instanceof ManagedAdminController) {
Line 323: $conds = ['controller' => $this->getControllerName(), 'item_id' => $record_id];
Line 348: if ($this instanceof ManagedAdminController) {
Line 349: $where = ['controller' => $this->getControllerName(), 'item_id' => $record_id];
Line 361: * Loads a config file for a JsonForm associated with this controller
Line 387: * Loads a JSON config file for an automated edit-type form for this controller
Line 395: $class = preg_replace('/Controller$/', '', $class);
Line 491: if ($this instanceof ManagedAdminController) {
Line 711: } // End Controller Class

/sprout/Controllers/PageController.php Highlighted file source
Line 14: namespace Sprout\Controllers;
Line 54: class PageController extends Controller implements FrontEndSearch
Line 118: revs.controller_entrance, revs.controller_argument
Line 144: // Front-end controller entrance
Line 146: $page['controller_entrance'],
Line 147: ['Sprout\\Controllers\\Controller', 'Sprout\\Helpers\\FrontEndEntrance']
Line 153: Router::$controller = $page['controller_entrance'];
Line 155: $inst->entrance($page['controller_argument']);
Line 232: * see e.g. {@see PageController::viewById} or {@see PageController::viewSpecificRev}
Line 309: $page_view->controller_name = $this->getCssClassName();

/sprout/core/Kohana.php Highlighted file source
Line 16: use Sprout\Controllers\BaseController;
Line 39: // The singleton instance of the controller
Line 177: * Loads the controller and initializes it. Runs the pre_controller,
Line 178: * post_controller_constructor, and post_controller events. Triggers
Line 179: * a system.404 event when the route cannot be mapped to a controller.
Line 181: * @return object instance of controller
Line 188: // Start validation of the controller
Line 189: $class = new ReflectionClass(Router::$controller);
Line 191: // Controller does not exist
Line 197: // Controller is not allowed to run in production
Line 214: // Run system.pre_controller
Line 215: Event::run('system.pre_controller');
Line 217: // Create a new controller instance
Line 218: $controller = $class->newInstance();
Line 220: if (!($controller instanceof BaseController)) {
Line 221: throw new Exception("Class doesn't extend BaseController: " . get_class($controller));
Line 224: // Controller constructor has been executed
Line 225: Event::run('system.post_controller_constructor');
Line 229: // Load the controller method
Line 242: throw new ReflectionException('protected controller method');
Line 249: $controller->_run(Router::$method, Router::$arguments);
Line 251: // Controller method has been executed
Line 252: Event::run('system.post_controller');
Line 831: $view->controller = '404-error';
Line 888: echo "<b>Route:</b> ", Router::$controller, '::';

/sprout/Helpers/Admin.php Highlighted file source
Line 51: 'check_controller_entrance\[.*\]' => 'Only one page may reference any given module',
Line 301: if (self::getControllerSlug() === 'page') {
Line 529: $controller = Inflector::singular(Category::tableCat2main(self::$cat_tablename));
Line 530: if (AdminPerms::controllerAccess($controller, 'categories')) {
Line 667: * @param string $selected_controller
Line 670: public static function topNav($selected_controller)
Line 676: if (AdminPerms::controllerAccess('page', 'contents')) {
Line 678: if ($selected_controller == '_dashboard') {
Line 684: if ($selected_controller == 'page') {
Line 691: if (AdminPerms::controllerAccess('file', 'contents')) {
Line 692: if ($selected_controller == 'file') {
Line 699: if (Register::hasFeature('users') and AdminPerms::controllerAccess('user', 'contents')) {
Line 700: if ($selected_controller == 'user') {
Line 713: foreach ($tile['controllers'] as $ctlr => $name) {
Line 714: if ($ctlr == $selected_controller) {
Line 751: foreach ($tile['controllers'] as $ctlr => $name) {
Line 773: * When in the admin, return the slug of the controller being used, e.g. 'page' or 'blog_post'
Line 777: public static function getControllerSlug()
Line 850: * @param string $ctlr Controller name
Line 881: * @param string $ctlr The controller responsible for the record
Line 940: * @param string $ctlr Will refine lock removal by controller
Line 988: * Gets an instance of a managed admin controller
Line 991: * e.g. 'Sprout\Controllers\Admin\AwesomeAdminController' or 'awesome'
Line 992: * @return ManagedAdminController
Line 995: public static function getController($class_name)
Line 1002: $full_name = Register::getAdminController($class_name);
Line 1004: // Auto-determine names of Sprout internal controllers
Line 1007: if (substr($full_name, -15) != 'AdminController') {
Line 1008: $full_name .= 'AdminController';
Line 1010: $full_name = 'Sprout\\Controllers\\Admin\\' . $full_name;
Line 1016: 'Sprout\\Controllers\\Admin\\ManagedAdminController'

/sprout/Helpers/AdminPerms.php Highlighted file source
Line 287: * @param string $controller The name of the controller to check an access flag for
Line 290: public static function controllerAccess($controller, $access_flag)
Line 299: if ($controller == 'home_page') {
Line 303: // Operators have special logic at the controller level for edits
Line 305: if ($controller == 'operator') return true;
Line 308: if ($controller == 'tools' or $controller == 'action_log' or $controller == 'subsites') {
Line 340: $conditions = [['operatorcategory_id', 'IN', $cat_ids], 'controller' => $controller];
Line 357: * For a given list of controllers, return a list of controllers which the current user can actually access.
Line 361: public static function controllerAccessMulti(array $controllers)
Line 366: if ($_SESSION['admin']['super']) return $controllers;
Line 391: $conditions = [['operatorcategory_id', 'IN', $cat_ids], ['controller', 'IN', $controllers]];
Line 393: $q = "SELECT controller, MAX(access_contents) AS flag
Line 396: GROUP BY controller";
Line 402: if ($row['flag']) $out[] = $row['controller'];
Line 403: unset($controllers[array_search($row['controller'], $controllers)]);
Line 406: // If the default is "allow", add any controllers which didn't return a result
Line 408: foreach ($controllers as $c) {
Line 425: * Get the name of the first controller the user has access to.
Line 430: $controller_names = array_keys(Register::getAdminControllers());
Line 431: array_unshift($controller_names, 'user');
Line 432: array_unshift($controller_names, 'file');
Line 433: array_unshift($controller_names, 'page');
Line 435: $allowed_ctlrs = AdminPerms::controllerAccessMulti($controller_names);
Line 442: * Remove controllers and tiles for which the user doesn't have access
Line 445: * @return array Tile definitions sans unpermitted controllers
Line 450: foreach ($tile['controllers'] as $ctlr => $name) {
Line 451: if (!AdminPerms::controllerAccess($ctlr, 'contents')) {
Line 452: unset($tile['controllers'][$ctlr]);
Line 455: if (count($tile['controllers']) === 0) {

/sprout/Helpers/FrontEndEntrance.php Highlighted file source
Line 17: * Defines that a specific controller is able to handle front-end entrances from the pages module
Line 22: * Return the list of [argument => label] options a tool page can call on this controller.
Line 24: * See {@see UserController::_getEntranceArguments} for an example implementation
Line 32: * Acts as the entrance-point of the controller, calling internal methods specific to each argument
Line 34: * See {@see UserController::entrance} for an example implementation
Line 37: * each of which must be handled, usually by mapping onto one of the controller's own methods.

/sprout/Helpers/JsonForm.php Highlighted file source
Line 23: * A generic implementation which should work for most cases is found in {@see ManagedAdminController::_getEditForm}
Line 24: * (generates the form) and {@see Controller::saveJsonData} (saves the POST submission)
Line 475: * @param array $conf Config, typically loaded by Controller::loadFormJson()

/sprout/Helpers/Needs.php Highlighted file source
Line 124: if (Router::$controller != 'Sprout\\Controllers\\AdminController' and @in_array($name, is_array(Kohana::config('sprout.dont_need'))? Kohana::config('sprout.dont_need') : [])) return;
Line 126: if (Router::$controller != 'Sprout\\Controllers\\AdminController' and in_array($name, Kohana::config('sprout.dont_need') ?? [])) return;

/sprout/Helpers/PageRouting.php Highlighted file source
Line 20: * Logic for selecting the page if no controller matches
Line 75: Router::$controller = 'SproutModules\Karmabunny\HomePage\Controllers\HomePageController';
Line 81: // If we've already got a controller, there isn't anything to do here
Line 82: if (Router::$controller !== NULL) {
Line 86: Router::$controller = 'Sprout\\Controllers\\PageController';

/sprout/Helpers/PerRecordPerms.php Highlighted file source
Line 16: use Sprout\Controllers\Admin\ManagedAdminController;
Line 26: * Checks to see if per-record permissions apply to a particular controller
Line 28: * @param ManagedAdminController $ctlr The controller to check
Line 31: public static function controllerRestricted(ManagedAdminController $ctlr)
Line 33: $controller_name = $ctlr->getControllerName();
Line 35: $q = "SELECT 1 FROM ~per_record_controllers WHERE name = ? AND active = 1";
Line 36: return (bool) Pdb::query($q, [$controller_name], 'count');
Line 41: * Checks if a given controller has at least one permission rule in place
Line 43: * @param ManagedAdminController $ctlr The controller to check
Line 46: public static function hasRecordPerms(ManagedAdminController $ctlr)
Line 48: $controller_name = $ctlr->getControllerName();
Line 50: $q = "SELECT id FROM ~per_record_permissions WHERE controller = ? LIMIT 1";
Line 51: return (bool) Pdb::query($q, [$controller_name], 'count');
Line 78: * @param ManagedAdminController $ctlr Admin controller for the record in question
Line 85: public static function fetchDetails(ManagedAdminController $ctlr, $item_id)
Line 89: WHERE controller = ? AND item_id = ?";
Line 90: $row = Pdb::q($q, [$ctlr->getControllerName(), $item_id], 'row');
Line 105: * @param ManagedAdminController $ctlr Admin controller for the record in question
Line 109: public static function save(ManagedAdminController $ctlr, $item_id)
Line 111: if (!PerRecordPerms::controllerRestricted($ctlr)) {
Line 116: 'controller' => $ctlr->getControllerName(),
Line 145: 'controller' => $perms['controller'],

/sprout/Helpers/Preview.php Highlighted file source
Line 18: use Sprout\Controllers\Admin\ManagedAdminController;
Line 19: use Sprout\Controllers\Controller;
Line 30: * controller's _editSave method, and then calling a method it would
Line 33: * @param ManagedAdminController $ctlr The controller with the preview method
Line 45: public static function load(ManagedAdminController $ctlr, array $tables, $record_id = 0)
Line 111: * Run a controller method using the preview data.
Line 114: * @param Controller $ctlr
Line 119: public static function run(Controller $ctlr, $method, array $args = [])

/sprout/Helpers/Register.php Highlighted file source
Line 38: private static $admin_controllers = [];
Line 41: private static $front_end_controllers = [];
Line 109: * Register a front-end controller (also called a tool page)
Line 110: * @param string $name Fully namespaced class name of Controller which MUST implement FrontEndEntrance,
Line 111: * e.g. 'SproutModules\\Karmabunny\\Users\\Controllers\\UserController'
Line 114: * @throws InvalidArgumentException If controller doesn't implement FrontEndEntrance
Line 116: public static function frontEndController($name, $label)
Line 122: self::$front_end_controllers[$name] = $label;
Line 126: * Get all front-end controllers
Line 128: public static function getFrontEndControllers()
Line 130: return self::$front_end_controllers;
Line 286: * Register the various "content" controllers which are provided by the SproutCMS core
Line 287: * This will allow these controllers to have permissions (e.g. per-tab or per-record)
Line 289: public static function coreContentControllers()
Line 291: self::$admin_controllers['document_type'] = '\\Sprout\\Controllers\\Admin\\DocumentTypeAdminController';
Line 292: self::$admin_controllers['email_text'] = '\\Sprout\\Controllers\\Admin\\EmailTextAdminController';
Line 293: self::$admin_controllers['extra_page'] = '\\Sprout\\Controllers\\Admin\\ExtraPageAdminController';
Line 294: self::$admin_controllers['file'] = '\\Sprout\\Controllers\\Admin\\FileAdminController';
Line 295: self::$admin_controllers['page'] = '\\Sprout\\Controllers\\Admin\\PageAdminController';
Line 296: self::$admin_controllers['redirect'] = '\\Sprout\\Controllers\\Admin\\RedirectAdminController';
Line 301: * Registers a module's shorthand controller names for the admin controller
Line 303: * name but not 'Controllers' segment, e.g. Karmabunny\HomePage\Admin
Line 304: * @param array $controllers map of lowercased shorthand names to class
Line 305: * names within the specified namespace, e.g. ['home' => 'Admin\HomePageAdminController']
Line 307: public static function adminControllers($namespace, array $controllers)
Line 313: foreach ($controllers as $shorthand => $class) {
Line 314: if (isset(self::$admin_controllers[$shorthand])) {
Line 317: $full_class = "SproutModules\\{$namespace}\\Controllers\\{$class}";
Line 318: self::$admin_controllers[$shorthand] = $full_class;
Line 323: * Converts an shorthand admin controller name to its full class name,
Line 328: public static function getAdminController($shorthand)
Line 330: if (!isset(self::$admin_controllers[$shorthand])) {
Line 333: return self::$admin_controllers[$shorthand];
Line 337: * Gets the list of modular admin controllers with registered shorthands
Line 340: public static function getAdminControllers()
Line 342: return self::$admin_controllers;
Line 354: * @param array $controllers Controllers to show as links, in format 'shorthand' => 'label'
Line 357: public static function adminTile($name, $icon, $text, array $controllers, $sort_order = 10)
Line 362: if (isset($controllers[$shorthand])) $controllers[$shorthand] .= ' [hidden]';
Line 366: unset($controllers[$shorthand]);
Line 370: if (count($controllers) === 0) return;
Line 376: 'controllers' => $controllers,
Line 383: * Each tile has four keys, 'name', 'icon', 'text', and 'controllers'.
Line 542: * Register::cronJob('daily', 'Sprout\\Controllers\\Admin\\PageAdminController', 'cronPageActivate');
Line 546: * @param string $class The class containing the cron job method. Must be a controller
Line 627: * @param string $class Controller to register which implements the

/sprout/Helpers/Router.php Highlighted file source
Line 40: /** Controller/method URI to use, from the configured routes */
Line 46: /** Controller to use */
Line 47: public static $controller;
Line 49: /** Method to call on controller */
Line 52: /** Arguments to pass to controller method */
Line 62: * Router setup routine; determines controller/method from URI.
Line 95: // Find the controller from the registered route. If no namespace specified, assume Sprout\Controllers\...
Line 97: $controller = array_shift($segments);
Line 98: if (strpos($controller, '\\') === false) $controller = 'Sprout\\Controllers\\' . $controller;
Line 99: if (class_exists($controller)) {
Line 100: Router::$controller = $controller;
Line 191: // Remove the front controller from the current uri
Line 283: * Generates routed URI (i.e. controller/method/arg1/arg2/...) from given URI.
Line 286: * @return string|bool Routed URI or false, e.g. 'AdminController/edit/page/3'

/sprout/Helpers/SearchHandler.php Highlighted file source
Line 33: * @param string $ctlr_name The name of a controller which implements the
Line 39: throw new \InvalidArgumentException('Controller name must be fully namespaced');
Line 77: * Gets the controller name, e.g. PageController
Line 85: * Sets the controller name, e.g. PageController. The specified controller must implement the FrontEndSearch interface.
Line 89: if (! class_exists($val)) throw new Exception("Specified controller class does not exist");

/sprout/sprout_load.php Highlighted file source
Line 46: Register::searchHandler('Sprout\\Controllers\\PageController', 'page_keywords', ['main.active = 1', 'main.show_in_nav = 1']);
Line 48: Register::frontEndController('Sprout\\Controllers\\AdvancedSearchController', 'Advanced search');
Line 55: Register::cronJob('daily', 'Sprout\\Controllers\\Admin\\PageAdminController', 'cronPageActivate');
Line 56: Register::cronJob('daily', 'Sprout\\Controllers\\Admin\\PageAdminController', 'cronPageDeactivate');
Line 57: Register::cronJob('daily', 'Sprout\\Controllers\\Admin\\PageAdminController', 'cronCheckStale');
Line 58: Register::cronJob('daily', 'Sprout\\Controllers\\AdminController', 'cronGenericActivate');
Line 59: Register::cronJob('daily', 'Sprout\\Controllers\\Admin\\FileAdminController', 'cronCleanupInvalid');
Line 60: Register::cronJob('daily', 'Sprout\\Controllers\\ContentSubscribeController', 'cronSendSubscriptions');
Line 61: Register::cronJob('daily', 'Sprout\\Controllers\\Admin\\ActionLogAdminController', 'cronCleanup');
Line 184: 'class' => 'Sprout\\Controllers\\DbToolsController',

/sprout/views/admin/page_navigation.php Highlighted file source
Line 28: <a class="icon-after icon-add tree-list-add button button-small" href="SITE/admin/add/<?php echo $controller_name; ?>">Add <?php echo Inflector::singular($friendly_name); ?></a>
Line 30: <a class="icon-after icon-add tree-list-add button button-small" href="SITE/admin/add/<?php echo $controller_name; ?>?type=tool">Add tool <?php echo Inflector::singular($friendly_name); ?></a>
Line 36: $class = (Admin::getControllerSlug() === 'home_page' ? 'active-node' : '');
A total of 1016 lines in 95 files were found