private function _end()
 {
     $settings = $this->getSettings();
     craft()->content->contentTable = $this->_originalContentTable;
     craft()->content->fieldColumnPrefix = $this->_originalFieldColumnPrefix;
     craft()->content->fieldContext = $this->_originalFieldContext;
     $keywords = StringHelper::arrayToString($this->_keywords, ' ');
     craft()->search->indexElementFields($settings->ownerId, $settings->locale, [$settings->fieldId => $keywords]);
 }
 protected function determineRobotsOutput($robotsArray)
 {
     $robotsMap = array("noindex" => "index", "nofollow" => "follow", "noarchive" => "archive", "noimageindex" => "imageindex", "nosnippet" => "snippet", "noodp" => "odp", "noydir" => "ydir");
     $robotOutputValues = "";
     foreach ($robotsMap as $negativeValue => $positiveValue) {
         $robotString = StringHelper::arrayToString($robotsArray);
         if (stristr($robotString, $negativeValue) === FALSE) {
             $robotOutputValues .= $robotsMap[$negativeValue] . ",";
         } else {
             $robotOutputValues .= $negativeValue . ",";
         }
     }
     // Remove the trailing comma from our string
     $robotOutputValues = rtrim($robotOutputValues, ",");
     return $robotOutputValues;
 }
 /**
  * Indexes the attributes of a given element defined by its element type.
  *
  * @param BaseElementModel $element
  * @param string|null      $localeId
  * @return bool Whether the indexing was a success.
  */
 public function indexElementAttributes(BaseElementModel $element, $localeId = null)
 {
     // Get the element type
     $elementTypeClass = $element->getElementType();
     $elementType = craft()->elements->getElementType($elementTypeClass);
     // Does it have any searchable attributes?
     $searchableAttributes = $elementType->defineSearchableAttributes();
     if ($elementType->hasTitles()) {
         $searchableAttributes[] = 'title';
     }
     foreach ($searchableAttributes as $attribute) {
         $value = $element->{$attribute};
         $value = StringHelper::arrayToString($value);
         $this->_indexElementKeywords($element->id, $attribute, '0', $localeId, $value);
     }
     return true;
 }
 /**
  * @inheritDoc IFieldType::getSearchKeywords()
  *
  * @param mixed $value
  *
  * @return string
  */
 public function getSearchKeywords($value)
 {
     return StringHelper::arrayToString($value, ' ');
 }
 /**
  * Parse category fields.
  *
  * @param CategoryModel $category
  * @param bool          $empty
  *
  * @return array
  */
 public function fields(CategoryModel $category, $empty = false)
 {
     // Always save id
     $fields = array('id' => array('label' => Craft::t('ID'), 'value' => $category->id), 'title' => array('label' => Craft::t('Title'), 'value' => (string) $category->getTitle()), 'group' => array('label' => Craft::t('Group'), 'value' => (string) $category->getGroup()));
     // Get element type
     $elementType = craft()->elements->getElementType(ElementType::Category);
     // Get nice attributes
     $availableAttributes = $elementType->defineAvailableTableAttributes();
     // Make 'em fit
     $attributes = array();
     foreach ($availableAttributes as $key => $result) {
         $attributes[$key] = $result['label'];
     }
     // Get static "fields"
     foreach ($category->getAttributes() as $handle => $value) {
         // Only show nice attributes
         if (array_key_exists($handle, $attributes)) {
             $fields[$handle] = array('label' => $attributes[$handle], 'value' => StringHelper::arrayToString(is_array($value) ? array_filter(ArrayHelper::flattenArray($value), 'strlen') : $value, ', '));
         }
     }
     // Get fieldlayout
     foreach (craft()->fields->getLayoutByType(ElementType::Category)->getFields() as $field) {
         // Get field values
         $field = $field->getField();
         $handle = $field->handle;
         $label = $field->name;
         $value = $empty ? '' : craft()->auditLog->parseFieldData($handle, $category->{$handle});
         // Set on fields
         $fields[$handle] = array('label' => $label, 'value' => $value);
     }
     // Return
     return $fields;
 }
