コード例 #1
0
 function checkChildCond($arConditions)
 {
     //echo "<pre>@";print_r($arConditions);echo "@</pre>";die;
     $trueEventCounter = 0;
     $needTrueEvent = count($arConditions["CHILDREN"]);
     if (!empty($arConditions["CHILDREN"])) {
         foreach ($arConditions["CHILDREN"] as $child) {
             switch ($child["CLASS_ID"]) {
                 case 'CondUserName':
                     if (CFoodclubEventCompare::compareString($this->_fields["NAME"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case 'CondUserLastName':
                     if (CFoodclubEventCompare::compareString($this->_fields["LAST_NAME"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case 'CondUserEmail':
                     if (CFoodclubEventCompare::compareString($this->_fields["EMAIL"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case 'CondPersonalPhoto':
                     $user = self::getUserFields();
                     if (CFoodclubEventCompare::compare($user["PERSONAL_PHOTO"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case 'CondUserWorkWWW':
                     if (CFoodclubEventCompare::compareString($this->_fields["WORK_WWW"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBTags":
                     if (CFoodclubEventCompare::compare($this->_fields["TAGS"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBModifiedBy":
                     if (CFoodclubEventCompare::compare($this->_fields["MODIFIED_BY"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondUserDateRegister":
                     $user = self::getUserFields();
                     if ($user["DATE_REGISTER"]) {
                         if (CFoodclubEventCompare::compareDates($user["DATE_REGISTER"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                             $trueEventCounter++;
                         }
                     }
                     break;
                 case "CondUserLADate":
                     $user = self::getUserFields();
                     if (CFoodclubEventCompare::compareDates($user["LAST_ACTIVITY_DATE"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBTimestampX":
                     $date = isset($this->_fields["TIMESTAMP_X"]) ? $this->_fields["TIMESTAMP_X"] : $this->_fields["~TIMESTAMP_X"];
                     if (CFoodclubEventCompare::compareDates($date, $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBCreatedBy":
                     if (CFoodclubEventCompare::compare($this->_fields["CREATED_BY"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBDateCreate":
                     $date = isset($this->_fields["DATE_CREATE"]) ? $this->_fields["DATE_CREATE"] : $this->_fields["~DATE_CREATE"];
                     if (CFoodclubEventCompare::compareDates($date, $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBDetailText":
                     if (CFoodclubEventCompare::compare($this->_fields["DETAIL_TEXT"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBPreviewText":
                     if (CFoodclubEventCompare::compare($this->_fields["PREVIEW_TEXT"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBSort":
                     if (CFoodclubEventCompare::compare($this->_fields["SORT"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBDateActiveTo":
                     if (CFoodclubEventCompare::compareDates($this->_fields["ACTIVE_TO"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBDateActiveFrom":
                     if (CFoodclubEventCompare::compareDates($this->_fields["ACTIVE_FROM"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBActive":
                     if (CFoodclubEventCompare::compare($this->_fields["ACTIVE"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBName":
                     if (CFoodclubEventCompare::compare($this->_fields["NAME"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBXmlID":
                     if (CFoodclubEventCompare::compare($this->_fields["XML_ID"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBCode":
                     if (CFoodclubEventCompare::compare($this->_fields["CODE"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondUserGroup":
                     //Проверяем группу пользователя
                     if (CFoodclubEventCompare::compareArrayValue(CUser::GetUserGroupArray(), $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBElement":
                     if (CFoodclubEventCompare::compare($this->_fields["ID"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBSection":
                     //Проверяем группу пользователя
                     if (CFoodclubEventCompare::compare($this->_fields["SECTION_ID"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBIBlock":
                     //Проверяем группу пользователя
                     if (CFoodclubEventCompare::compare($this->_fields["IBLOCK_ID"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondUser":
                     //Проверяем пользователя
                     if (CFoodclubEventCompare::compare(CUser::GetID(), $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
                 case "CondIBElementProperty":
                     //Проверяем пользователя
                     if (CFoodclubEventCompare::compare($this->_fields["PROPERTY_VALUES"], $child["DATA"]["logic"], $child["DATA"]["value"])) {
                         $trueEventCounter++;
                     }
                     break;
             }
         }
         $bOk = CFoodclubEventCompare::checkLogic($arConditions["DATA"], $trueEventCounter, $needTrueEvent);
     }
     return $bOk;
 }