PageRenderTime 27ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/modules/form/admin/form_list.php

https://gitlab.com/alexprowars/bitrix
PHP | 314 lines | 257 code | 47 blank | 10 comment | 35 complexity | 8c60bb0cbbf9411f89a0547551694f73 MD5 | raw file
  1. <?
  2. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
  3. $sTableID = "tbl_form_list";
  4. $oSort = new CAdminSorting($sTableID, "ID", "asc");
  5. $lAdmin = new CAdminList($sTableID, $oSort);
  6. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/form/prolog.php");
  7. ClearVars();
  8. $FORM_RIGHT = $APPLICATION->GetGroupRight("form");
  9. if($FORM_RIGHT<="D") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
  10. CModule::IncludeModule("form");
  11. $bSimple = (COption::GetOptionString("form", "SIMPLE", "Y") == "Y") ? true : false;
  12. IncludeModuleLangFile(__FILE__);
  13. $err_mess = "File: ".__FILE__."<br>Line: ";
  14. $arFilterFields = Array(
  15. "find_id",
  16. "find_id_exact_match",
  17. "find_name",
  18. "find_name_exact_match",
  19. "find_sid",
  20. "find_sid_exact_match",
  21. "find_description",
  22. "find_description_exact_match",
  23. "find_site"
  24. );
  25. $lAdmin->InitFilter($arFilterFields);
  26. $old_module_version = CForm::IsOldVersion();
  27. $reset_id = intval($reset_id);
  28. if ($FORM_RIGHT=="W" && $reset_id>0 && check_bitrix_sessid()) CForm::Reset($reset_id);
  29. $copy_id = intval($makecopy_id);
  30. if ($FORM_RIGHT=="W" && $copy_id>0 && check_bitrix_sessid())
  31. {
  32. CForm::Copy($copy_id);
  33. LocalRedirect("form_list.php?lang=".LANGUAGE_ID);
  34. }
  35. InitBVar($find_id_exact_match);
  36. InitBVar($find_name_exact_match);
  37. InitBVar($find_sid_exact_match);
  38. InitBVar($find_description_exact_match);
  39. $arFilter = Array(
  40. "ID" => $find_id,
  41. "ID_EXACT_MATCH" => $find_id_exact_match,
  42. "NAME" => $find_name,
  43. "NAME_EXACT_MATCH" => $find_name_exact_match,
  44. "SID" => $find_sid,
  45. "SID_EXACT_MATCH" => $find_sid_exact_match,
  46. "DESCRIPTION" => $find_description,
  47. "DESCRIPTION_EXACT_MATCH" => $find_description_exact_match,
  48. "SITE" => $find_site
  49. );
  50. // "Save" button was pressed
  51. if ($lAdmin->EditAction() && $FORM_RIGHT>="W" && check_bitrix_sessid())
  52. {
  53. foreach($FIELDS as $ID=>$arFields)
  54. {
  55. if(!$lAdmin->IsUpdated($ID))
  56. continue;
  57. $DB->StartTransaction();
  58. $ID = intval($ID);
  59. $F_RIGHT = CForm::GetPermission($ID);
  60. if ($F_RIGHT>=30)
  61. {
  62. $arFieldsStore = Array(
  63. "TIMESTAMP_X" => $DB->GetNowFunction(),
  64. "C_SORT" => "'".intval($arFields[C_SORT])."'"
  65. );
  66. if (!$DB->Update("b_form",$arFieldsStore,"WHERE ID='".$ID."'",$err_mess.__LINE__))
  67. {
  68. $lAdmin->AddUpdateError(GetMessage("SAVE_ERROR").$ID.": ".GetMessage("FORM_SAVE_ERROR"), $ID);
  69. $DB->Rollback();
  70. }
  71. }
  72. $DB->Commit();
  73. }
  74. }
  75. // simgle and group actions processing
  76. if(($arID = $lAdmin->GroupAction()) && $FORM_RIGHT=="W" && check_bitrix_sessid())
  77. {
  78. if($_REQUEST['action_target']=='selected')
  79. {
  80. $arID = Array();
  81. $rsData = CForm::GetList('', '', $arFilter);
  82. while($arRes = $rsData->Fetch())
  83. $arID[] = $arRes['ID'];
  84. }
  85. foreach($arID as $ID)
  86. {
  87. if($ID == '')
  88. continue;
  89. $ID = intval($ID);
  90. switch($_REQUEST['action'])
  91. {
  92. case "delete":
  93. @set_time_limit(0);
  94. $DB->StartTransaction();
  95. if(!CForm::Delete($ID))
  96. {
  97. $DB->Rollback();
  98. $lAdmin->AddGroupError(GetMessage("DELETE_ERROR"), $ID);
  99. }
  100. $DB->Commit();
  101. break;
  102. }
  103. }
  104. }
  105. //////////////////////////////////////////////////////////////////////
  106. // list initialization - get data
  107. global $by, $order;
  108. $rsData = CForm::GetList($by, $order, $arFilter);
  109. $arData = array();
  110. while ($arForm = $rsData->Fetch())
  111. {
  112. $F_RIGHT = CForm::GetPermission($arForm["ID"]);
  113. if ($F_RIGHT >= 20)
  114. {
  115. $arForm["F_RIGHT"] = $F_RIGHT;
  116. $arData[] = $arForm;
  117. }
  118. }
  119. $rsData->InitFromArray($arData);
  120. $rsData = new CAdminResult($rsData, $sTableID);
  121. $rsData->NavStart();
  122. // set navigation bar
  123. $lAdmin->NavText($rsData->GetNavPrint(GetMessage("FORM_PAGES")));
  124. $headers = array(
  125. array("id"=>"ID", "content"=>"ID", "sort"=>"s_id", "default"=>true),
  126. array("id"=>"SITE", "content"=>GetMessage("FORM_SITE"), "default"=>true),
  127. array("id"=>"C_SORT", "content"=>GetMessage("FORM_C_SORT"), "sort"=>"s_c_sort", "default"=>true)
  128. );
  129. if (!$bSimple)
  130. $headers[] = array("id"=>"SID", "content"=>GetMessage("FORM_SID"), "sort"=>"s_sid", "default"=>true);
  131. $headers[] = array("id"=>"NAME", "content"=>GetMessage("FORM_NAME"), "sort"=>"s_name", "default"=>true);
  132. $headers[] = array("id"=>"QUESTIONS", "content"=>GetMessage("FORM_QUESTIONS"), "default"=>true);
  133. if (COption::GetOptionString("form", "SIMPLE")!="Y")
  134. {
  135. $headers[]=array("id"=>"C_FIELDS", "content"=>GetMessage("FORM_FIELDS"), "default"=>true);
  136. $headers[]=array("id"=>"STATUSES", "content"=>GetMessage("FORM_STATUSES"), "default"=>true);
  137. }
  138. $headers[]=array("id"=>"RESULTS", "content"=>GetMessage("FORM_RESULTS"), "default"=>true);
  139. $lAdmin->AddHeaders($headers);
  140. while($arRes = $rsData->NavNext(true, "f_"))
  141. {
  142. $row =& $lAdmin->AddRow($f_ID, $arRes);
  143. //$F_RIGHT = CForm::GetPermission($f_ID);
  144. $F_RIGHT = $f_F_RIGHT;
  145. unset($txt);
  146. $arrSITE = CForm::GetSiteArray($f_ID);
  147. reset($arrSITE);
  148. if (is_array($arrSITE))
  149. {
  150. foreach($arrSITE as $sid)
  151. $txt.= "<a href='/bitrix/admin/site_edit.php?LID=".htmlspecialcharsbx($sid, ENT_QUOTES)."&lang=".LANGUAGE_ID."'>".htmlspecialcharsbx($sid)."</a>,";
  152. }
  153. else
  154. $txt="&nbsp;";
  155. $txt=trim($txt,",");
  156. $row->AddViewField("SITE",$txt);
  157. if ($bSimple)
  158. {
  159. $f_QUESTIONS+=$f_C_FIELDS;
  160. $txt="<a title=\"".GetMessage("FORM_QUESTIONS_ALT")."\" href=\"form_field_list.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=$f_ID\">$f_QUESTIONS</a>&nbsp;[<a title=\"".GetMessage("FORM_ADD_QUESTION")."\" href=\"form_field_edit_simple.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=$f_ID\">+</a>]";
  161. }
  162. else
  163. $txt="<a title=\"".GetMessage("FORM_QUESTIONS_ALT")."\" href=\"form_field_list.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=$f_ID\">$f_QUESTIONS</a>&nbsp;[<a title=\"".GetMessage("FORM_ADD_QUESTION")."\" href=\"form_field_edit.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=$f_ID\">+</a>]";
  164. $row->AddViewField("QUESTIONS",$txt);
  165. $txt="<a title=\"".GetMessage("FORM_FIELDS_ALT")."\" href=\"form_field_list.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=$f_ID&additional=Y\">$f_C_FIELDS</a>&nbsp;[<a title=\"".GetMessage("FORM_ADD_FIELD")."\" href=\"form_field_edit.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=$f_ID&additional=Y\">+</a>]";
  166. $row->AddViewField("C_FIELDS",$txt);
  167. $txt="<a title=\"".GetMessage("FORM_STATUSES_ALT")."\" href=\"form_status_list.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=$f_ID\">$f_STATUSES</a>&nbsp;[<a title=\"".GetMessage("FORM_ADD_STATUS")."\" href=\"form_status_edit.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=$f_ID\">+</a>]";
  168. $row->AddViewField("STATUSES",$txt);
  169. $txt="<a title=\"".str_replace("\"#NAME#\"", "", GetMessage("FORM_RESULTS_ALT"))."\" href=\"form_result_list.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=$f_ID\">".(CFormResult::GetCount($f_ID))."</a>&nbsp;[<a title=\"".GetMessage("FORM_ADD_RESULT")."\" href=\"form_result_edit.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=$f_ID\">+</a>]";
  170. $row->AddViewField("RESULTS",$txt);
  171. if ($FORM_RIGHT=="W") $row->AddInputField("C_SORT");
  172. $arActions = Array();
  173. if ($F_RIGHT>=25)
  174. $arActions[] = array("DEFAULT"=>"Y", "ICON"=>"edit", "TITLE"=>GetMessage("FORM_EDIT_ALT"), "ACTION"=>$lAdmin->ActionRedirect("form_edit.php?lang=".LANGUAGE_ID."&ID=$f_ID"), "TEXT"=>GetMessage("FORM_EDIT"));
  175. if (CForm::IsAdmin())
  176. $arActions[] = array("ICON"=>"copy", "TITLE"=>GetMessage("FORM_COPY_ALT"),"ACTION"=>$lAdmin->ActionRedirect("form_list.php?lang=".LANGUAGE_ID."&amp;makecopy_id=$f_ID&".bitrix_sessid_get()),"TEXT"=>GetMessage("FORM_COPY"));
  177. if ($F_RIGHT>=30)
  178. {
  179. $arActions[] = array("SEPARATOR"=>true);
  180. $arActions[] = array("TITLE"=>GetMessage("FORM_DELETE_RESULTS_ALT"),"ACTION"=>"javascript:if(confirm('".CUtil::JSEscape(GetMessage("FORM_CONFIRM_DELETE_RESULTS"))."')) window.location='?lang=".LANGUAGE_ID."&reset_id=".$f_ID."&".bitrix_sessid_get()."'", "TEXT"=>GetMessage("FORM_DELETE_RESULTS"));
  181. }
  182. if (CForm::IsAdmin())
  183. $arActions[] = array("ICON"=>"delete", "TITLE"=>GetMessage("FORM_DELETE_ALT"),"ACTION"=>"javascript:if(confirm('".CUtil::JSEscape(GetMessage("FORM_CONFIRM_DELETE"))."')) window.location='?lang=".LANGUAGE_ID."&action=delete&ID=$f_ID&".bitrix_sessid_get()."'","TEXT"=>GetMessage("FORM_DELETE"));
  184. $row->AddActions($arActions);
  185. }
  186. // list footer
  187. $lAdmin->AddFooter(
  188. array(
  189. array("title"=>GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value"=>$rsData->SelectedRowsCount()),
  190. array("counter"=>true, "title"=>GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value"=>"0"),
  191. )
  192. );
  193. if ($FORM_RIGHT=="W")
  194. // add list buttons
  195. $lAdmin->AddGroupActionTable(Array(
  196. "delete"=>GetMessage("FORM_DELETE_L"),
  197. ));
  198. // context menu
  199. if ($FORM_RIGHT=="W")
  200. {
  201. $aMenu = array();
  202. $aMenu[] = array(
  203. "TEXT" => GetMessage("FORM_CREATE"),
  204. "TITLE"=>GetMessage("FORM_CREATE_TITLE"),
  205. "LINK"=>"form_edit.php?lang=".LANG,
  206. "ICON" => "btn_new"
  207. );
  208. $aContext = $aMenu;
  209. $lAdmin->AddAdminContextMenu($aContext);
  210. }
  211. // check list output mode
  212. $lAdmin->CheckListMode();
  213. $APPLICATION->SetTitle(GetMessage("FORM_PAGE_TITLE"));
  214. require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
  215. ?>
  216. <a name="tb"></a>
  217. <form name="form1" method="GET" action="<?=$APPLICATION->GetCurPage()?>?">
  218. <?
  219. $oFilter = new CAdminFilter(
  220. $sTableID."_filter",
  221. array(
  222. GetMessage("FORM_FL_ID"),
  223. GetMessage("FORM_FL_SITE"),
  224. GetMessage("FORM_FL_SID"),
  225. GetMessage("FORM_FL_DESCRIPTION"),
  226. )
  227. );
  228. $oFilter->Begin();
  229. ?>
  230. <tr>
  231. <td><b><?echo GetMessage("FORM_F_NAME")?></b></td>
  232. <td><input type="text" name="find_name" size="47" value="<?echo htmlspecialcharsbx($find_name)?>"><?=InputType("checkbox", "find_name_exact_match", "Y", $find_name_exact_match, false, "", "title='".GetMessage("FORM_EXACT_MATCH")."'")?>&nbsp;<?=ShowFilterLogicHelp()?></td>
  233. </tr>
  234. <tr>
  235. <td><?echo GetMessage("FORM_F_ID")?></td>
  236. <td><input type="text" name="find_id" size="47" value="<?echo htmlspecialcharsbx($find_id)?>"><?=InputType("checkbox", "find_id_exact_match", "Y", $find_id_exact_match, false, "", "title='".GetMessage("FORM_EXACT_MATCH")."'")?>&nbsp;<?=ShowFilterLogicHelp()?></td>
  237. </tr>
  238. <tr>
  239. <td><?=GetMessage("FORM_F_SITE")?><br><img src="/bitrix/images/form/mouse.gif" width="44" height="21" border=0 alt=""></td>
  240. <td><?
  241. $ref = array();
  242. $ref_id = array();
  243. $rs = CSite::GetList();
  244. while ($ar = $rs->Fetch())
  245. {
  246. $ref[] = "[".$ar["ID"]."] ".$ar["NAME"];
  247. $ref_id[] = $ar["ID"];
  248. }
  249. echo SelectBoxMFromArray("find_site[]", array("reference" => $ref, "reference_id" => $ref_id), $find_site, "",false,"3");
  250. ?></td>
  251. </tr>
  252. <tr>
  253. <td><?echo GetMessage("FORM_F_SID")?></td>
  254. <td><input type="text" name="find_sid" size="47" value="<?echo htmlspecialcharsbx($find_sid)?>"><?=InputType("checkbox", "find_sid_exact_match", "Y", $find_sid_exact_match, false, "", "title='".GetMessage("FORM_EXACT_MATCH")."'")?>&nbsp;<?=ShowFilterLogicHelp()?></td>
  255. </tr>
  256. <tr>
  257. <td><?echo GetMessage("FORM_F_DESCRIPTION")?></td>
  258. <td><input type="text" name="find_description" size="47" value="<?echo htmlspecialcharsbx($find_description)?>"><?=InputType("checkbox", "find_description_exact_match", "Y", $find_description_exact_match, false, "", "title='".GetMessage("FORM_EXACT_MATCH")."'")?>&nbsp;<?=ShowFilterLogicHelp()?></td>
  259. </tr>
  260. <?
  261. $oFilter->Buttons(array("table_id"=>$sTableID, "url"=>$APPLICATION->GetCurPage()));
  262. $oFilter->End();
  263. ?>
  264. </form>
  265. <?
  266. $lAdmin->DisplayList();
  267. require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");