Beispiel #6
0
 /**
  * Parse field values.
  *
  * @param string $handle
  * @param mixed  $data
  *
  * @return string
  */
 protected function parseFieldData($handle, $data)
 {
     // Do we have any data at all
     if (!is_null($data)) {
         // Get field info
         $field = craft()->fields->getFieldByHandle($handle);
         // If it's a field ofcourse
         if (!is_null($field)) {
             // For some fieldtypes the're special rules
             switch ($field->type) {
                 case ExportModel::FieldTypeEntries:
                 case ExportModel::FieldTypeCategories:
                 case ExportModel::FieldTypeAssets:
                 case ExportModel::FieldTypeUsers:
                     // Show names
                     $data = $data instanceof ElementCriteriaModel ? implode(', ', $data->find()) : $data;
                     break;
                 case ExportModel::FieldTypeLightswitch:
                     // Make data human readable
                     switch ($data) {
                         case '0':
                             $data = Craft::t('No');
                             break;
                         case '1':
                             $data = Craft::t('Yes');
                             break;
                     }
                     break;
                 case ExportModel::FieldTypeTable:
                     // Parse table checkboxes
                     $table = array();
                     foreach ($data as $row) {
                         // Keep track of column #
                         $i = 1;
                         // Loop through columns
                         foreach ($row as $column => $value) {
                             // Get column
                             $column = isset($field->settings['columns'][$column]) ? $field->settings['columns'][$column] : (isset($field->settings['columns']['col' . $i]) ? $field->settings['columns']['col' . $i] : array('type' => 'dummy'));
                             // Keep track of column #
                             $i++;
                             // Parse
                             $table[] = $column['type'] == 'checkbox' ? $value == 1 ? Craft::t('Yes') : Craft::t('No') : $value;
                         }
                     }
                     // Return parsed data as array
                     $data = $table;
                     break;
                 case ExportModel::FieldTypeRichText:
                 case ExportModel::FieldTypeDate:
                 case ExportModel::FieldTypeRadioButtons:
                 case ExportModel::FieldTypeDropdown:
                     // Resolve to string
                     $data = (string) $data;
                     break;
                 case ExportModel::FieldTypeCheckboxes:
                 case ExportModel::FieldTypeMultiSelect:
                     // Parse multi select values
                     $multi = array();
                     foreach ($data as $row) {
                         $multi[] = $row->value;
                     }
                     // Return parsed data as array
                     $data = $multi;
                     break;
             }
         }
         // Get other operations
         craft()->plugins->call('registerExportOperation', array(&$data, $handle));
     } else {
         // Don't return null, return empty
         $data = '';
     }
     // If it's an object or an array, make it a string
     if (is_array($data)) {
         $data = StringHelper::arrayToString(ArrayHelper::filterEmptyStringsFromArray(ArrayHelper::flattenArray($data)), ', ');
     }
     // If it's an object, make it a string
     if (is_object($data)) {
         $data = StringHelper::arrayToString(ArrayHelper::filterEmptyStringsFromArray(ArrayHelper::flattenArray(get_object_vars($data))), ', ');
     }
     return $data;
 }
 /**
  * Restore Forms
  *
  */
 public function actionRestoreForms()
 {
     $this->requirePostRequest();
     $restoreFile = craft()->request->getPost('restoreForms');
     $filePath = \CUploadedFile::getInstanceByName('restoreForms');
     $sqlFileContents = StringHelper::arrayToString(IOHelper::getFileContents($filePath->getTempName(), true), '');
     $result = craft()->db->createCommand()->setText($sqlFileContents)->queryAll();
 }
 protected function parseFieldData($field, $data)
 {
     if (!is_null($data)) {
         if (!is_null($field)) {
             switch ($field->type) {
                 case ExportModel::FieldTypeEntries:
                 case ExportModel::FieldTypeCategories:
                 case ExportModel::FieldTypeAssets:
                 case ExportModel::FieldTypeUsers:
                     $data = $data instanceof ElementCriteriaModel ? implode(', ', $data->find()) : $data;
                     break;
                 case ExportModel::FieldTypeLightswitch:
                     switch ($data) {
                         case '0':
                             $data = Craft::t('No');
                             break;
                         case '1':
                             $data = Craft::t('Yes');
                             break;
                     }
                     break;
                 case ExportModel::FieldTypeTable:
                     $table = array();
                     foreach ($data as $row) {
                         $i = 1;
                         foreach ($row as $column => $value) {
                             $column = isset($field->settings['columns'][$column]) ? $field->settings['columns'][$column] : (isset($field->settings['columns']['col' . $i]) ? $field->settings['columns']['col' . $i] : array('type' => 'dummy'));
                             $i++;
                             $table[] = $column['type'] == 'checkbox' ? $value == 1 ? Craft::t('Yes') : Craft::t('No') : $value;
                         }
                     }
                     $data = $table;
                     break;
                 case ExportModel::FieldTypeRichText:
                 case ExportModel::FieldTypeDate:
                 case ExportModel::FieldTypeRadioButtons:
                 case ExportModel::FieldTypeDropdown:
                     $data = (string) $data;
                     break;
                 case ExportModel::FieldTypeCheckboxes:
                 case ExportModel::FieldTypeMultiSelect:
                     $multi = array();
                     foreach ($data as $row) {
                         $multi[] = $row->value;
                     }
                     $data = $multi;
                     break;
             }
         }
     } else {
         $data = '';
     }
     if (is_array($data)) {
         $data = StringHelper::arrayToString(ArrayHelper::filterEmptyStringsFromArray(ArrayHelper::flattenArray($data)), ', ');
     }
     if (is_object($data)) {
         $data = StringHelper::arrayToString(ArrayHelper::filterEmptyStringsFromArray(ArrayHelper::flattenArray(get_object_vars($data))), ', ');
     }
     return $data;
 }
 /**
  * Parse field values.
  *
  * @param string $handle
  * @param mixed  $data
  *
  * @return string
  */
 public function parseFieldData($handle, $data)
 {
     // Do we have any data at all
     if (!is_null($data)) {
         // Get field info
         $field = craft()->fields->getFieldByHandle($handle);
         // If it's a field ofcourse
         if (!is_null($field)) {
             // For some fieldtypes the're special rules
             switch ($field->type) {
                 case AuditLogModel::FieldTypeEntries:
                 case AuditLogModel::FieldTypeCategories:
                 case AuditLogModel::FieldTypeAssets:
                 case AuditLogModel::FieldTypeUsers:
                     // Show names
                     $data = implode(', ', $data->find());
                     break;
                 case AuditLogModel::FieldTypeLightswitch:
                     // Make data human readable
                     switch ($data) {
                         case '0':
                             $data = Craft::t('No');
                             break;
                         case '1':
                             $data = Craft::t('Yes');
                             break;
                     }
                     break;
             }
         }
     } else {
         // Don't return null, return empty
         $data = '';
     }
     // If it's an array, make it a string
     if (is_array($data)) {
         $data = StringHelper::arrayToString(array_filter(ArrayHelper::flattenArray($data), 'strlen'), ', ');
     }
     // If it's an object, make it a string
     if (is_object($data)) {
         $data = StringHelper::arrayToString(array_filter(ArrayHelper::flattenArray(get_object_vars($data)), 'strlen'), ', ');
     }
     return $data;
 }
 /**
  * Parse user fields.
  *
  * @param UserModel $user
  * @param bool      $empty
  *
  * @return array
  */
 public function fields(UserModel $user, $empty = false)
 {
     // Check if we are saving new groups
     $groupIds = craft()->request->getPost('groups', false);
     // If this is before saving, or no groups have changed
     if (!count($this->before) || !$groupIds) {
         // Get user's groups
         $groups = craft()->userGroups->getGroupsByUserId($user->id);
     } else {
         // This is after saving
         // Get posted groups
         $groups = array();
         foreach ($groupIds as $id) {
             $groups[] = craft()->userGroups->getGroupById($id);
         }
     }
     // Always save id
     $fields = array('id' => array('label' => Craft::t('ID'), 'value' => $user->id), 'groups' => array('label' => Craft::t('Groups'), 'value' => implode(', ', $groups)));
     // Get element type
     $elementType = craft()->elements->getElementType(ElementType::User);
     // Get nice attributes
     $availableAttributes = $elementType->defineAvailableTableAttributes();
     // Make 'em fit
     $attributes = array();
     foreach ($availableAttributes as $key => $result) {
         $attributes[$key] = $result['label'];
     }
     // Get static "fields"
     foreach ($user->getAttributes() as $handle => $value) {
         // Only show nice attributes
         if (array_key_exists($handle, $attributes)) {
             $fields[$handle] = array('label' => $attributes[$handle], 'value' => StringHelper::arrayToString(is_array($value) ? array_filter(ArrayHelper::flattenArray($value), 'strlen') : $value, ', '));
         }
     }
     // Get fieldlayout
     foreach (craft()->fields->getLayoutByType(ElementType::User)->getFields() as $field) {
         // Get field values
         $field = $field->getField();
         $handle = $field->handle;
         $label = $field->name;
         $value = $empty ? '' : craft()->auditLog->parseFieldData($handle, $user->{$handle});
         // Set on fields
         $fields[$handle] = array('label' => $label, 'value' => $value);
     }
     // Return
     return $fields;
 }
 public static function prepRobotsAsString($robotsArray)
 {
     return StringHelper::arrayToString($robotsArray);
 }
 /**
  * Parse entry fields.
  *
  * @param EntryModel $entry
  * @param bool       $empty
  *
  * @return array
  */
 public function fields(EntryModel $entry, $empty = false)
 {
     // Always save id and title
     $fields = array('id' => array('label' => Craft::t('ID'), 'value' => $entry->id), 'title' => array('label' => Craft::t('Title'), 'value' => $entry->title), 'section' => array('label' => Craft::t('Section'), 'value' => $entry->section->name));
     // Get element type
     $elementType = craft()->elements->getElementType(ElementType::Entry);
     // Get nice attributes
     $attributes = $elementType->defineTableAttributes();
     // Get static "fields"
     foreach ($entry->getAttributes() as $handle => $value) {
         // Only show nice attributes
         if (array_key_exists($handle, $attributes)) {
             $fields[$handle] = array('label' => $attributes[$handle], 'value' => StringHelper::arrayToString(is_array($value) ? array_filter(ArrayHelper::flattenArray($value), 'strlen') : $value, ', '));
         }
     }
     // Get fieldlayout
     $entrytype = $entry->getType();
     $tabs = craft()->fields->getLayoutById($entrytype->fieldLayoutId)->getTabs();
     foreach ($tabs as $tab) {
         foreach ($tab->getFields() as $field) {
             // Get field values
             $field = $field->getField();
             $handle = $field->handle;
             $label = $field->name;
             $value = $empty ? '' : craft()->auditLog->parseFieldData($handle, $entry->{$handle});
             // Set on fields
             $fields[$handle] = array('label' => $label, 'value' => $value);
         }
     }
     // Return
     return $fields;
 }