diff --git a/src/controllers/AdminController.php b/src/controllers/AdminController.php index 1a11dd418..1f4bee7cf 100755 --- a/src/controllers/AdminController.php +++ b/src/controllers/AdminController.php @@ -547,6 +547,7 @@ class AdminController extends Controller implements CrawlConstants * * @param array& $data modified to contain the field data needed for * the view to draw the search form + * @param string activity in which this search is being conducted * @param array $comparison_fields those fields of the entity * in question ( for example, users) which we can search both with * string comparison operators and equality operators @@ -555,10 +556,12 @@ class AdminController extends Controller implements CrawlConstants * @param string $field_postfix suffix to append onto field names in * case there are multiple forms on the same page */ - public function tableSearchRequestHandler(&$data, $comparison_fields = [], - $equal_comparison_fields = [], $field_postfix = "") + public function tableSearchRequestHandler(&$data, $activity, + $comparison_fields = [], $equal_comparison_fields = [], + $field_postfix = "") { $data['FORM_TYPE'] = "search"; + $activity_postfix = $activity . $field_postfix; $data['COMPARISON_TYPES'] = [ "=" => tl('admin_controller_equal'), "!=" => tl('admin_controller_not_equal'), @@ -566,15 +569,21 @@ class AdminController extends Controller implements CrawlConstants "BEGINS WITH" => tl('admin_controller_begins_with'), "ENDS WITH" => tl('admin_controller_ends_with'), ]; + $_SESSION['SEARCH'][$activity_postfix]['COMPARISON_TYPES'] = + $data['COMPARISON_TYPES']; $data['EQUAL_COMPARISON_TYPES'] = [ "=" => tl('admin_controller_equal'), "!=" => tl('admin_controller_not_equal'), ]; + $_SESSION['SEARCH'][$activity_postfix]['EQUAL_COMPARISON_TYPES'] = + $data['EQUAL_COMPARISON_TYPES']; $data['SORT_TYPES'] = [ "NONE" => tl('admin_controller_no_sort'), "ASC" => tl('admin_controller_sort_ascending'), "DESC" => tl('admin_controller_sort_descending'), ]; + $_SESSION['SEARCH'][$activity_postfix]['SORT_TYPES'] = + $data['SORT_TYPES']; $paging = ""; foreach ($comparison_fields as $comparison_start) { $comparison = $comparison_start."_comparison"; @@ -585,6 +594,8 @@ class AdminController extends Controller implements CrawlConstants isset($data[$comparison_types][ $_REQUEST[$comparison]])) ? $_REQUEST[$comparison] : "="; + $_SESSION['SEARCH'][$activity_postfix]['COMPARISON_FIELDS' + ][$comparison] = $data[$comparison]; $paging .= "&$comparison=". urlencode($data[$comparison]); } @@ -592,8 +603,10 @@ class AdminController extends Controller implements CrawlConstants $sort = $sort_start."_sort"; $data[$sort] = (isset($_REQUEST[$sort]) && isset($data['SORT_TYPES'][ - $_REQUEST[$sort]])) ?$_REQUEST[$sort] : + $_REQUEST[$sort]])) ? $_REQUEST[$sort] : "NONE"; + $_SESSION['SEARCH'][$activity_postfix]['SORT'][$sort] = + $data[$sort]; $paging .= "&$sort=".urlencode($data[$sort]); } $search_array = []; @@ -604,6 +617,8 @@ class AdminController extends Controller implements CrawlConstants $data[$field_name] = (isset($_REQUEST[$field_name])) ? $this->clean($_REQUEST[$field_name], "string") : ""; + $_SESSION['SEARCH'][$activity_postfix]['FIELD_NAMES' + ][$field_name] = $data[$field_name]; if ($field_name=='access' && $data[$field_name] >= 10) { $search_array[] = ["status", $data[$field_comparison], $data[$field_name]/10, @@ -617,6 +632,33 @@ class AdminController extends Controller implements CrawlConstants urlencode($data[$field_name]); } $data['PAGING'] = $paging; + $_SESSION['SEARCH'][$activity_postfix]['SEARCH_ARRAY'] = + $search_array; + $_SESSION['SEARCH'][$activity_postfix]['PAGING'] = + $data['PAGING']; return $search_array; } + /** + * + */ + function restoreLastSearchFromSession(&$data, $activity, + $field_postfix = "") + { + $activity_postfix = $activity . $field_postfix; + if(empty($_SESSION['LAST_SEARCH'][$activity_postfix])) { + return; + } + $last_search = $_SESSION['LAST_SEARCH'][$activity_postfix]; + foreach (['COMPARISON_TYPES', 'EQUAL_COMPARISON_TYPES', + 'SORT_TYPES', 'SEARCH_ARRAY', 'PAGING'] as $field) { + $data[$field] = (empty($last_search[$field])) ? [] : + $last_search[$field]; + } + foreach (['COMPARISON_FIELDS', 'SORT', 'FIELD_NAMES'] as $field) { + foreach ($last_search[$field] as $name => $value) { + $data[$name] = $value; + } + } + return $data['SEARCH_ARRAY']; + } } diff --git a/src/controllers/components/AccountaccessComponent.php b/src/controllers/components/AccountaccessComponent.php index 5652c4379..652177855 100644 --- a/src/controllers/components/AccountaccessComponent.php +++ b/src/controllers/components/AccountaccessComponent.php @@ -361,7 +361,7 @@ class AccountaccessComponent extends Component } $request_fields = ['start_row', 'num_show', 'end_row', 'visible_roles', 'visible_groups', 'role_filter', - 'group_filter', 'role_limit', 'group_limit']; + 'group_filter', 'role_limit', 'group_limit', 'context']; $signin_model = $parent->model("signin"); $user_model = $parent->model("user"); $group_model = $parent->model("group"); @@ -423,9 +423,10 @@ class AccountaccessComponent extends Component $data['PAGING'] = ""; if (isset($_REQUEST['arg']) && in_array($_REQUEST['arg'], $possible_arguments)) { + $arg = $_REQUEST['arg']; $pass_len = (isset($_REQUEST['new_password'])) ? strlen($_REQUEST['new_password']) : 0; - switch ($_REQUEST['arg']) { + switch ($arg) { case "adduser": if ($pass_len > C\ZKP_PASSWORD_LEN || (C\AUTHENTICATION_MODE != C\ZKP_AUTHENTICATION && @@ -479,6 +480,9 @@ class AccountaccessComponent extends Component break; case "edituser": $data['FORM_TYPE'] = "edituser"; + if (!empty($_REQUEST['context'])) { + $data['context'] = "search"; + } $user = $user_model->getUser($username); if (!$user) { return $parent->redirectWithMessage( @@ -554,6 +558,10 @@ class AccountaccessComponent extends Component $data['CURRENT_USER']['id'] = $user_id; break; case "deleteuser": + if (!empty($_REQUEST['context'])) { + $_REQUEST['arg'] = 'search'; + $request_fields[] = 'arg'; + } $user_id = $signin_model->getUserId($username); if ($user_id <= 0) { @@ -578,24 +586,24 @@ class AccountaccessComponent extends Component $_REQUEST['arg'] = 'adduser'; return $parent->redirectWithMessage( tl('accountaccess_component_username_doesnt_exists'), - $request_fields); + array_merge(['arg'], $request_fields)); } else if (!($role_id = $role_model->getRoleId( $select_role))) { return $parent->redirectWithMessage( tl('accountaccess_component_rolename_doesnt_exists' - ), array_merge(array('arg', 'user_name'), + ), array_merge(['arg', 'user_name'], $request_fields)); } else if ($role_model->checkUserRole($user_id, $role_id)) { return $parent->redirectWithMessage( tl('accountaccess_component_rolename_already_added' - ), array_merge(array('arg', 'user_name'), + ), array_merge(['arg', 'user_name'], $request_fields)); } else { $role_model->addUserRole($user_id, $role_id); return $parent->redirectWithMessage( tl('accountaccess_component_rolename_added'), - array_merge(array('arg', 'user_name'), + array_merge(['arg', 'user_name'], $request_fields)); } break; @@ -605,18 +613,18 @@ class AccountaccessComponent extends Component $_REQUEST['arg'] = 'adduser'; return $parent->redirectWithMessage( tl('accountaccess_component_username_doesnt_exists'), - $request_fields); + array_merge(['arg'], $request_fields)); } else if (!($group_id = $group_model->getGroupId( $select_group))) { return $parent->redirectWithMessage( tl('accountaccess_component_groupname_doesnt_exists' - ), array_merge(array('arg', 'user_name'), + ), array_merge(['arg', 'user_name'], $request_fields)); } else if ($group_model->checkUserGroup($user_id, $group_id)){ return $parent->redirectWithMessage( tl('accountaccess_component_groupname_already_added' - ), array_merge(array('arg', 'user_name'), + ), array_merge(['arg', 'user_name'], $request_fields)); } else { $group_model->addUserGroup($user_id, @@ -624,7 +632,7 @@ class AccountaccessComponent extends Component $this->getUserGroupsData($data, $user_id); return $parent->redirectWithMessage( tl('accountaccess_component_groupname_added'), - array_merge(array('arg', 'user_name'), + array_merge(['arg', 'user_name'], $request_fields)); } break; @@ -634,12 +642,13 @@ class AccountaccessComponent extends Component $_REQUEST['arg'] = 'adduser'; return $parent->redirectWithMessage( tl('accountaccess_component_username_doesnt_exists'), - $request_fields); + array_merge(['arg'], + $request_fields)); } else if (!($role_model->checkUserRole($user_id, $select_role))) { return $parent->redirectWithMessage( tl('accountaccess_component_rolename_doesnt_exists' - ), array_merge(array('arg', 'user_name'), + ), array_merge(['arg', 'user_name'], $request_fields)); } else { $data['FORM_TYPE'] = "edituser"; @@ -648,12 +657,16 @@ class AccountaccessComponent extends Component $this->getUserRolesData($data, $user_id); return $parent->redirectWithMessage( tl('accountaccess_component_rolename_deleted' - ), array_merge(array('arg', 'user_name'), + ), array_merge(['arg', 'user_name'], $request_fields)); } break; case "deleteusergroup": $_REQUEST['arg'] = 'edituser'; + if (!empty($_REQUEST['context'])) { + $_REQUEST['c'] = 'search'; + $request_fields[] = 'arg'; + } if ($user_id <= 0) { $_REQUEST['arg'] = 'adduser'; return $parent->redirectWithMessage( @@ -663,7 +676,7 @@ class AccountaccessComponent extends Component $select_group))) { return $parent->redirectWithMessage( tl('accountaccess_component_groupname_doesnt_exists' - ), array_merge(array('arg', 'user_name'), + ), array_merge(['arg', 'user_name'], $request_fields)); } else { $data['FORM_TYPE'] = "edituser"; @@ -672,18 +685,31 @@ class AccountaccessComponent extends Component $this->getUserGroupsData($data, $user_id); return $parent->redirectWithMessage( tl('accountaccess_component_group_deleted'), - array_merge(array('arg', 'user_name'), + array_merge(['arg', 'user_name'], $request_fields)); } break; case "search": $data["FORM_TYPE"] = "search"; $search_array = - $parent->tableSearchRequestHandler($data, + $parent->tableSearchRequestHandler($data, + "manageUsers", ['user', 'first', 'last', 'email', 'status'], ['status'], "_name"); + if (empty($_SESSION['LAST_SEARCH']['manageUsers_name']) || + !empty($_REQUEST['user_name'])) { + $_SESSION['LAST_SEARCH']['manageUsers_name'] = + $_SESSION['SEARCH']['manageUsers_name']; + unset($_SESSION['SEARCH']['manageUsers_name']); + } else { + $default_search = true; + } break; case "updatestatus": + if (!empty($_REQUEST['context'])) { + $_REQUEST['arg'] = 'search'; + $request_fields[] = 'arg'; + } $user_id = $signin_model->getUserId($username); if (!isset($data['STATUS_CODES'][$_REQUEST['userstatus']])|| $user_id == 1) { @@ -700,8 +726,22 @@ class AccountaccessComponent extends Component break; } } - if ($search_array == []) { - $search_array[] = ["user", "", "", "ASC"]; + if ($search_array == [] || !empty($default_search)) { + if (!empty($_SESSION['LAST_SEARCH']['manageUsers_name'])) { + if (!empty($_REQUEST['arg']) && $_REQUEST['arg'] == 'search') { + $search_array = + $parent->restoreLastSearchFromSession($data, + 'manageUsers_name'); + } else if (!empty($_REQUEST['context'])) { + $search_array = $_SESSION['LAST_SEARCH'][ + 'manageUsers_name']['SEARCH_ARRAY']; + $data['PAGING'] = + $_SESSION['LAST_SEARCH']['manageUsers_name']['PAGING']; + } + } + if ($search_array == []) { + $search_array[] = ["user", "", "", "ASC"]; + } } $parent->pagingLogic($data, $user_model, "USERS", C\DEFAULT_ADMIN_PAGING_NUM, $search_array, ""); @@ -802,7 +842,6 @@ class AccountaccessComponent extends Component * * @return array $data information about roles in the system, activities, * etc. as well as status messages on performing a given sub activity - * */ public function manageRoles() { @@ -884,13 +923,13 @@ class AccountaccessComponent extends Component return $parent->redirectWithMessage( tl('accountaccess_component_rolename_doesnt_exists' ), ["arg", "start_row", "end_row", "num_show", - "name"]); + "name", "context"]); } else if (!in_array($select_activity, $activity_ids)) { return $parent->redirectWithMessage( tl( 'accountaccess_component_activityname_doesnt_exists' ), ["arg", "start_row", "end_row", "num_show", - "name"]); + "name", "context"]); } else { $role_model->addActivityRole( $role_id, $select_activity); @@ -899,8 +938,8 @@ class AccountaccessComponent extends Component $role_model->getRoleActivities($role_id); return $parent->redirectWithMessage( tl('accountaccess_component_activity_added'), - ["arg", "start_row", "end_row", "num_show", "name"] - ); + ["arg", "start_row", "end_row", "num_show", "name", + "context"]); } break; case "addrole": @@ -921,20 +960,20 @@ class AccountaccessComponent extends Component "</h1>')"; } $data['CURRENT_ROLE']['name'] = ""; - break; + break; case "deleteactivity": $_REQUEST['arg'] = "editrole"; if (($role_id = $role_model->getRoleId($name)) <= 0) { return $parent->redirectWithMessage( tl('accountaccess_component_rolename_doesnt_exists' ), ["arg", "start_row", "end_row", "num_show", - "name"]); + "name", "context"]); } else if (!in_array($select_activity, $activity_ids)) { return $parent->redirectWithMessage( tl( 'accountaccess_component_activityname_doesnt_exists' ), ["arg", "start_row", "end_row", "num_show", - "name"]); + "name", "context"]); } else { $role_model->deleteActivityRole( $role_id, $select_activity); @@ -946,21 +985,27 @@ class AccountaccessComponent extends Component return $parent->redirectWithMessage( tl('accountaccess_component_activity_deleted'), ["arg", "start_row", "end_row", "num_show", - "name"]); + "name", "context"]); } break; case "deleterole": + $preserve = []; + if (!empty($_REQUEST['context'])) { + $_REQUEST['arg'] = 'search'; + $preserve[] = 'arg'; + } if (($role_id = $role_model->getRoleId($name)) <= 0) { return $parent->redirectWithMessage( tl('accountaccess_component_rolename_doesnt_exists' - ),["start_row", "end_row", "num_show"]); + ),array_merge($preserve, ["start_row", "end_row", + "num_show"])); } else { $role_model->deleteRole($role_id); return $parent->redirectWithMessage( tl('accountaccess_component_rolename_deleted'), - ["start_row", "end_row", "num_show"]); + array_merge($preserve, ["start_row", "end_row", + "num_show"])); } - $data['CURRENT_ROLE']['name'] = ""; break; case "editrole": $data['FORM_TYPE'] = "editrole"; @@ -972,6 +1017,9 @@ class AccountaccessComponent extends Component $data['FORM_TYPE'] = "addrole"; break; } + if (!empty($_REQUEST['context'])) { + $data['context'] = 'search'; + } $update = false; foreach ($data['CURRENT_ROLE'] as $field => $value) { $upper_field = strtoupper($field); @@ -990,17 +1038,40 @@ class AccountaccessComponent extends Component $role_model->updateRole($role); return $parent->redirectWithMessage( tl('accountaccess_component_role_updated'), - ["arg", "start_row", "end_row", "num_show"]); + ["arg", "start_row", "end_row", "num_show", + "context"]); } break; case "search": $search_array = $parent->tableSearchRequestHandler($data, - ['name']); + "manageRoles", ['name']); + if (empty($_SESSION['LAST_SEARCH']['manageRoles']) || + isset($_REQUEST['name'])) { + $_SESSION['LAST_SEARCH']['manageRoles'] = + $_SESSION['SEARCH']['manageRoles']; + unset($_SESSION['SEARCH']['manageRoles']); + } else { + $default_search = true; + } break; } } - if ($search_array == []) { - $search_array[] = ["name", "", "", "ASC"]; + if ($search_array == [] || !empty($default_search)) { + if (!empty($_SESSION['LAST_SEARCH']['manageRoles'])) { + if (!empty($_REQUEST['arg']) && $_REQUEST['arg'] == 'search') { + $search_array = + $parent->restoreLastSearchFromSession($data, + 'manageRoles'); + } else if (!empty($_REQUEST['context'])) { + $search_array = + $_SESSION['LAST_SEARCH']['manageRoles']['SEARCH_ARRAY']; + $data['PAGING'] = + $_SESSION['LAST_SEARCH']['manageRoles']['PAGING']; + } + } + if ($search_array == []) { + $search_array[] = ["name", "", "", "ASC"]; + } } $parent->pagingLogic($data, $role_model, "ROLES", C\DEFAULT_ADMIN_PAGING_NUM, $search_array, ""); diff --git a/src/controllers/components/AdvertisementComponent.php b/src/controllers/components/AdvertisementComponent.php index 501d8fb28..882b2e4cd 100644 --- a/src/controllers/components/AdvertisementComponent.php +++ b/src/controllers/components/AdvertisementComponent.php @@ -171,6 +171,7 @@ class AdvertisementComponent extends Component 180 => tl('advertisement_component_one_eighty_days'), ]; $request_field_types = [ + 'context' => 'string', "start_row" => 'int', "num_show" => 'int', "end_row" => 'int', "NAME" => 'string', "DESTINATION" => 'web-url', "DESCRIPTION" => 'string', "KEYWORDS" => 'string', @@ -277,9 +278,15 @@ class AdvertisementComponent extends Component $credit_model->updateCredits($user_id, -$data["BUDGET"], 'advertisement_component_buy_ad'); + $preserve = []; + if (!empty($_REQUEST['context'])) { + $_REQUEST['arg'] = 'search'; + $preserve[] = 'arg'; + } return $parent->redirectWithMessage( tl('advertisement_component_ad_created'), - ["start_row", "num_show", "end_row"]); + array_merge($preserve, + ["start_row", "num_show", "end_row"])); } break; case "changestatus": @@ -305,10 +312,14 @@ class AdvertisementComponent extends Component $result = $advertisement_model->setAdvertisementStatus( $data['id'], $data['status']); if ($result) { + $preserve = ["start_row", "end_row", "num_show"]; + if (!empty($_REQUEST['context'])) { + $_REQUEST['arg'] = 'search'; + $preserve[] = 'arg'; + } return $parent->redirectWithMessage(tl( tl('advertisement_component_status_changed')), - array_merge(["start_row", "end_row", "num_show"], - $request_fields)); + array_merge($preserve, $request_fields)); } } break; @@ -353,7 +364,8 @@ class AdvertisementComponent extends Component unset($data['END_DATE']); return $parent->redirectWithMessage( tl('advertisement_component_ad_updated'), - ["start_row", "num_show", "end_row"]); + ["arg", "id", "start_row", "num_show", + "end_row", "context"]); } } } @@ -362,12 +374,36 @@ class AdvertisementComponent extends Component $data["FORM_TYPE"] = "search"; $search_array = $parent->tableSearchRequestHandler($data, + "manageAdvertisements", ['name', 'description', 'destination', 'keywords', 'budget', 'start_date', 'end_date']); + if (empty($_SESSION['LAST_SEARCH']['manageAdvertisements']) || + isset($_REQUEST['name'])) { + $_SESSION['LAST_SEARCH']['manageAdvertisements'] = + $_SESSION['SEARCH']['manageAdvertisements']; + unset($_SESSION['SEARCH']['manageAdvertisements']); + } else { + $default_search = true; + } break; } - if ($search_array == []) { - $search_array[] = ["id", "", "", "DESC"]; + if ($search_array == [] || !empty($default_search)) { + if (!empty($_SESSION['LAST_SEARCH']['manageAdvertisements'])) { + if (!empty($_REQUEST['arg']) && $_REQUEST['arg'] == 'search') { + $search_array = + $parent->restoreLastSearchFromSession($data, + 'manageAdvertisements'); + } else if (!empty($_REQUEST['context'])) { + $search_array = + $_SESSION['LAST_SEARCH']['manageAdvertisements'][ + 'SEARCH_ARRAY']; + $data['PAGING'] = $_SESSION['LAST_SEARCH'][ + 'manageAdvertisements']['PAGING']; + } + } + if ($search_array == []) { + $search_array[] = ["id", "", "", "DESC"]; + } } if(!C\MOBILE) { $data['SCRIPT'] .= "\npreview(elt('ad-name'))\n" . diff --git a/src/controllers/components/CrawlComponent.php b/src/controllers/components/CrawlComponent.php index c42f6c9c4..1553ba8d3 100644 --- a/src/controllers/components/CrawlComponent.php +++ b/src/controllers/components/CrawlComponent.php @@ -690,13 +690,37 @@ class CrawlComponent extends Component implements CrawlConstants case 'search': $search_array = - $parent->tableSearchRequestHandler($data, ['name']); + $parent->tableSearchRequestHandler($data, + "manageClassifiers", ['name']); + if (empty($_SESSION['LAST_SEARCH']['manageClassifiers']) || + isset($_REQUEST['name'])) { + $_SESSION['LAST_SEARCH']['manageClassifiers'] = + $_SESSION['SEARCH']['manageClassifiers']; + unset($_SESSION['SEARCH']['manageClassifiers']); + } else { + $default_search = true; + } break; } } $data['classifiers'] = $classifiers; - if ($search_array == []) { - $search_array[] = ["name", "", "", "ASC"]; + if ($search_array == [] || !empty($default_search)) { + if (!empty($_SESSION['LAST_SEARCH']['manageClassifiers'])) { + if (!empty($_REQUEST['arg']) && $_REQUEST['arg'] == 'search') { + $search_array = + $parent->restoreLastSearchFromSession($data, + 'manageClassifiers'); + } else if (!empty($_REQUEST['context'])) { + $search_array = + $_SESSION['LAST_SEARCH'][ + 'manageClassifiers']['SEARCH_ARRAY']; + $data['PAGING'] = + $_SESSION['LAST_SEARCH']['manageClassifiers']['PAGING']; + } + } + if ($search_array == []) { + $search_array[] = ["name", "", "", "ASC"]; + } } $parent->pagingLogic($data, 'classifiers', 'classifiers', C\DEFAULT_ADMIN_PAGING_NUM, $search_array, "", diff --git a/src/controllers/components/SocialComponent.php b/src/controllers/components/SocialComponent.php index d3388e542..ee0c00ad2 100644 --- a/src/controllers/components/SocialComponent.php +++ b/src/controllers/components/SocialComponent.php @@ -175,6 +175,14 @@ class SocialComponent extends Component implements CrawlConstants $group = null; } /* end ownership verify */ + $browse = false; + $search_name = "manageGroups"; + if (isset($_REQUEST['browse']) && $_REQUEST['browse'] == 'true' && + $_REQUEST['arg'] == 'search') { + $browse = true; + $data['browse'] = 'true'; + $search_name = "browseGroups"; + } $data['USER_FILTER'] = ""; if (isset($_REQUEST['arg']) && in_array($_REQUEST['arg'], $possible_arguments)) { @@ -494,9 +502,18 @@ class SocialComponent extends Component implements CrawlConstants tl('social_component_banned_status'); $search_array = $parent->tableSearchRequestHandler($data, - ['name', 'owner', 'register', 'access','voting', + $search_name, + ['name', 'owner', 'register', 'access','voting', 'lifetime'], - ['register', 'access', 'voting', 'lifetime']); + ['register', 'access', 'voting', 'lifetime']); + if (empty($_SESSION['LAST_SEARCH'][$search_name]) || + isset($_REQUEST['name'])) { + $_SESSION['LAST_SEARCH'][$search_name] = + $_SESSION['SEARCH'][$search_name]; + unset($_SESSION['SEARCH'][$search_name]); + } else { + $default_search = true; + } break; case "statistics": if (!$group_id || (!$is_owner && @@ -542,14 +559,22 @@ class SocialComponent extends Component implements CrawlConstants } } $current_id = $_SESSION["USER_ID"]; - $browse = false; - if (isset($_REQUEST['browse']) && $_REQUEST['browse'] == 'true' && - $_REQUEST['arg'] == 'search') { - $browse = true; - $data['browse'] = 'true'; - } - if ($search_array == []) { - $search_array[] = ["name", "", "", "ASC"]; + if ($search_array == [] || !empty($default_search)) { + if (!empty($_SESSION['LAST_SEARCH'][$search_name])) { + if (!empty($_REQUEST['arg']) && $_REQUEST['arg'] == 'search') { + $search_array = + $parent->restoreLastSearchFromSession($data, + $search_name); + } else if (!empty($_REQUEST['context'])) { + $search_array = + $_SESSION['LAST_SEARCH'][$search_name]['SEARCH_ARRAY']; + $data['PAGING'] = + $_SESSION['LAST_SEARCH'][$search_name]['PAGING']; + } + } + if ($search_array == []) { + $search_array[] = ["name", "", "", "ASC"]; + } } $parent->pagingLogic($data, $group_model, "GROUPS", C\DEFAULT_ADMIN_PAGING_NUM, $search_array, "", @@ -3300,12 +3325,19 @@ EOD; tl('social_component_mix_invalid_timestamp')); } $crawl_model->deleteCrawlMix($_REQUEST['timestamp']); + $preserve = []; + if (!empty($_REQUEST['context'])) { + $_REQUEST['arg'] = 'search'; + $preserve[] = 'arg'; + } return $parent->redirectWithMessage( - tl('social_component_mix_deleted')); - break; + tl('social_component_mix_deleted'), $preserve); case "editmix": //$data passed by reference $this->editMix($data); + if (!empty($_REQUEST['context'])) { + $data['context'] = 'search'; + } break; case "importmix": $import_success = true; @@ -3329,7 +3361,6 @@ EOD; $crawl_model->setCrawlMix($mix); return $parent->redirectWithMessage( tl('social_component_mix_imported')); - break; case "index": $timestamp = substr( $parent->clean($_REQUEST['timestamp'], "int"), 0, @@ -3341,12 +3372,25 @@ EOD; $_SESSION['its'] = $timestamp; $user_model->setUserSession($user_id, $_SESSION); } + $preserve = []; + if (!empty($_REQUEST['context'])) { + $_REQUEST['arg'] = 'search'; + $preserve[] = 'arg'; + } return $parent->redirectWithMessage( - tl('social_component_set_index')); - break; + tl('social_component_set_index'), $preserve); case "search": $search_array = - $parent->tableSearchRequestHandler($data, ['name']); + $parent->tableSearchRequestHandler($data, + "mixCrawls", ['name']); + if (empty($_SESSION['LAST_SEARCH']['mixCrawls']) || + isset($_REQUEST['name'])) { + $_SESSION['LAST_SEARCH']['mixCrawls'] = + $_SESSION['SEARCH']['mixCrawls']; + unset($_SESSION['SEARCH']['mixCrawls']); + } else { + $default_search = true; + } break; case "sharemix": if (!isset($_REQUEST['group_name'])) { @@ -3390,8 +3434,22 @@ EOD; break; } } - if ($search_array == []) { - $search_array[] = ["name", "", "", "ASC"]; + if ($search_array == [] || !empty($default_search)) { + if (!empty($_SESSION['LAST_SEARCH']['mixCrawls'])) { + if (!empty($_REQUEST['arg']) && $_REQUEST['arg'] == 'search') { + $search_array = + $parent->restoreLastSearchFromSession($data, + 'mixCrawls'); + } else if (!empty($_REQUEST['context'])) { + $search_array = + $_SESSION['LAST_SEARCH']['mixCrawls']['SEARCH_ARRAY']; + $data['PAGING'] = + $_SESSION['LAST_SEARCH']['mixCrawls']['PAGING']; + } + } + if ($search_array == []) { + $search_array[] = ["name", "", "", "ASC"]; + } } $search_array[] = ["owner_id", "=", $user_id, ""]; $parent->pagingLogic($data, $crawl_model, "available_mixes", @@ -3423,7 +3481,6 @@ EOD; (L\getLocaleDirection() == 'ltr') ? "right": "left"; $data["ELEMENT"] = "editmix"; $user_id = $_SESSION['USER_ID']; - $mix = []; $timestamp = 0; if (isset($_REQUEST['timestamp'])) { @@ -3526,8 +3583,14 @@ EOD; if ($save_mix) { $data['MIX'] = $mix; $crawl_model->setCrawlMix($mix); + $preserve = []; + if (!empty($_REQUEST['context']) && + $_REQUEST['context'] == 'search') { + $_REQUEST['arg'] = 'search'; + $preserve = ['arg']; + } return $parent->redirectWithMessage( - tl('social_component_mix_saved')); + tl('social_component_mix_saved'), $preserve); } } $data['SCRIPT'] .= 'fragments = ['; diff --git a/src/controllers/components/SystemComponent.php b/src/controllers/components/SystemComponent.php index 5966d4163..52ae8fcf8 100755 --- a/src/controllers/components/SystemComponent.php +++ b/src/controllers/components/SystemComponent.php @@ -301,7 +301,7 @@ class SystemComponent extends Component $locale_model = $parent->model("locale"); $possible_arguments = ["addlocale", "deletelocale", "editlocale", "editstrings", "search"]; - $search_array = [["tag", "", "", "ASC"]]; + $search_array = []; $data['SCRIPT'] = ""; $data["ELEMENT"] = "managelocales"; $data['CURRENT_LOCALE'] = ["localename" => "", @@ -480,11 +480,37 @@ class SystemComponent extends Component break; case "search": $search_array = $parent->tableSearchRequestHandler($data, - ['name', 'tag', 'mode', 'active'], + "manageLocales", ['name', 'tag', 'mode', 'active'], ['active']); + if (empty($_SESSION['LAST_SEARCH']["manageLocales"]) || + isset($_REQUEST['name'])) { + $_SESSION['LAST_SEARCH']["manageLocales"] = + $_SESSION['SEARCH']["manageLocales"]; + unset($_SESSION['SEARCH']["manageLocales"]); + } else { + $default_search = true; + } break; } } + if ($search_array == [] || !empty($default_search)) { + if (!empty($_SESSION['LAST_SEARCH']["manageLocales"])) { + if (!empty($_REQUEST['arg']) && $_REQUEST['arg'] == 'search') { + $search_array = + $parent->restoreLastSearchFromSession($data, + "manageLocales"); + } else if (!empty($_REQUEST['context'])) { + $search_array = + $_SESSION['LAST_SEARCH']["manageLocales"][ + 'SEARCH_ARRAY']; + $data['PAGING'] = + $_SESSION['LAST_SEARCH']["manageLocales"]['PAGING']; + } + } + if ($search_array == []) { + $search_array = [["tag", "", "", "ASC"]];; + } + } if ($paging) { $parent->pagingLogic($data, $locale_model, "LOCALES", C\DEFAULT_ADMIN_PAGING_NUM, $search_array); diff --git a/src/library/ScraperManager.php b/src/library/ScraperManager.php index f468c5ea7..3c3d2a043 100644 --- a/src/library/ScraperManager.php +++ b/src/library/ScraperManager.php @@ -56,7 +56,8 @@ class ScraperManager $scraper['SIGNATURE'], ENT_QUOTES); if (self::checkSignature($page, $out_scraper['SIGNATURE'])) { $out_scraper['ID'] = $scraper['ID']; - $out_scraper['SCRAPE_RULES'] = $scraper['SCRAPE_RULES']; + $out_scraper['SCRAPE_RULES'] = html_entity_decode( + $scraper['SCRAPE_RULES'], ENT_QUOTES);; $out_scraper['NAME'] = $scraper['NAME']; break; } @@ -95,8 +96,11 @@ class ScraperManager return empty($temp_page) ? $page : $temp_page; } /** - * Checks to see if applying the xpath in $signature to $page results - * in a non-empty dom node list. + * If $signature begins with '/', checks to see if applying + * the xpath in $signature to $page results + * in a non-empty dom node list. Otherwise, does a match of the + * regex (without matching start and end delimiters (say, /) + * against $page and returns whether found * * @var string $page a web document to check * @var string $signature an xpath to check against @@ -104,11 +108,16 @@ class ScraperManager */ public static function checkSignature($page, $signature) { - $dom = new \DOMDocument(); - @$dom->loadHTML($page); - $xpath = new \DOMXpath($dom); - $results = $xpath->query($signature); - return !empty($results->length) || $results->length > 0; + if ($signature[0] == '/') { + $dom = new \DOMDocument(); + @$dom->loadHTML($page); + $xpath = new \DOMXpath($dom); + $results = $xpath->query($signature); + return !empty($results->length) || $results->length > 0; + } else { + $regex = "/" . preg_quote($signature) . "/"; + return (preg_match($regex, $page) == 1); + } } /** * Get the contents of a document via an xpath diff --git a/src/views/elements/EditmixElement.php b/src/views/elements/EditmixElement.php index 8e2422be6..374b432bd 100644 --- a/src/views/elements/EditmixElement.php +++ b/src/views/elements/EditmixElement.php @@ -50,10 +50,14 @@ class EditmixElement extends Element public function render($data) { $admin_url = htmlentities(B\controllerUrl('admin', true)); + $context = ""; + if (!empty($data['context'])) { + $context = "context=true&arg=search&"; + } ?> <div class="current-activity"> <div class="<?= $data['leftorright'] ?>"> - <a href="<?=$admin_url ?>a=mixCrawls&<?= + <a href="<?=$admin_url ?>a=mixCrawls&<?= $context. C\CSRF_TOKEN."=".$data[C\CSRF_TOKEN] ?>" ><?= tl('editmix_element_back_to_mix') ?></a> </div> @@ -63,6 +67,12 @@ class EditmixElement extends Element <input type="hidden" name="<?= C\CSRF_TOKEN ?>" value="<?= $data[C\CSRF_TOKEN] ?>" /> <input type="hidden" name="a" value="mixCrawls" /> + <?php + if ($context) { ?> + <input type="hidden" name="context" value="search" /> + <?php + } + ?> <input type="hidden" name="arg" value="editmix" /> <input type="hidden" name="update" value="update" /> <input type="hidden" name="mix[TIMESTAMP]" diff --git a/src/views/elements/ManageadvertisementsElement.php b/src/views/elements/ManageadvertisementsElement.php index bc0bffe3c..f7876b6e7 100644 --- a/src/views/elements/ManageadvertisementsElement.php +++ b/src/views/elements/ManageadvertisementsElement.php @@ -84,9 +84,15 @@ class ManageadvertisementsElement extends Element tl('manageadvertisements_element_actions')?></th> </tr> <?php - $admin_url = htmlentities(B\controllerUrl('admin', true)) . + $admin_url = htmlentities(B\controllerUrl('admin', true)) . C\CSRF_TOKEN . "=" . $data[C\CSRF_TOKEN]; - $base_url = $admin_url . "&a=manageAdvertisements"; + $context = ""; + if (!empty($data['context']) && $data['context'] == 'search'|| + $data['FORM_TYPE'] == 'search') { + $context = 'context=search&'; + } + $base_url = $admin_url . "&$context" . + "a=manageAdvertisements"; $user_url = $admin_url . "&a=manageUsers&arg=edituser". "&user_name="; if (isset($data['START_ROW'])) { @@ -240,6 +246,12 @@ class ManageadvertisementsElement extends Element $data[C\CSRF_TOKEN] ?>" /> <input type="hidden" name="a" value="manageAdvertisements"/> <input type="hidden" name="arg" value="<?=$data['FORM_TYPE']?>" /> + <?php + if (!empty($data['context']) && $data['context'] == 'search') { ?> + <input type="hidden" name="context" value="search" /> + <?php + } + ?> <table> <?php if($edit_advertisement && $data['HAS_ADMIN_ROLE']) { ?> diff --git a/src/views/elements/ManagerolesElement.php b/src/views/elements/ManagerolesElement.php index a6b25939a..922b276b0 100644 --- a/src/views/elements/ManagerolesElement.php +++ b/src/views/elements/ManagerolesElement.php @@ -77,8 +77,13 @@ class ManagerolesElement extends Element "&end_row=".$data['END_ROW']. "&num_show=".$data['NUM_SHOW']; } - $delete_url = $base_url . "&arg=deleterole&"; - $edit_url = $base_url . "&arg=editrole&"; + $context = ""; + if ($data['FORM_TYPE'] == 'search' || + !empty($data['context']) && $data['context'] == 'search') { + $context = 'context=search&'; + } + $delete_url = $base_url . "&arg=deleterole&$context"; + $edit_url = $base_url . "&arg=editrole&$context"; $stretch = (C\MOBILE) ? 1 :2; foreach ($data['ROLES'] as $role) { e("<tr>"); @@ -163,7 +168,11 @@ class ManagerolesElement extends Element ?> /></th></tr> <?php if ($editrole) { - ?> + $context = ""; + if (!empty($data['context']) && $data['context'] == 'search') { + $context = 'context=search&'; + } + ?> <tr><th class="table-label" style="vertical-align:top"><?= tl('manageroles_element_role_activities') ?>:</th> <td><div class='light-gray-box'><table><?php @@ -176,8 +185,8 @@ class ManagerolesElement extends Element tl('manageroles_element_delete')."</span></td>"); } else { e("<td><a href='{$admin_url}a=manageRoles". - "&arg=deleteactivity&selectactivity=". - $activity_array['ACTIVITY_ID']); + "&arg=deleteactivity&$context". + "selectactivity=". $activity_array['ACTIVITY_ID']); e("&name=".$data['CURRENT_ROLE']['name']. "&".C\CSRF_TOKEN."=".$data[C\CSRF_TOKEN]. $paging. diff --git a/src/views/elements/ManageusersElement.php b/src/views/elements/ManageusersElement.php index e18bd2a25..1ab5f72fb 100644 --- a/src/views/elements/ManageusersElement.php +++ b/src/views/elements/ManageusersElement.php @@ -61,7 +61,6 @@ class ManageusersElement extends Element $data['ACTIVITY'] = 'manageUsers'; $data['VIEW'] = $this->view; $this->view->helper("pagingtable")->render($data); - $default_accounts = [C\ROOT_ID, C\PUBLIC_USER_ID]; ?> <table class="role-table"> @@ -84,8 +83,13 @@ class ManageusersElement extends Element "&end_row=".$data['END_ROW']. "&num_show=".$data['NUM_SHOW']; } - $delete_url = $base_url . "&arg=deleteuser&"; - $edit_url = $base_url . "&arg=edituser&"; + $context = ""; + if ($data['FORM_TYPE'] == 'search' || + !empty($data['context']) && $data['context'] == 'search') { + $context = 'context=search&'; + } + $delete_url = $base_url . "&arg=deleteuser&$context"; + $edit_url = $base_url . "&arg=edituser&$context"; $mobile_columns = ['USER_NAME', 'STATUS']; $stretch = (C\MOBILE) ? 1 :2; $out_columns = ['USER_NAME', 'FIRST_NAME', 'LAST_NAME', @@ -120,6 +124,12 @@ class ManageusersElement extends Element <input type="hidden" name="user_name" value="<?= $user['USER_NAME'] ?>" /> <?php + if ($context) { + ?> + <input type="hidden" name="context" + value="search" /> + <?php + } $this->view->helper("options")->render( "update-userstatus-{$user['USER_NAME']}", "userstatus", $data['STATUS_CODES'], @@ -270,7 +280,11 @@ class ManageusersElement extends Element } ?></td></tr> <?php if ($edituser) { - ?> + $context = ""; + if (!empty($data['context']) && $data['context'] == 'search') { + $context = 'context=search&'; + } + ?> <tr><th class="table-label" style="vertical-align:top"><?= tl('manageusers_element_roles') ?>:</th> <td><div class='light-gray-box'> @@ -295,12 +309,12 @@ class ManageusersElement extends Element "</span></td>"); } else { e("<td><a href='{$admin_url}a=manageUsers". - "&arg=deleteuserrole&selectrole=". - $role_array['ROLE_ID']); + "&arg=deleteuserrole&$context". + "selectrole=" . $role_array['ROLE_ID']); e("&user_name=". $data['CURRENT_USER']['user_name']. "&".C\CSRF_TOKEN."=".$data[C\CSRF_TOKEN]. - "&$visibles&$limits'>". + "&$visibles&$context$limits'>". tl('manageusers_element_delete'). "</a></td>"); } @@ -323,7 +337,8 @@ class ManageusersElement extends Element "&group_filter=".$data['GROUP_FILTER']; if ($limit >= C\NUM_RESULTS_PER_PAGE ) { ?><a href='<?= - "$action_url&arg=edituser&role_limit=". + "$action_url&arg=edituser&$context" . + "role_limit=". ($limit - C\NUM_RESULTS_PER_PAGE) ?>' ><<</a><?php } @@ -335,7 +350,8 @@ class ManageusersElement extends Element if ($data['NUM_USER_ROLES'] > $limit + C\NUM_RESULTS_PER_PAGE) { ?><a href='<?= - "$action_url&arg=edituser&role_limit=". + "$action_url&arg=edituser&$context" . + "role_limit=". ($limit + C\NUM_RESULTS_PER_PAGE) ?>' >>></a> <?php @@ -385,7 +401,8 @@ class ManageusersElement extends Element $data["MEMBERSHIP_CODES"][$group_array['STATUS']]. "</td>"); e("<td><a href='{$admin_url}a=manageUsers". - "&arg=deleteusergroup&selectgroup=". + "&arg=deleteusergroup&$context". + "selectgroup=". $group_array['GROUP_ID']); e("&user_name=".$data['CURRENT_USER']['user_name']. "&".C\CSRF_TOKEN."=".$data[C\CSRF_TOKEN]. @@ -409,7 +426,8 @@ class ManageusersElement extends Element "&group_filter=".$data['GROUP_FILTER']; if ($limit >= C\NUM_RESULTS_PER_PAGE ) { ?><a href='<?= - "$action_url&arg=edituser&group_limit=". + "$action_url&arg=edituser&$context" . + "group_limit=". ($limit - C\NUM_RESULTS_PER_PAGE) ?>' ><<</a><?php } @@ -422,7 +440,8 @@ class ManageusersElement extends Element if ($data['NUM_USER_GROUPS'] > $limit + C\NUM_RESULTS_PER_PAGE) { ?><a href='<?= - "$action_url&arg=edituser&group_limit=". + "$action_url&arg=edituser&$context" . + "group_limit=". ($limit + C\NUM_RESULTS_PER_PAGE) ?>'>>></a> <?php diff --git a/src/views/elements/MixcrawlsElement.php b/src/views/elements/MixcrawlsElement.php index 8fdd41774..8d38db0ef 100644 --- a/src/views/elements/MixcrawlsElement.php +++ b/src/views/elements/MixcrawlsElement.php @@ -67,6 +67,11 @@ class MixcrawlsElement extends Element $data['ACTIVITY'] = 'mixCrawls'; $data['VIEW'] = $this->view; $data['NO_FLOAT_TABLE'] = true; + $context = ''; + if ($data['FORM_TYPE'] == 'search' || + !empty($data['context']) && $data['context'] == 'search') { + $context = 'context=search&'; + } $this->view->helper("pagingtable")->render($data); ?> <table class="mixes-table"> @@ -117,12 +122,12 @@ class MixcrawlsElement extends Element ?> <td><a href="javascript:share_form(<?=$mix['TIMESTAMP'] ?>, '<?= $mix['NAME'] ?>')"><?= tl('mixcrawls_view_share') ?></a></td> - <td><a href="<?= $base_url ?>editmix×tamp=<?= + <td><a href="<?= $base_url ?>editmix&<?=$context ?>timestamp=<?= $mix['TIMESTAMP'] ?>"><?= tl('mixcrawls_view_edit')?></a></td> <td> <?php if ( $mix['TIMESTAMP'] != $data['CURRENT_INDEX']) { ?> - <a href="<?= $base_url ?>index×tamp=<?= + <a href="<?= $base_url ?>index&<?=$context ?>timestamp=<?= $mix['TIMESTAMP'] ?>"><?= tl('mixcrawls_set_index') ?></a> <?php } else { ?> @@ -133,7 +138,7 @@ class MixcrawlsElement extends Element </td> <td><a onclick='javascript:return confirm("<?= tl('confirm_delete_operation') ?>");' href="<?=$base_url - ?>deletemix×tamp=<?=$mix['TIMESTAMP'] + ?>deletemix&<?=$context ?>timestamp=<?=$mix['TIMESTAMP'] ?>"><?= tl('mixcrawls_view_delete') ?></a></td> </tr> <?php diff --git a/src/views/elements/ScrapersElement.php b/src/views/elements/ScrapersElement.php index 3a583a3ec..e27c1d0b7 100644 --- a/src/views/elements/ScrapersElement.php +++ b/src/views/elements/ScrapersElement.php @@ -123,8 +123,8 @@ class ScrapersElement extends Element $data['NO_SEARCH'] = true; $this->view->helper("pagingtable")->render($data); $paging = "&start_row=".$data['START_ROW']. - "&end_row=".$data['END_ROW']. - "&num_show=".$data['NUM_SHOW']; + "&end_row=".$data['END_ROW']. + "&num_show=".$data['NUM_SHOW']; ?> <table class="scrapers-table"> <tr><th><?= tl('scrapers_element_name_heading') ?></th> @@ -138,7 +138,7 @@ class ScrapersElement extends Element urlencode($scraper['NAME'])); ?> <tr><td><b><?= $scraper['NAME'] ?></b></td> - <td><?=$scraper['SIGNATURE'] ?></td> + <td><?= $scraper['SIGNATURE'] ?></td> <td> <?=preg_replace("/###/", "###<br />", $scraper['SCRAPE_RULES']); ?> diff --git a/src/views/helpers/PagingtableHelper.php b/src/views/helpers/PagingtableHelper.php index 172b5d677..fa3e2c573 100644 --- a/src/views/helpers/PagingtableHelper.php +++ b/src/views/helpers/PagingtableHelper.php @@ -123,6 +123,11 @@ class PagingtableHelper extends Helper value="<?php e($data[C\CSRF_TOKEN]); ?>" /> <input type="hidden" name="a" value="<?= $activity ?>" /> <?php + if (!empty($data['context']) || $data['FORM_TYPE'] == 'search') { + ?> + <input type="hidden" name="arg" value="search" /> + <?php + } e("<b>".tl('pagingtable_helper_show')."</b>"); $data['VIEW']->helper("options")->render( "{$var_prefix}num-show", "{$var_prefix}num_show", @@ -231,6 +236,11 @@ class PagingtableHelper extends Helper value="<?= $data[C\CSRF_TOKEN] ?>" /> <input type="hidden" name="a" value="<?= $activity ?>" /> <?php + if (!empty($data['context']) || $data['FORM_TYPE'] == 'search'){ + ?> + <input type="hidden" name="arg" value="search" /> + <?php + } e("<b>".tl('pagingtable_helper_show')."</b>"); $data['VIEW']->helper("options")->render( "{$var_prefix}num-show", "{$var_prefix}num_show", diff --git a/src/views/helpers/SearchformHelper.php b/src/views/helpers/SearchformHelper.php index d101ea693..e61dc7356 100644 --- a/src/views/helpers/SearchformHelper.php +++ b/src/views/helpers/SearchformHelper.php @@ -76,10 +76,10 @@ class SearchformHelper extends Helper <h2><?= $title . " " ?> </h2><?php $item_sep = (C\MOBILE) ? "<br />" : "</td><td>"; ?> - <form id="search-form" method="post" autocomplete="off"> + <form id="search-form" method="get" autocomplete="off"> <input type="hidden" name="c" value="<?= $controller ?>" /> - <input type="hidden" name="<?=CSRF_TOKEN ?>" value="<?= - $data[CSRF_TOKEN] ?>" /> + <input type="hidden" name="<?=C\CSRF_TOKEN ?>" value="<?= + $data[C\CSRF_TOKEN] ?>" /> <input type="hidden" name="a" value="<?= $activity ?>" /> <input type="hidden" name="arg" value="search" /> <?php diff --git a/tests/ManyDetectorsExperiment.php b/tests/ManyScrapersExperiment.php similarity index 96% rename from tests/ManyDetectorsExperiment.php rename to tests/ManyScrapersExperiment.php index dded52651..f2f41bd95 100644 --- a/tests/ManyDetectorsExperiment.php +++ b/tests/ManyScrapersExperiment.php @@ -23,6 +23,7 @@ * END LICENSE * * @author Charles Bocage charles.bocage@sjsu.edu + * (changed to web scrapers by Chris Pollett) * @license http://www.gnu.org/licenses/ GPL3 * @link http://www.seekquarry.com/ * @copyright 2009 - 2016 @@ -31,6 +32,7 @@ namespace seekquarry\yioop\tests; use seekquarry\yioop\configs as C; +use seekquarry\yioop\controllers\AdminController; use seekquarry\yioop\library as L; use seekquarry\yioop\models as M; @@ -39,9 +41,9 @@ if (isset($_SERVER['DOCUMENT_ROOT']) && strlen($_SERVER['DOCUMENT_ROOT']) > 0){ exit(); } /** - * This script inserts 239 CMS detectors into the database so that one can + * This script inserts 239 Web Scraper into the database so that one can * test the crawl speed of Yioop in a scenario that there are a moderate - * number of CMS detectors. + * number of Web Scrapers. */ /** * Calculate base directory of script @@ -54,22 +56,26 @@ define("seekquarry\\yioop\\configs\\BASE_DIR", C\PARENT_DIR . "/src"); require_once C\BASE_DIR.'/configs/Config.php'; /** For class autoload **/ require_once C\PARENT_DIR ."/vendor/autoload.php"; -$cms_model = new M\CmsModel(); -//Add lots of CMS detectors -$cms_detectors = getCmsDetectorEntries(); -print("Please wait this will take " . count($cms_detectors) . " seconds\n"); -foreach ($cms_detectors as $cms_detector) { - $name = $cms_detector[0]; - $header = $cms_detector[1]; - $cms_model->addCmsDetectors($name, $header, ""); - sleep(1); +$scraper_model = new M\ScraperModel(); +//Add lots of Web Scrapers +$web_scrapers = getScraperEntries(); +$num_scrapers = count($web_scrapers); +$controller = new AdminController(); +$i = 0; +foreach ($web_scrapers as $web_scraper) { + $name = $web_scraper[0]; + $signature = $web_scraper[1]; + $scraper_model->add($controller->clean($name, "string"), + $controller->clean($signature, "string"), ""); + $i++; + echo "Adding scraper $i of $num_scrapers.\n"; } /** - * This function has an array of CMS detector values to return. + * This function has an array of Web Scrapers. * * @param array CMS detector values. */ -function getCmsDetectorEntries() +function getScraperEntries() { return [ ["1C-Bitrix","(?:<link[^>]+components/bitrix|(?:src|href)=\"/bitrix" . @@ -419,4 +425,4 @@ function getCmsDetectorEntries() ["xCharts","<link[^>]* href=\"[^\"]*xcharts(?:\\.min)?\\.css"], ["xtCommerce","<div class=\"copyright\">[^<]+<a[^>]+>xt:Commerce"], ]; -} \ No newline at end of file +}