Advertisement
Guest User

Untitled

a guest
Jul 29th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 10.20 KB | None | 0 0
  1. <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
  2.  
  3. use \Bitrix\Main\Type;
  4. use \Bitrix\Main\Entity;
  5.  
  6. if(!CModule::IncludeModule("iblock"))
  7. {
  8.     ShowError(GetMessage("ASKARON_REVIEWS_IBLOCK_MODULE_NOT_INSTALLED"));
  9.     return;
  10. }
  11.  
  12. if(!CModule::IncludeModule("askaron.reviews"))
  13. {
  14.     ShowError(GetMessage("ASKARON_REVIEWS_MODULE_NOT_INSTALLED"));
  15.     return;
  16. }
  17.  
  18. $arParams["ELEMENT_ID"] = intval($arParams["ELEMENT_ID"]);
  19.  
  20. //if(!isset($arParams["CACHE_TIME"]))
  21. //{
  22. //  $arParams["CACHE_TIME"] = 86400;
  23. //}
  24.  
  25. //if($arParams["CACHE_TYPE"] == "N" || ($arParams["CACHE_TYPE"] == "A" && COption::GetOptionString("main", "component_cache_on", "Y") == "N") )
  26. //{
  27. //  $arParams["CACHE_TIME"] = 0;
  28. //}
  29.  
  30. //$arParams["MODULE_RIGHT"] = $APPLICATION->GetGroupRight( "askaron.reviews" );
  31.  
  32. $arResult = array(
  33.     "NEW_ADDED" => false,
  34.     "NEW_ADDED_TEXT" => GetMessage("ASKARON_REVIEWS_REVIEW_ADDED_MESSAGE"),
  35.     "NEW_ADDED_PREMODERATE_TEXT" => GetMessage("ASKARON_REVIEWS_REVIEW_NEED_MODERATE_MESSAGE"),
  36.     "MODULE_RIGHT" => $APPLICATION->GetGroupRight( "askaron.reviews" ),
  37.     "PREMODERATE" => ( COption::GetOptionString("askaron.reviews", "premoderate") == "Y" ) && ( $APPLICATION->GetGroupRight( "askaron.reviews" ) <= "R" ),
  38.     "USE_CAPTCHA" => ( COption::GetOptionString("askaron.reviews", "use_captcha") == "N" ) && !$USER->IsAuthorized(),
  39.     //"OK_MESSAGE" => "",
  40.     "ERRORS" => array(),
  41.     "FIELDS" => array(
  42.         "GRADE" => array(
  43.             "NAME" => GetMessage("ASKARON_REVIEWS_FORM_GRADE"),
  44.             "VALUE" => "",
  45.             "~VALUE" => "",
  46.         ),
  47.         "PRO" => array(
  48.             "NAME" => GetMessage("ASKARON_REVIEWS_FORM_PRO"),
  49.             "VALUE" => "",
  50.             "~VALUE" => "",
  51.         ),
  52.         "CONTRA" => array(
  53.             "NAME" => GetMessage("ASKARON_REVIEWS_FORM_CONTRA"),
  54.             "VALUE" => "",
  55.             "~VALUE" => "",
  56.         ),
  57.         "TEXT" => array(
  58.             "NAME" => GetMessage("ASKARON_REVIEWS_FORM_TEXT"),
  59.             "VALUE" => "",
  60.             "~VALUE" => "111",
  61.         ),
  62.         "AUTHOR_NAME" => array(
  63.             "NAME" => GetMessage("ASKARON_REVIEWS_FORM_NAME"),
  64.             "VALUE" => "",
  65.             "~VALUE" => "",
  66.         ),
  67.         "AUTHOR_EMAIL" => array(
  68.             "NAME" => "E-mail",
  69.             "VALUE" => "",
  70.             "~VALUE" => "",
  71.         ),
  72.     ),
  73. );
  74.  
  75.  
  76. if ( $arParams["ELEMENT_ID"] > 0 )
  77. {
  78.     if ( $USER->IsAuthorized() )
  79.     {
  80.         unset( $arResult["FIELDS"]["AUTHOR_NAME"] );
  81.         unset( $arResult["FIELDS"]["AUTHOR_EMAIL"] );
  82.     }
  83.  
  84.     if ( isset( $_REQUEST["new_review_form"] ) && $_REQUEST["new_review_form"] == "Y" )
  85.     {
  86.         foreach ( $arResult["FIELDS"] as $key => $arField )
  87.         {
  88.             if ( isset( $_REQUEST["new_review"][$key] ) )
  89.             {
  90.                 $arResult["FIELDS"][ $key ][ "~VALUE" ] = $_REQUEST["new_review"][$key];
  91.                 $arResult["FIELDS"][ $key ][ "VALUE" ] = htmlspecialcharsbx( $arResult["FIELDS"][ $key ][ "~VALUE" ] );
  92.             }
  93.         }
  94.  
  95.         if ( check_bitrix_sessid() )
  96.         {
  97.             // check fields
  98.             foreach ( $arResult["FIELDS"] as $key => $arField )
  99.             {
  100.                 if ( strlen( $arField["VALUE"] ) == 0 )
  101.                 {
  102.                     $arResult["ERRORS"]["FIELD_EMPTY_".$key] = GetMessage("ASKARON_REVIEWS_FIELD")." ยซ".$arField["NAME"]."ยป ".GetMessage("ASKARON_REVIEWS_IS_EMPTY");
  103.                 }
  104.                 else
  105.                 {
  106.                     if ( $key == "GRADE" && !in_array( $arField["~VALUE"], array(1,2,3,4,5) ) )
  107.                     {
  108.                         $arResult["ERRORS"]["FIELD_EMPTY_".$key] = GetMessage("ASKARON_REVIEWS_WRONG_GRADE");
  109.                     }
  110.  
  111.                     if ( $key == "AUTHOR_EMAIL" && !check_email( $arField["~VALUE"] ) )
  112.                     {
  113.                         $arResult["ERRORS"]["FIELD_EMPTY_".$key] = GetMessage("ASKARON_REVIEWS_WRONG_EMAIL");
  114.                     }
  115.                 }
  116.             }
  117.  
  118.             // get iblock element
  119.             $arIblockElement = CIblockElement::GetList(
  120.                     array(),
  121.                     array( "ID" => $arParams["ELEMENT_ID"] ),
  122.                     false,
  123.                     array( "nTopCount" => 1 ),
  124.                     array( "ID", "NAME", "IBLOCK_ID", "DETAIL_PAGE_URL" )
  125.             )->GetNext();
  126.  
  127.             //d($arIblockElement);
  128.  
  129.             if ( !$arIblockElement )
  130.             {
  131.                 $arResult["ERRORS"]["ELEMENT_NOT_FOUND"] = GetMessage( "ASKARON_REVIEWS_NEW_ELEMENT_NOT_FOUND" );
  132.             }
  133.  
  134.             // Check CAPTCHA
  135.             if( $arResult["USE_CAPTCHA"] )
  136.             {
  137.                 if (strlen($_POST["captcha_word"])>0)
  138.                 {
  139.                     include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php");
  140.  
  141.                     $cpt = new CCaptcha();
  142.                     if (strlen($_POST["captcha_code"]) > 0)
  143.                     {
  144.                         $captchaPass = COption::GetOptionString("main", "captcha_password", "");
  145.  
  146.                         if (!$cpt->CheckCodeCrypt($_POST["captcha_word"], $_POST["captcha_code"], $captchaPass))
  147.                         {
  148.                             $arResult["ERRORS"]["CAPTCHA_IS_BAD"] = GetMessage( "ASKARON_REVIEWS_NEW_CAPTCHA_IS_BAD" );
  149.                         }
  150.                     }
  151.                 }
  152.                 else
  153.                 {
  154.                     $arResult["ERRORS"]["EMPTY_CAPTCHA"] = GetMessage( "ASKARON_REVIEWS_NEW_EMPTY_CAPTCHA" );
  155.                 }
  156.             }
  157.  
  158.             if ( !$arResult["ERRORS"] )
  159.             {
  160.                 // add new element
  161.                 $arAddFields = array(
  162.                     "ELEMENT_ID" => $arParams["ELEMENT_ID"],
  163.                 );
  164.  
  165.                 if ( $arResult["PREMODERATE"] )
  166.                 {
  167.                     $arAddFields["ACTIVE"] = "N";
  168.                 }
  169.  
  170.                 foreach ( $arResult["FIELDS"] as $key => $arField )
  171.                 {
  172.                     $arAddFields[ $key ] = $arField["~VALUE"];
  173.                 }
  174.  
  175.                 if ( $USER->IsAuthorized() )
  176.                 {
  177.                     $arAddFields["AUTHOR_USER_ID"] = $USER->GetId();
  178.                 }
  179.  
  180.                 $arAddFields["AUTHOR_IP"] = trim($_SERVER["REMOTE_ADDR"]);
  181.  
  182.                 if ( isset( $_SESSION["SESS_SESSION_ID"] ) )
  183.                 {
  184.                     $arAddFields["AUTHOR_STAT_SESSION_ID"] = intval( $_SESSION["SESS_SESSION_ID"] );
  185.                 }
  186.  
  187.                 $result = \Askaron\Reviews\ReviewTable::add( $arAddFields );
  188.  
  189.                 if ($result->isSuccess())
  190.                 {
  191.                     //$id = $result->getId();
  192.                     $arResult["NEW_ADDED"] = true;
  193.                 }
  194.  
  195.                 // send message
  196.                 $arFilter = array(
  197.                     "=ID" => $result->getId(),
  198.                 );
  199.  
  200.                 $arParameters = array(
  201.                     'order' => array('DATE' => 'DESC'),
  202.                     "filter" => $arFilter,
  203.                     'select' => array(
  204.                         "*",
  205.                         "AUTHOR_USER.EMAIL",
  206.                         "AUTHOR_USER.NAME",
  207.                         "AUTHOR_USER.LAST_NAME",
  208.                         "AUTHOR_USER.LOGIN",
  209. //                  "ELEMENT.ID",
  210. //                  "ELEMENT.IBLOCK_ID",
  211. //                  "ELEMENT.NAME"
  212.                     ),
  213.                 );
  214.  
  215.                 $arAddedFields = \Askaron\Reviews\ReviewTable::getList( $arParameters )->fetch();
  216.                 if ( $arAddedFields )
  217.                 {
  218.                     $arMessageFields = array( );
  219.  
  220.                     foreach ( $arAddedFields as $key => $value )
  221.                     {
  222.                         $arMessageFields[ $key ] = $value;
  223.                     }
  224.  
  225.                     $arMessageFields[ "PRODUCT_PAGE_URL" ] = $arIblockElement["DETAIL_PAGE_URL"];
  226.                     $arMessageFields[ "PRODUCT_NAME" ] = $arIblockElement["~NAME"];
  227.  
  228.                     $arMessageFields[ "SUBJECT" ] = $_SERVER["SERVER_NAME"].": ".GetMessage("ASKARON_REVIEWS_MESSAGE_NEW_REVIEW1");
  229.  
  230.                     if ( strlen( COption::GetOptionString( "askaron.reviews", "email" ) ) > 0 )
  231.                     {
  232.                         $arMessageFields[ "EMAIL_TO" ] = COption::GetOptionString( "askaron.reviews", "email" );
  233.                     }
  234.                     else
  235.                     {
  236.                         $arMessageFields[ "EMAIL_TO" ] = COption::GetOptionString("main", "email_from", "admin@".$_SERVER["SERVER_NAME"]);
  237.                     }
  238.  
  239.                     $arMessageFields[ "REQUEST_URI" ] = $_SERVER["REQUEST_URI"];
  240.  
  241.                     $arMessageFields[ "MESSAGE" ] = "";
  242.                     $arMessageFields[ "MESSAGE" ] .= GetMessage("ASKARON_REVIEWS_MESSAGE_NEW_REVIEW2").": ".$arMessageFields[ "PRODUCT_NAME" ]."\n";
  243.                     $arMessageFields[ "MESSAGE" ] .= "http://".$_SERVER["SERVER_NAME"].$arMessageFields[ "PRODUCT_PAGE_URL" ]."\n\n";
  244.  
  245.                     // User: [1] admin (Artemy Zaitsev)
  246.                     $arMessageFields[ "MESSAGE" ] .= GetMessage("ASKARON_REVIEWS_MESSAGE_USER").": ";
  247.  
  248.                     if ( strlen( $arAddedFields["ASKARON_REVIEWS_REVIEW_AUTHOR_USER_LOGIN"] ) > 0 )
  249.                     {
  250.                         $strUser = "[".$arAddedFields["AUTHOR_USER_ID"]."] ".$arAddedFields["ASKARON_REVIEWS_REVIEW_AUTHOR_USER_LOGIN"];
  251.  
  252.                         $strUserName = trim($arAddedFields["ASKARON_REVIEWS_REVIEW_AUTHOR_USER_NAME"]." ".$arAddedFields["ASKARON_REVIEWS_REVIEW_AUTHOR_USER_LAST_NAME"]);
  253.  
  254.                         if (strlen( $strUserName ) > 0)
  255.                         {
  256.                             $strUser .= " (".$strUserName.")";
  257.                         }
  258.  
  259.                         $arMessageFields[ "MESSAGE" ] .= $strUser;
  260.                     }
  261.                     else
  262.                     {
  263.                         $arMessageFields[ "MESSAGE" ] .= GetMessage("ASKARON_REVIEWS_MESSAGE_USER_GUEST");
  264.                     }
  265.  
  266.                     $arMessageFields[ "MESSAGE" ] .= "\n\n";
  267.  
  268.                     // Form fields
  269.                     foreach ( $arResult["FIELDS"] as $key => $arField )
  270.                     {
  271.                         $arMessageFields[ "MESSAGE" ] .= $arResult["FIELDS"][$key]["NAME"]."\n";
  272.                         $arMessageFields[ "MESSAGE" ] .= $arMessageFields[$key]."\n\n";
  273.                     }
  274.  
  275. //                  $arMessageFields[ "MESSAGE" ] .= $arResult["FIELDS"]["GRADE"]["NAME"]."\n";
  276. //                  $arMessageFields[ "MESSAGE" ] .= $arMessageFields[ "GRADE" ]."\n\n";
  277. //
  278. //                  $arMessageFields[ "MESSAGE" ] .= $arResult["FIELDS"]["PRO"]["NAME"]."\n";
  279. //                  $arMessageFields[ "MESSAGE" ] .= $arMessageFields[ "PRO" ]."\n\n";
  280. //
  281. //                  $arMessageFields[ "MESSAGE" ] .= $arResult["FIELDS"]["CONTRA"]["NAME"]."\n";
  282. //                  $arMessageFields[ "MESSAGE" ] .= $arMessageFields[ "CONTRA" ]."\n\n";
  283. //
  284. //                  $arMessageFields[ "MESSAGE" ] .= $arResult["FIELDS"]["TEXT"]["NAME"]."\n";
  285. //                  $arMessageFields[ "MESSAGE" ] .= $arMessageFields[ "TEXT" ]."\n\n";
  286.  
  287.                     $arMessageFields[ "MESSAGE" ] .= "-------------------------------\n";
  288.                     $arMessageFields[ "MESSAGE" ] .= GetMessage("ASKARON_REVIEWS_MESSAGE_AUTOMATIC")."\n\n";
  289.                     $arMessageFields[ "MESSAGE" ] .= GetMessage("ASKARON_REVIEWS_MESSAGE_PAGE")." http://".$_SERVER["SERVER_NAME"].$APPLICATION->GetCurPageParam("", array( "bxajaxid" ) );
  290.  
  291.  
  292.                     CEvent::Send("ASKARON_REVIEWS_NEW_REVIEW", SITE_ID, $arMessageFields);
  293.                 }
  294.  
  295.                 // Redirect
  296.                 $url = $APPLICATION->GetCurPageParam( "new_review_added=Y", array("new_review_added") );
  297.                 LocalRedirect( $url );
  298.             }
  299.         }
  300.         else
  301.         {
  302.             $arResult["ERRORS"]["SESSION_EXPIRED"] = GetMessage( "ASKARON_REVIEWS_NEW_SESSION_EXPIRED" );
  303.         }
  304.     }
  305.  
  306.     // generate CAPTCHA
  307.     $arResult["CAPTCHA_CODE"] = "";
  308.     if ( $arResult["USE_CAPTCHA"] )
  309.     {
  310.         include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php");
  311.         $cpt = new CCaptcha();
  312.         $captchaPass = COption::GetOptionString("main", "captcha_password", "");
  313.         if (strLen($captchaPass) <= 0)
  314.         {
  315.             $captchaPass = randString(10);
  316.             COption::SetOptionString("main", "captcha_password", $captchaPass);
  317.         }
  318.         $cpt->SetCodeCrypt($captchaPass);
  319.         $arResult["CAPTCHA_CODE"] = htmlspecialchars($cpt->GetCodeCrypt());
  320.     }
  321.  
  322.     if ( $_REQUEST["new_review_added"] == "Y" )
  323.     {
  324.         $arResult["NEW_ADDED"] = true;
  325.     }
  326.  
  327.     //CAjax::Init();
  328.     $this->IncludeComponentTemplate();
  329. }
  330. else
  331. {
  332.     ShowError(GetMessage("ASKARON_REVIEWS_ELEMENT_NO_ID"));
  333. }
  334.  
  335. //d( $arResult );
  336. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement